]> git-server-git.apps.pok.os.sepia.ceph.com Git - s3-tests.git/commitdiff
Add test case for POST with no Content-Type header 204/head
authorMatt Benjamin <mbenjamin@redhat.com>
Wed, 20 Dec 2017 19:50:49 +0000 (14:50 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Wed, 20 Dec 2017 21:55:39 +0000 (16:55 -0500)
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
s3tests/functional/test_s3.py

index 7b128c6392015141de695f26b32011185149f6f3..45a70c34af921c7202f9398764c6c7197c45c751 100644 (file)
@@ -1500,6 +1500,42 @@ def test_post_object_authenticated_request():
        got = key.get_contents_as_string()
        eq(got, 'bar')
 
+@attr(resource='object')
+@attr(method='post')
+@attr(operation='authenticated browser based upload via POST request, no content-type header')
+@attr(assertion='succeeds and returns written data')
+def test_post_object_authenticated_no_content_type():
+       bucket = get_new_bucket()
+
+       url = _get_post_url(s3.main, bucket)
+
+       utc = pytz.utc
+       expires = datetime.datetime.now(utc) + datetime.timedelta(seconds=+6000)
+
+       policy_document = {"expiration": expires.strftime("%Y-%m-%dT%H:%M:%SZ"),\
+       "conditions": [\
+       {"bucket": bucket.name},\
+       ["starts-with", "$key", "foo"],\
+       {"acl": "private"},\
+       ["content-length-range", 0, 1024]\
+       ]\
+       }
+
+       json_policy_document = json.JSONEncoder().encode(policy_document)
+       policy = base64.b64encode(json_policy_document)
+       conn = s3.main
+       signature = base64.b64encode(hmac.new(conn.aws_secret_access_key, policy, sha).digest())
+
+       payload = OrderedDict([ ("key" , "foo.txt"),("AWSAccessKeyId" , conn.aws_access_key_id),\
+       ("acl" , "private"),("signature" , signature),("policy" , policy),\
+       ('file', ('bar'))])
+
+       r = requests.post(url, files = payload)
+       eq(r.status_code, 204)
+       key = bucket.get_key("foo.txt")
+       got = key.get_contents_as_string()
+       eq(got, 'bar')
+
 @attr(resource='object')
 @attr(method='post')
 @attr(operation='authenticated browser based upload via POST request, bad access key')