From fc3e894cbd9aa5545a8188d16e960517f61c2a41 Mon Sep 17 00:00:00 2001 From: Michael Barton Date: Thu, 31 Mar 2011 05:53:44 +0000 Subject: [PATCH] swift3 missing content type fix --- swift/common/middleware/swift3.py | 2 +- test/unit/common/middleware/test_swift3.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/swift/common/middleware/swift3.py b/swift/common/middleware/swift3.py index c21e3d5e3e..a41c8cb695 100644 --- a/swift/common/middleware/swift3.py +++ b/swift/common/middleware/swift3.py @@ -132,7 +132,7 @@ def canonical_string(req): Canonicalize a request to a token that can be signed. """ buf = "%s\n%s\n%s\n" % (req.method, req.headers.get('Content-MD5', ''), - req.headers.get('Content-Type', '')) + req.headers.get('Content-Type') or '') if 'Date' in req.headers: buf += "%s\n" % req.headers['Date'] for amz_header in sorted((key.lower() for key in req.headers diff --git a/test/unit/common/middleware/test_swift3.py b/test/unit/common/middleware/test_swift3.py index 8d1335c519..1e10b65b43 100644 --- a/test/unit/common/middleware/test_swift3.py +++ b/test/unit/common/middleware/test_swift3.py @@ -580,5 +580,20 @@ class TestSwift3(unittest.TestCase): 'X-Amz-Z': 'whatever', 'X-Amz-B': 'lalala', 'X-Amz-Y': 'lalalalalalala'}) + verify('7506d97002c7d2de922cc0ec34af8846', '/bucket/object', + {'Content-Type': '', 'X-Amz-Something': 'test'}) + + + req1 = Request.blank('/', headers= + {'Content-Type': None, 'X-Amz-Something': 'test'}) + req2 = Request.blank('/', headers= + {'Content-Type': '', 'X-Amz-Something': 'test'}) + req3 = Request.blank('/', headers={'X-Amz-Something': 'test'}) + + self.assertEquals(swift3.canonical_string(req1), + swift3.canonical_string(req2)) + self.assertEquals(swift3.canonical_string(req2), + swift3.canonical_string(req3)) + if __name__ == '__main__': unittest.main()