Fixes for some S3 Unicode issues. Closes #158.

This commit is contained in:
Steve Pulec 2014-11-22 10:19:56 -05:00
parent 90771c1b1c
commit 9024066957
2 changed files with 28 additions and 2 deletions

View File

@ -34,10 +34,10 @@ class ResponseObject(object):
return 404, headers, ""
if isinstance(response, six.string_types):
return 200, headers, response
return 200, headers, response.encode("utf-8")
else:
status_code, headers, response_content = response
return status_code, headers, response_content
return status_code, headers, response_content.encode("utf-8")
def _bucket_response(self, request, full_url, headers):
parsed_url = urlparse(full_url)

View File

@ -1,3 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from six.moves.urllib.request import urlopen
from six.moves.urllib.error import HTTPError
@ -615,3 +617,27 @@ def test_acl_is_ignored_for_now():
key = bucket.get_key(keyname)
assert key.get_contents_as_string() == content
@mock_s3
def test_unicode_key():
conn = boto.connect_s3()
bucket = conn.create_bucket('mybucket')
key = Key(bucket)
key.key = u'こんにちは.jpg'
key.set_contents_from_string('Hello world!')
list(bucket.list())
key = bucket.get_key(key.key)
assert key.get_contents_as_string() == 'Hello world!'
@mock_s3
def test_unicode_value():
conn = boto.connect_s3()
bucket = conn.create_bucket('mybucket')
key = Key(bucket)
key.key = 'some_key'
key.set_contents_from_string(u'こんにちは.jpg')
list(bucket.list())
key = bucket.get_key(key.key)
assert key.get_contents_as_string(encoding='utf-8') == u'こんにちは.jpg'