Skip checksum validation on partial downloads

If we get back some partial content, we can't validate the MD5.
That's OK.

Change-Id: Ic1d65272190af0d3d982f3cd06833cac5c791a1e
Closes-Bug: 1642021
This commit is contained in:
Tim Burke 2017-04-10 18:51:45 -07:00
parent 64da481ccd
commit 527f2ff687
2 changed files with 11 additions and 0 deletions

View File

@ -386,6 +386,7 @@ class _SwiftReader(object):
# Some headers indicate the MD5 of the response
# definitely *won't* match the ETag
bad_md5_headers = set([
'content-range',
'x-object-manifest',
'x-static-large-object',
])

View File

@ -141,6 +141,16 @@ class TestSwiftReader(unittest.TestCase):
self.assertFalse(sr._expected_md5)
self.assertIsNone(sr._actual_md5)
def test_create_with_content_range_header(self):
# md5 should not be initialized if large object headers are present
sr = self.sr('path', 'body', {'content-range': 'bytes 0-3/10',
'etag': '"%s"' % ('0' * 32)})
self.assertEqual(sr._path, 'path')
self.assertEqual(sr._body, 'body')
self.assertIsNone(sr._content_length)
self.assertFalse(sr._expected_md5)
self.assertIsNone(sr._actual_md5)
def test_create_with_ignore_checksum(self):
# md5 should not be initialized if checksum is False
sr = self.sr('path', 'body', {}, False)