diff --git a/glanceclient/common/utils.py b/glanceclient/common/utils.py index 24ddd793..42e45539 100644 --- a/glanceclient/common/utils.py +++ b/glanceclient/common/utils.py @@ -450,7 +450,7 @@ def memoized_property(fn): def safe_header(name, value): - if name in SENSITIVE_HEADERS: + if value is not None and name in SENSITIVE_HEADERS: v = value.encode('utf-8') h = hashlib.sha1(v) d = h.hexdigest() diff --git a/glanceclient/tests/unit/test_utils.py b/glanceclient/tests/unit/test_utils.py index 18c54753..eb7f53e5 100644 --- a/glanceclient/tests/unit/test_utils.py +++ b/glanceclient/tests/unit/test_utils.py @@ -177,3 +177,18 @@ class TestUtils(testtools.TestCase): i = utils.IterableWithLength(data, 10) self.assertRaises(IOError, _iterate, i) data.close.assert_called_with() + + def test_safe_header(self): + self.assertEqual(('somekey', 'somevalue'), + utils.safe_header('somekey', 'somevalue')) + self.assertEqual(('somekey', None), + utils.safe_header('somekey', None)) + + for sensitive_header in utils.SENSITIVE_HEADERS: + (name, value) = utils.safe_header(sensitive_header, 'somestring') + self.assertEqual(sensitive_header, name) + self.assertTrue(value.startswith("{SHA1}")) + + (name, value) = utils.safe_header(sensitive_header, None) + self.assertEqual(sensitive_header, name) + self.assertIsNone(value)