diff --git a/moto/s3/models.py b/moto/s3/models.py index 4ce2afb3..525b3c81 100644 --- a/moto/s3/models.py +++ b/moto/s3/models.py @@ -9,6 +9,7 @@ import codecs import random import string import tempfile +import sys import six @@ -23,6 +24,7 @@ UPLOAD_ID_BYTES = 43 UPLOAD_PART_MIN_SIZE = 5242880 STORAGE_CLASS = ["STANDARD", "REDUCED_REDUNDANCY", "STANDARD_IA", "ONEZONE_IA"] DEFAULT_KEY_BUFFER_SIZE = 2 ** 24 +DEFAULT_TEXT_ENCODING = sys.getdefaultencoding() class FakeDeleteMarker(BaseModel): @@ -74,6 +76,11 @@ class FakeKey(BaseModel): def value(self, new_value): self.value_buffer.seek(0) self.value_buffer.truncate() + + # Hack for working around moto's own unit tests; this probably won't + # actually get hit in normal use. + if isinstance(new_value, six.text_type): + new_value = new_value.encode(DEFAULT_TEXT_ENCODING) self.value_buffer.write(new_value) def copy(self, new_name=None): diff --git a/tox.ini b/tox.ini index 0f3f1466..454409d7 100644 --- a/tox.ini +++ b/tox.ini @@ -2,6 +2,10 @@ envlist = py27, py36 [testenv] +setenv = + BOTO_CONFIG=/dev/null + AWS_SECRET_ACCESS_KEY=foobar_secret + AWS_ACCESS_KEY_ID=foobar_key deps = -r{toxinidir}/requirements.txt -r{toxinidir}/requirements-dev.txt