eq(e.reason, 'Not Found')
eq(e.error_code, 'NoSuchKey')
+@attr(resource='object')
+@attr(method='get')
+@attr(operation='read contents that were never written to raise one error response')
+@attr(assertion='RequestId appears in the error response')
+def test_object_requestid_on_error():
+ bucket = get_new_bucket()
+ key = bucket.new_key('foobar')
+ e = assert_raises(boto.exception.S3ResponseError, key.get_contents_as_string)
+ request_id = re.search(r'<RequestId>.*</RequestId>', e.body.encode('utf-8')).group(0)
+ assert request_id is not None
+
+@attr(resource='object')
+@attr(method='get')
+@attr(operation='read contents that were never written to raise one error response')
+@attr(assertion='RequestId in the error response matchs the x-amz-request-id in the headers')
+def test_object_requestid_matchs_header_on_error():
+ bucket = get_new_bucket()
+ key = bucket.new_key('foobar')
+ e = assert_raises(boto.exception.S3ResponseError, key.get_contents_as_string)
+ request_id = re.search(r'<RequestId>(.*)</RequestId>', e.body.encode('utf-8')).group(1)
+ eq(key.resp.getheader('x-amz-request-id'), request_id)
- @attr(resource='object')
- @attr(method='put')
- @attr(operation='write to special characters key')
- @attr(assertion='fails 404')
- def test_object_create_special_characters():
- bucket = get_new_bucket()
- # sourced from: http://xml.silmaril.ie/specials.html
- key = bucket.new_key('<&>"\'')
- key.set_contents_from_string('bar')
- got = key.get_contents_as_string()
- eq(got, 'bar')
- bucket.get_all_keys()
-
-
# While the test itself passes, there's a SAX parser error during teardown. It
# seems to be a boto bug. It happens with both amazon and dho.
# http://code.google.com/p/boto/issues/detail?id=501