diff --git a/s3tests/functional/test_headers.py b/s3tests/functional/test_headers.py index 2c1f5d2..5274a65 100644 --- a/s3tests/functional/test_headers.py +++ b/s3tests/functional/test_headers.py @@ -12,6 +12,7 @@ import string import socket import ssl import os +import re from urlparse import urlparse @@ -1415,12 +1416,28 @@ def test_object_create_missing_signed_custom_header_aws4(): @nose.with_setup(teardown=_clear_custom_headers) def test_object_create_missing_signed_header_aws4(): check_aws4_support() - key = _setup_bad_object() - _add_custom_non_auth_headers(remove=('Content-MD5',)) - e = assert_raises(boto.exception.S3ResponseError, key.set_contents_from_string, 'bar') - eq(e.status, 403) - eq(e.reason, 'Forbidden') - eq(e.error_code, 'SignatureDoesNotMatch') + method='PUT' + expires_in='100000' + bucket = get_new_bucket() + key = bucket.new_key('foo') + body='zoo' + + # compute the signature... + request_headers = {} + url = key.generate_url(expires_in, method=method, headers=request_headers) + + o = urlparse(url) + path = o.path + '?' + o.query + + # 'X-Amz-Expires' is missing + target = r'&X-Amz-Expires=' + expires_in + path = re.sub(target, '', path) + + res =_make_raw_request(host=s3.main.host, port=s3.main.port, method=method, path=path, + body=body, request_headers=request_headers, secure=s3.main.is_secure) + + eq(res.status, 403) + eq(res.reason, 'Forbidden') @tag('auth_aws4')