diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-12-14 16:35:26 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-12-14 16:35:26 +0000 |
commit | 32bdeddfb101c33df1058e4a1d51799953059ede (patch) | |
tree | a4a9984f19697c9343452f7b90a4516bb6a5c6bb /glance_store/tests/unit/test_swift_store.py | |
parent | 6b9400ac2a9aef0a49ed4073f2ddb0d6e5f33f1f (diff) | |
parent | 2b4f75a628bc755cb2f804cadf5e381b01390766 (diff) | |
download | glance_store-32bdeddfb101c33df1058e4a1d51799953059ede.tar.gz |
Merge "Use storage_url in DB for multi-tenant swift store"
Diffstat (limited to 'glance_store/tests/unit/test_swift_store.py')
-rw-r--r-- | glance_store/tests/unit/test_swift_store.py | 73 |
1 files changed, 58 insertions, 15 deletions
diff --git a/glance_store/tests/unit/test_swift_store.py b/glance_store/tests/unit/test_swift_store.py index 381f532..8907a4a 100644 --- a/glance_store/tests/unit/test_swift_store.py +++ b/glance_store/tests/unit/test_swift_store.py @@ -34,6 +34,7 @@ from six.moves import http_client from six.moves import range import swiftclient +from glance_store._drivers.swift import connection_manager as manager from glance_store._drivers.swift import store as swift from glance_store._drivers.swift import utils as sutils from glance_store import backend @@ -404,6 +405,50 @@ class SwiftTests(object): @mock.patch('glance_store._drivers.swift.utils' '.is_multiple_swift_store_accounts_enabled', + mock.Mock(return_value=False)) + def test_multi_tenant_image_add_uses_users_context(self): + expected_swift_size = FIVE_KB + expected_swift_contents = b"*" * expected_swift_size + expected_image_id = str(uuid.uuid4()) + expected_container = 'container_' + expected_image_id + loc = 'swift+https://some_endpoint/%s/%s' + expected_location = loc % (expected_container, expected_image_id) + image_swift = six.BytesIO(expected_swift_contents) + + global SWIFT_PUT_OBJECT_CALLS + SWIFT_PUT_OBJECT_CALLS = 0 + + self.config(swift_store_container='container') + self.config(swift_store_create_container_on_put=True) + self.config(swift_store_multi_tenant=True) + service_catalog = [ + { + 'endpoint_links': [], + 'endpoints': [ + { + 'adminURL': 'https://some_admin_endpoint', + 'region': 'RegionOne', + 'internalURL': 'https://some_internal_endpoint', + 'publicURL': 'https://some_endpoint', + }, + ], + 'type': 'object-store', + 'name': 'Object Storage Service', + } + ] + ctxt = mock.MagicMock( + user='user', tenant='tenant', auth_token='123', + service_catalog=service_catalog) + store = swift.MultiTenantStore(self.conf) + store.configure() + loc, size, checksum, _ = store.add(expected_image_id, image_swift, + expected_swift_size, + context=ctxt) + # ensure that image add uses user's context + self.assertEqual(expected_location, loc) + + @mock.patch('glance_store._drivers.swift.utils' + '.is_multiple_swift_store_accounts_enabled', mock.Mock(return_value=True)) def test_add_auth_url_variations(self): """ @@ -1518,7 +1563,7 @@ class TestMultiTenantStoreConnections(base.StoreBaseTest): self.location = swift.StoreLocation(specs, self.conf) self.addCleanup(self.conf.reset) - def test_basic_connection_no_catalog(self): + def test_basic_connection(self): self.store.configure() connection = self.store.get_connection(self.location, context=self.context) @@ -1531,7 +1576,7 @@ class TestMultiTenantStoreConnections(base.StoreBaseTest): self.assertEqual('0123', connection.preauthtoken) self.assertEqual({}, connection.os_options) - def test_connection_with_endpoint_from_catalog(self): + def test_connection_does_not_use_endpoint_from_catalog(self): self.store.configure() self.context.service_catalog = [ { @@ -1553,11 +1598,12 @@ class TestMultiTenantStoreConnections(base.StoreBaseTest): self.assertIsNone(connection.user) self.assertIsNone(connection.tenant_name) self.assertIsNone(connection.key) - self.assertEqual('https://scexample.com', connection.preauthurl) + self.assertNotEqual('https://scexample.com', connection.preauthurl) + self.assertEqual('https://example.com', connection.preauthurl) self.assertEqual('0123', connection.preauthtoken) self.assertEqual({}, connection.os_options) - def test_connection_with_no_endpoint_found(self): + def test_connection_manager_does_not_use_endpoint_from_catalog(self): self.store.configure() self.context.service_catalog = [ { @@ -1572,17 +1618,14 @@ class TestMultiTenantStoreConnections(base.StoreBaseTest): 'name': 'Object Storage Service', } ] - self.store.service_type = 'incorrect-store' - connection = self.store.get_connection(self.location, - context=self.context) - self.assertIsNone(connection.authurl) - self.assertEqual('1', connection.auth_version) - self.assertIsNone(connection.user) - self.assertIsNone(connection.tenant_name) - self.assertIsNone(connection.key) - self.assertEqual('https://example.com', connection.preauthurl) - self.assertEqual('0123', connection.preauthtoken) - self.assertEqual({}, connection.os_options) + connection_manager = manager.MultiTenantConnectionManager( + store=self.store, + store_location=self.location, + context=self.context + ) + conn = connection_manager._init_connection() + self.assertNotEqual('https://scexample.com', conn.preauthurl) + self.assertEqual('https://example.com', conn.preauthurl) class TestMultiTenantStoreContext(base.StoreBaseTest): |