예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 def test_from_swift_resp_slo(self):
     for expected, header_vals in \
             ((True, ('true', '1')), (False, ('false', 'ugahhh', None))):
         for val in header_vals:
             resp = Response(headers={'X-Static-Large-Object': val})
             s3resp = S3Response.from_swift_resp(resp)
             self.assertEqual(expected, s3resp.is_slo)
예제 #4
0
 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)
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
 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)
예제 #8
0
 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)
예제 #9
0
 def test_from_swift_resp_slo(self):
     for expected, header_vals in \
             ((True, ('true', '1')), (False, ('false', 'ugahhh', None))):
         for val in header_vals:
             resp = Response(headers={'X-Static-Large-Object': val,
                                      'Etag': 'theetag'})
             s3resp = S3Response.from_swift_resp(resp)
             self.assertEqual(expected, s3resp.is_slo)
             if s3resp.is_slo:
                 self.assertEqual('"theetag-N"', s3resp.headers['ETag'])
             else:
                 self.assertEqual('"theetag"', s3resp.headers['ETag'])
예제 #10
0
 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)
예제 #11
0
 def test_from_swift_resp_slo(self):
     for expected, header_vals in \
             ((True, ('true', '1')), (False, ('false', 'ugahhh', None))):
         for val in header_vals:
             resp = Response(headers={'X-Static-Large-Object': val,
                                      'Etag': 'theetag'})
             s3resp = S3Response.from_swift_resp(resp)
             self.assertEqual(expected, s3resp.is_slo)
             if s3resp.is_slo:
                 self.assertEqual('"theetag-N"', s3resp.headers['ETag'])
             else:
                 self.assertEqual('"theetag"', s3resp.headers['ETag'])
예제 #12
0
 def test_response_s3api_user_meta_headers(self):
     resp = Response(headers={
         'X-Object-Meta-Foo': 'Bar',
         'X-Object-Meta-Non-\xdcnicode-Value': '\xff',
         'X-Object-Sysmeta-Baz': 'quux',
         'Etag': 'unquoted',
         'Content-type': 'text/plain',
         'content-length': '0',
     })
     s3resp = S3Response.from_swift_resp(resp)
     self.assertEqual(dict(s3resp.headers), {
         'x-amz-meta-foo': 'Bar',
         'x-amz-meta-non-\xdcnicode-value': '\xff',
         'ETag': '"unquoted"',
         'Content-Type': 'text/plain',
         'Content-Length': '0',
     })