Fix s3_token middleware parsing insecure option
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
This commit is contained in:
parent
1150d04d5b
commit
90edbc8c1c
@ -35,6 +35,7 @@ import logging
|
|||||||
import webob
|
import webob
|
||||||
|
|
||||||
from oslo_serialization import jsonutils
|
from oslo_serialization import jsonutils
|
||||||
|
from oslo_utils import strutils
|
||||||
import requests
|
import requests
|
||||||
import six
|
import six
|
||||||
from six.moves import urllib
|
from six.moves import urllib
|
||||||
@ -116,7 +117,7 @@ class S3Token(object):
|
|||||||
auth_port)
|
auth_port)
|
||||||
|
|
||||||
# SSL
|
# SSL
|
||||||
insecure = conf.get('insecure', False)
|
insecure = strutils.bool_from_string(conf.get('insecure', False))
|
||||||
cert_file = conf.get('certfile')
|
cert_file = conf.get('certfile')
|
||||||
key_file = conf.get('keyfile')
|
key_file = conf.get('keyfile')
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
@mock.patch.object(requests, 'post')
|
@mock.patch.object(requests, 'post')
|
||||||
def test_insecure(self, MOCK_REQUEST):
|
def test_insecure(self, MOCK_REQUEST):
|
||||||
self.middleware = (
|
self.middleware = (
|
||||||
s3_token.filter_factory({'insecure': True})(FakeApp()))
|
s3_token.filter_factory({'insecure': 'True'})(FakeApp()))
|
||||||
|
|
||||||
text_return_value = jsonutils.dumps(GOOD_RESPONSE)
|
text_return_value = jsonutils.dumps(GOOD_RESPONSE)
|
||||||
if six.PY3:
|
if six.PY3:
|
||||||
@ -144,6 +144,28 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
mock_args, mock_kwargs = MOCK_REQUEST.call_args
|
mock_args, mock_kwargs = MOCK_REQUEST.call_args
|
||||||
self.assertIs(mock_kwargs['verify'], False)
|
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):
|
class S3TokenMiddlewareTestBad(S3TokenMiddlewareTestBase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user