def test_response_s3api_sysmeta_from_swift3_sysmeta(self): for _server_type in ('object', 'container'): # swift could return older swift3 sysmeta swift_headers = HeaderKeyDict( {('x-%s-sysmeta-swift3-' % _server_type) + 'test': 'ok'}) resp = Response(headers=swift_headers) s3resp = S3Response.from_swift_resp(resp) expected_headers = HeaderKeyDict( {sysmeta_prefix(_server_type) + 'test': 'ok'}) # but Response class should translates as s3api sysmeta self.assertEqual(expected_headers, s3resp.sysmeta_headers)
def test_response_s3api_sysmeta_headers_ignore_other_sysmeta(self): for _server_type in ('object', 'container'): swift_headers = HeaderKeyDict( # sysmeta not leading sysmeta_prefix even including s3api word {'x-%s-sysmeta-test-s3api' % _server_type: 'ok', sysmeta_prefix(_server_type) + 'test': 'ok'}) resp = Response(headers=swift_headers) s3resp = S3Response.from_swift_resp(resp) expected_headers = HeaderKeyDict( {sysmeta_prefix(_server_type) + 'test': 'ok'}) self.assertEqual(expected_headers, s3resp.sysmeta_headers)
def test_response_swift3_sysmeta_does_not_overwrite_s3api_sysmeta(self): for _server_type in ('object', 'container'): # same key name except sysmeta prefix swift_headers = HeaderKeyDict( {('x-%s-sysmeta-swift3-' % _server_type) + 'test': 'ng', sysmeta_prefix(_server_type) + 'test': 'ok'}) resp = Response(headers=swift_headers) s3resp = S3Response.from_swift_resp(resp) expected_headers = HeaderKeyDict( {sysmeta_prefix(_server_type) + 'test': 'ok'}) # but only s3api sysmeta remains in the response sysmeta_headers self.assertEqual(expected_headers, s3resp.sysmeta_headers)
def test_response_s3api_sysmeta_headers(self): for _server_type in ('object', 'container'): swift_headers = HeaderKeyDict( {sysmeta_prefix(_server_type) + 'test': 'ok'}) resp = Response(headers=swift_headers) s3resp = S3Response.from_swift_resp(resp) self.assertEqual(swift_headers, s3resp.sysmeta_headers)