Merge "Restore quotes removal for swift config in Python3"
This commit is contained in:
commit
4f5b1f403b
@ -105,9 +105,33 @@ _config_defaults = {'user_domain_id': 'default',
|
|||||||
'project_domain_name': 'default'}
|
'project_domain_name': 'default'}
|
||||||
|
|
||||||
if sys.version_info >= (3, 2):
|
if sys.version_info >= (3, 2):
|
||||||
CONFIG = configparser.ConfigParser(defaults=_config_defaults)
|
parser_class = configparser.ConfigParser
|
||||||
else:
|
else:
|
||||||
CONFIG = configparser.SafeConfigParser(defaults=_config_defaults)
|
parser_class = configparser.SafeConfigParser
|
||||||
|
|
||||||
|
|
||||||
|
class SwiftConfigParser(parser_class):
|
||||||
|
|
||||||
|
def get(self, *args, **kwargs):
|
||||||
|
value = super(parser_class, self).get(*args, **kwargs)
|
||||||
|
return self._process_quotes(value)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _process_quotes(value):
|
||||||
|
if value:
|
||||||
|
if value[0] in "\"'":
|
||||||
|
if len(value) == 1 or value[-1] != value[0]:
|
||||||
|
raise ValueError('Non-closed quote: %s' %
|
||||||
|
value)
|
||||||
|
value = value[1:-1]
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
if sys.version_info >= (3,):
|
||||||
|
CONFIG = SwiftConfigParser(defaults=_config_defaults)
|
||||||
|
else:
|
||||||
|
CONFIG = parser_class(defaults=_config_defaults)
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,6 +11,11 @@ project_domain_id = default
|
|||||||
auth_version = 3
|
auth_version = 3
|
||||||
auth_address = http://example.com
|
auth_address = http://example.com
|
||||||
|
|
||||||
|
[ref3]
|
||||||
|
user = "user3"
|
||||||
|
key = "key3"
|
||||||
|
auth_address = "http://example.com"
|
||||||
|
|
||||||
[store_2]
|
[store_2]
|
||||||
user = tenant:user1
|
user = tenant:user1
|
||||||
key = key1
|
key = key1
|
||||||
|
@ -85,3 +85,37 @@ class TestSwiftParams(base.StoreBaseTest):
|
|||||||
self.assertEqual('http://example.com',
|
self.assertEqual('http://example.com',
|
||||||
swift_params['ref2']['auth_address']
|
swift_params['ref2']['auth_address']
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_swift_store_config_validates_quotes_removal(self):
|
||||||
|
swift_params = sutils.SwiftParams(self.conf).params
|
||||||
|
self.assertEqual('user3',
|
||||||
|
swift_params['ref3']['user']
|
||||||
|
)
|
||||||
|
self.assertEqual('key3',
|
||||||
|
swift_params['ref3']['key']
|
||||||
|
)
|
||||||
|
self.assertEqual('http://example.com',
|
||||||
|
swift_params['ref3']['auth_address']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TestSwiftConfigParser(base.StoreBaseTest):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestSwiftConfigParser, self).setUp()
|
||||||
|
self.method = sutils.SwiftConfigParser._process_quotes
|
||||||
|
|
||||||
|
def test_quotes_processor(self):
|
||||||
|
self.assertEqual('user', self.method('user'))
|
||||||
|
self.assertEqual('user', self.method('"user"'))
|
||||||
|
self.assertEqual("user", self.method("'user'"))
|
||||||
|
self.assertEqual("user'", self.method("user'"))
|
||||||
|
self.assertEqual('user"', self.method('user"'))
|
||||||
|
|
||||||
|
def test_quotes_processor_negative(self):
|
||||||
|
negative_values = [
|
||||||
|
'\'user"', '"user\'', '\'user', '"user\'',
|
||||||
|
"'user", '"user', '"', "'",
|
||||||
|
]
|
||||||
|
for value in negative_values:
|
||||||
|
self.assertRaises(ValueError, self.method, value)
|
||||||
|
Loading…
Reference in New Issue
Block a user