diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-09-03 01:18:10 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-09-03 01:18:10 +0000 |
commit | e0ce24dd43838eef306bd1a0114305cd5ae39cf7 (patch) | |
tree | 5151a19e966bd4b51a121e1ae1adbe9a910ded20 | |
parent | e52df5d8a59708130054ef83068e4d516b2b6d01 (diff) | |
parent | 4b310083dfebe8c54e599fe319f801cca87f8dd6 (diff) | |
download | python-swiftclient-e0ce24dd43838eef306bd1a0114305cd5ae39cf7.tar.gz |
Merge "Stop Connection class modifying os_options parameter"
-rw-r--r-- | swiftclient/client.py | 2 | ||||
-rw-r--r-- | tests/unit/test_swiftclient.py | 27 |
2 files changed, 28 insertions, 1 deletions
diff --git a/swiftclient/client.py b/swiftclient/client.py index 4819c12..a2d7ada 100644 --- a/swiftclient/client.py +++ b/swiftclient/client.py @@ -1290,7 +1290,7 @@ class Connection(object): self.starting_backoff = starting_backoff self.max_backoff = max_backoff self.auth_version = auth_version - self.os_options = os_options or {} + self.os_options = dict(os_options or {}) if tenant_name: self.os_options['tenant_name'] = tenant_name if preauthurl: diff --git a/tests/unit/test_swiftclient.py b/tests/unit/test_swiftclient.py index 97ae467..23b3138 100644 --- a/tests/unit/test_swiftclient.py +++ b/tests/unit/test_swiftclient.py @@ -1481,6 +1481,33 @@ class TestConnection(MockHttpTest): ('HEAD', '/v1/AUTH_pre_url', '', {'x-auth-token': 'post_token'}), ]) + def test_preauth_url_trumps_os_preauth_url(self): + storage_url = 'http://storage.example.com/v1/AUTH_pre_url' + os_storage_url = 'http://storage.example.com/v1/AUTH_os_pre_url' + os_preauth_options = { + 'tenant_name': 'demo', + 'object_storage_url': os_storage_url, + } + orig_os_preauth_options = dict(os_preauth_options) + conn = c.Connection('http://auth.example.com', 'user', 'password', + os_options=os_preauth_options, auth_version=2, + preauthurl=storage_url, tenant_name='not_demo') + fake_keystone = fake_get_auth_keystone( + storage_url='http://storage.example.com/v1/AUTH_post_url', + token='post_token') + fake_conn = self.fake_http_connection(200) + with mock.patch.multiple('swiftclient.client', + get_auth_keystone=fake_keystone, + http_connection=fake_conn, + sleep=mock.DEFAULT): + conn.head_account() + self.assertRequests([ + ('HEAD', '/v1/AUTH_pre_url', '', {'x-auth-token': 'post_token'}), + ]) + + # check that Connection has not modified our os_options + self.assertEqual(orig_os_preauth_options, os_preauth_options) + def test_get_auth_sets_url_and_token(self): with mock.patch('swiftclient.client.get_auth') as mock_get_auth: mock_get_auth.return_value = ( |