Skip to content

Commit

Permalink
Merge pull request getmoto#311 from jlynn/master
Browse files Browse the repository at this point in the history
Fix handling of bucket versioning for moto_server
  • Loading branch information
spulec committed Feb 22, 2015
2 parents 01c47b6 + 0496d46 commit cc604ff
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
8 changes: 7 additions & 1 deletion moto/s3/responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,14 @@ def _bucket_response_get(self, bucket_name, querystring, headers):
)

def _bucket_response_put(self, request, region_name, bucket_name, querystring, headers):
if hasattr(request, 'body'):
# Boto
body = request.body
else:
# Flask server
body = request.data
if 'versioning' in querystring:
ver = re.search('<Status>([A-Za-z]+)</Status>', request.body.decode('utf-8'))
ver = re.search('<Status>([A-Za-z]+)</Status>', body.decode('utf-8'))
if ver:
self.backend.set_bucket_versioning(bucket_name, ver.group(1))
template = self.response_template(S3_BUCKET_VERSIONING)
Expand Down
10 changes: 10 additions & 0 deletions tests/test_s3/test_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,16 @@ def test_s3_server_bucket_create():
res.data.should.equal(b"test value")


def test_s3_server_bucket_versioning():
backend = server.create_backend_app("s3")
test_client = backend.test_client()

# Just enough XML to enable versioning
body = '<Status>Enabled</Status>'
res = test_client.put('/?versioning', 'http://foobaz.localhost:5000', data=body)
res.status_code.should.equal(200)


def test_s3_server_post_to_bucket():
backend = server.create_backend_app("s3")
test_client = backend.test_client()
Expand Down

0 comments on commit cc604ff

Please sign in to comment.