diff options
author | Brant Knudson <bknudson@us.ibm.com> | 2015-03-23 18:19:18 -0500 |
---|---|---|
committer | Brant Knudson <bknudson@us.ibm.com> | 2015-04-23 13:28:53 -0500 |
commit | 0e63b0e13d0a7919fddd7576c99bc15a45d31a9f (patch) | |
tree | c5011adbc5522f73c81184b6289d41b7a91e8ac1 | |
parent | 49c47af1e402e61c15fe62c16dcab9d8379d5d54 (diff) | |
download | keystonemiddleware-0e63b0e13d0a7919fddd7576c99bc15a45d31a9f.tar.gz |
Fix s3_token middleware parsing insecure option1.5.1
The "insecure" option was being treated as a bool when it was
actually provided as a string. The fix is to parse the string to
a bool.
Change-Id: Id674f40532215788675c97a8fdfa91d4420347b3
Closes-Bug: 1411063
-rw-r--r-- | keystonemiddleware/s3_token.py | 3 | ||||
-rw-r--r-- | keystonemiddleware/tests/test_s3_token_middleware.py | 24 |
2 files changed, 25 insertions, 2 deletions
diff --git a/keystonemiddleware/s3_token.py b/keystonemiddleware/s3_token.py index d56482f..3fe13f9 100644 --- a/keystonemiddleware/s3_token.py +++ b/keystonemiddleware/s3_token.py @@ -35,6 +35,7 @@ import logging import webob from oslo_serialization import jsonutils +from oslo_utils import strutils import requests import six from six.moves import urllib @@ -116,7 +117,7 @@ class S3Token(object): auth_port) # SSL - insecure = conf.get('insecure', False) + insecure = strutils.bool_from_string(conf.get('insecure', False)) cert_file = conf.get('certfile') key_file = conf.get('keyfile') diff --git a/keystonemiddleware/tests/test_s3_token_middleware.py b/keystonemiddleware/tests/test_s3_token_middleware.py index fdadb76..4b910a6 100644 --- a/keystonemiddleware/tests/test_s3_token_middleware.py +++ b/keystonemiddleware/tests/test_s3_token_middleware.py @@ -124,7 +124,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase): @mock.patch.object(requests, 'post') def test_insecure(self, MOCK_REQUEST): self.middleware = ( - s3_token.filter_factory({'insecure': True})(FakeApp())) + s3_token.filter_factory({'insecure': 'True'})(FakeApp())) text_return_value = jsonutils.dumps(GOOD_RESPONSE) if six.PY3: @@ -142,6 +142,28 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase): mock_args, mock_kwargs = MOCK_REQUEST.call_args self.assertIs(mock_kwargs['verify'], False) + def test_insecure_option(self): + # insecure is passed as a string. + + # Some non-secure values. + true_values = ['true', 'True', '1', 'yes'] + for val in true_values: + config = {'insecure': val, 'certfile': 'false_ind'} + middleware = s3_token.filter_factory(config)(FakeApp()) + self.assertIs(False, middleware._verify) + + # Some "secure" values, including unexpected value. + false_values = ['false', 'False', '0', 'no', 'someweirdvalue'] + for val in false_values: + config = {'insecure': val, 'certfile': 'false_ind'} + middleware = s3_token.filter_factory(config)(FakeApp()) + self.assertEqual('false_ind', middleware._verify) + + # Default is secure. + config = {'certfile': 'false_ind'} + middleware = s3_token.filter_factory(config)(FakeApp()) + self.assertIs('false_ind', middleware._verify) + class S3TokenMiddlewareTestBad(S3TokenMiddlewareTestBase): def setUp(self): |