From 3b71b2894ae1449c48cb975153bc04c78f4965ce Mon Sep 17 00:00:00 2001 From: Alexander Gordeev Date: Wed, 17 Jul 2013 12:25:40 +0400 Subject: [PATCH] Refactor glance/tests/unit/v1/test_registry_client.py Remove code duplication from module Partially implements blueprint glance-tests-code-duplication Change-Id: I85f5d7a45c65533ba49f2dfdefdfccfde221468b --- glance/tests/unit/v1/test_registry_client.py | 659 ++++--------------- 1 file changed, 127 insertions(+), 532 deletions(-) diff --git a/glance/tests/unit/v1/test_registry_client.py b/glance/tests/unit/v1/test_registry_client.py index 8d9665dbb7..f1f1b752ad 100644 --- a/glance/tests/unit/v1/test_registry_client.py +++ b/glance/tests/unit/v1/test_registry_client.py @@ -29,13 +29,13 @@ from glance.common import exception from glance.common import client as test_client from glance import context from glance.db.sqlalchemy import api as db_api -from glance.db.sqlalchemy import models as db_models from glance.openstack.common import timeutils from glance.openstack.common import uuidutils import glance.registry.client.v1.api as rapi from glance.registry.api.v1.images import Controller as rcontroller from glance.registry.client.v1.api import client as rclient from glance.tests.unit import base +from glance.tests import utils as test_utils _gen_uuid = uuidutils.generate_uuid @@ -47,7 +47,7 @@ UUID2 = _gen_uuid() config.parse_args(args=[]) -class TestRegistryV1Client(base.IsolatedUnitTest): +class TestRegistryV1Client(base.IsolatedUnitTest, test_utils.RegistryAPIMixIn): """ Test proper actions made for both valid and invalid requests @@ -60,35 +60,15 @@ class TestRegistryV1Client(base.IsolatedUnitTest): db_api.setup_db_env() db_api.get_engine() self.context = context.RequestContext(is_admin=True) + self.FIXTURES = [ - {'id': UUID1, - 'name': 'fake image #1', - 'status': 'active', - 'disk_format': 'ami', - 'container_format': 'ami', - 'is_public': False, - 'created_at': timeutils.utcnow(), - 'updated_at': timeutils.utcnow(), - 'deleted_at': None, - 'deleted': False, - 'checksum': None, - 'size': 13, - 'location': "swift://user:passwd@acct/container/obj.tar.0", - 'properties': {'type': 'kernel'}}, - {'id': UUID2, - 'name': 'fake image #2', - 'status': 'active', - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'is_public': True, - 'created_at': timeutils.utcnow(), - 'updated_at': timeutils.utcnow(), - 'deleted_at': None, - 'deleted': False, - 'checksum': None, - 'size': 19, - 'location': "file:///tmp/glance-tests/2", - 'properties': {}}] + self.get_fixture( + id=UUID1, name='fake image #1', is_public=False, + disk_format='ami', container_format='ami', size=13, + location="swift://user:passwd@acct/container/obj.tar.0", + properties={'type': 'kernel'}), + self.get_fixture(id=UUID2, name='fake image #2', properties={}, + size=19, location="file:///tmp/glance-tests/2")] self.destroy_fixtures() self.create_fixtures() self.client = rclient.RegistryClient("0.0.0.0") @@ -98,15 +78,6 @@ class TestRegistryV1Client(base.IsolatedUnitTest): super(TestRegistryV1Client, self).tearDown() self.destroy_fixtures() - def create_fixtures(self): - for fixture in self.FIXTURES: - db_api.image_create(self.context, fixture) - - def destroy_fixtures(self): - # Easiest to just drop the models and re-create them... - db_models.unregister_models(db_api._ENGINE) - db_models.register_models(db_api._ENGINE) - def test_get_image_index(self): """Test correct set of public image returned""" fixture = { @@ -114,25 +85,14 @@ class TestRegistryV1Client(base.IsolatedUnitTest): 'name': 'fake image #2' } images = self.client.get_images() - self.assertEquals(len(images), 1) + self.assertEqualImages(images, (UUID2,), unjsonify=False) for k, v in fixture.items(): self.assertEquals(v, images[0][k]) def test_create_image_with_null_min_disk_min_ram(self): UUID3 = _gen_uuid() - extra_fixture = { - 'id': UUID3, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'asdf', - 'size': 19, - 'checksum': None, - 'min_disk': None, - 'min_ram': None, - } + extra_fixture = self.get_fixture(id=UUID3, min_disk=None, min_ram=None) db_api.image_create(self.context, extra_fixture) image = self.client.get_image(UUID3) self.assertEqual(0, image["min_ram"]) @@ -145,35 +105,18 @@ class TestRegistryV1Client(base.IsolatedUnitTest): ascending order. """ UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'asdf', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID3, name='asdf') db_api.image_create(self.context, extra_fixture) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'xyz', - 'size': 20, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID4, name='xyz') db_api.image_create(self.context, extra_fixture) images = self.client.get_images(sort_key='name', sort_dir='asc') - self.assertEquals(len(images), 3) - self.assertEquals(images[0]['id'], UUID3) - self.assertEquals(images[1]['id'], UUID2) - self.assertEquals(images[2]['id'], UUID4) + self.assertEqualImages(images, (UUID3, UUID2, UUID4), unjsonify=False) def test_get_index_sort_status_desc(self): """ @@ -182,35 +125,19 @@ class TestRegistryV1Client(base.IsolatedUnitTest): descending order. """ UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'queued', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'asdf', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID3, name='asdf', + status='queued') db_api.image_create(self.context, extra_fixture) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'xyz', - 'size': 20, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID4, name='xyz') db_api.image_create(self.context, extra_fixture) images = self.client.get_images(sort_key='status', sort_dir='desc') - self.assertEquals(len(images), 3) - self.assertEquals(images[0]['id'], UUID3) - self.assertEquals(images[1]['id'], UUID4) - self.assertEquals(images[2]['id'], UUID2) + self.assertEqualImages(images, (UUID3, UUID4, UUID2), unjsonify=False) def test_get_index_sort_disk_format_asc(self): """ @@ -219,36 +146,22 @@ class TestRegistryV1Client(base.IsolatedUnitTest): ascending order. """ UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'active', - 'is_public': True, - 'disk_format': 'ami', - 'container_format': 'ami', - 'name': 'asdf', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID3, name='asdf', + disk_format='ami', + container_format='ami') db_api.image_create(self.context, extra_fixture) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vdi', - 'container_format': 'ovf', - 'name': 'xyz', - 'size': 20, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID4, name='xyz', + disk_format='vdi') db_api.image_create(self.context, extra_fixture) images = self.client.get_images(sort_key='disk_format', sort_dir='asc') - self.assertEquals(len(images), 3) - self.assertEquals(images[0]['id'], UUID3) - self.assertEquals(images[1]['id'], UUID4) - self.assertEquals(images[2]['id'], UUID2) + self.assertEqualImages(images, (UUID3, UUID4, UUID2), unjsonify=False) def test_get_index_sort_container_format_desc(self): """ @@ -257,36 +170,23 @@ class TestRegistryV1Client(base.IsolatedUnitTest): descending order. """ UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'active', - 'is_public': True, - 'disk_format': 'ami', - 'container_format': 'ami', - 'name': 'asdf', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID3, name='asdf', + disk_format='ami', + container_format='ami') db_api.image_create(self.context, extra_fixture) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'active', - 'is_public': True, - 'disk_format': 'iso', - 'container_format': 'bare', - 'name': 'xyz', - 'size': 20, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID4, name='xyz', + disk_format='iso', + container_format='bare') db_api.image_create(self.context, extra_fixture) images = self.client.get_images(sort_key='container_format', sort_dir='desc') - self.assertEquals(len(images), 3) - self.assertEquals(images[0]['id'], UUID2) - self.assertEquals(images[1]['id'], UUID4) - self.assertEquals(images[2]['id'], UUID3) + self.assertEqualImages(images, (UUID2, UUID4, UUID3), unjsonify=False) def test_get_index_sort_size_asc(self): """ @@ -294,35 +194,22 @@ class TestRegistryV1Client(base.IsolatedUnitTest): public images sorted by size in ascending order. """ UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'active', - 'is_public': True, - 'disk_format': 'ami', - 'container_format': 'ami', - 'name': 'asdf', - 'size': 100, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID3, name='asdf', + disk_format='ami', + container_format='ami', size=100) db_api.image_create(self.context, extra_fixture) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'active', - 'is_public': True, - 'disk_format': 'iso', - 'container_format': 'bare', - 'name': 'xyz', - 'size': 2, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID4, name='asdf', + disk_format='iso', + container_format='bare', size=2) db_api.image_create(self.context, extra_fixture) images = self.client.get_images(sort_key='size', sort_dir='asc') - self.assertEquals(len(images), 3) - self.assertEquals(images[0]['id'], UUID4) - self.assertEquals(images[1]['id'], UUID2) - self.assertEquals(images[2]['id'], UUID3) + self.assertEqualImages(images, (UUID4, UUID2, UUID3), unjsonify=False) def test_get_index_sort_created_at_asc(self): """ @@ -334,37 +221,18 @@ class TestRegistryV1Client(base.IsolatedUnitTest): time2 = now UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None, - 'created_at': time1} + extra_fixture = self.get_fixture(id=UUID3, created_at=time1) db_api.image_create(self.context, extra_fixture) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 20, - 'checksum': None, - 'created_at': time2} + extra_fixture = self.get_fixture(id=UUID4, created_at=time2) db_api.image_create(self.context, extra_fixture) images = self.client.get_images(sort_key='created_at', sort_dir='asc') - self.assertEquals(len(images), 3) - self.assertEquals(images[0]['id'], UUID2) - self.assertEquals(images[1]['id'], UUID4) - self.assertEquals(images[2]['id'], UUID3) + self.assertEqualImages(images, (UUID2, UUID4, UUID3), unjsonify=False) def test_get_index_sort_updated_at_desc(self): """ @@ -376,71 +244,38 @@ class TestRegistryV1Client(base.IsolatedUnitTest): time2 = now UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None, - 'created_at': None, - 'updated_at': time1} + extra_fixture = self.get_fixture(id=UUID3, created_at=None, + updated_at=time1) db_api.image_create(self.context, extra_fixture) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 20, - 'checksum': None, - 'created_at': None, - 'updated_at': time2} + extra_fixture = self.get_fixture(id=UUID4, created_at=None, + updated_at=time2) db_api.image_create(self.context, extra_fixture) images = self.client.get_images(sort_key='updated_at', sort_dir='desc') - self.assertEquals(len(images), 3) - self.assertEquals(images[0]['id'], UUID3) - self.assertEquals(images[1]['id'], UUID4) - self.assertEquals(images[2]['id'], UUID2) + self.assertEqualImages(images, (UUID3, UUID4, UUID2), unjsonify=False) def test_get_image_index_marker(self): """Test correct set of images returned with marker param.""" UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID3, name='new name! #123', + status='saving') db_api.image_create(self.context, extra_fixture) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #125', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID4, name='new name! #125', + status='saving') db_api.image_create(self.context, extra_fixture) images = self.client.get_images(marker=UUID4) - self.assertEquals(len(images), 2) - self.assertEquals(images[0]['id'], UUID3) - self.assertEquals(images[1]['id'], UUID2) + self.assertEqualImages(images, (UUID3, UUID2), unjsonify=False) def test_get_image_index_invalid_marker(self): """Test exception is raised when marker is invalid""" @@ -451,15 +286,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_index_forbidden_marker(self): """Test exception is raised when marker is forbidden""" UUID5 = _gen_uuid() - extra_fixture = {'id': UUID5, - 'status': 'saving', - 'is_public': False, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #125', - 'size': 19, - 'owner': '0123', - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID5, owner='0123', + status='saving', is_public=False) db_api.image_create(self.context, extra_fixture) @@ -477,15 +305,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_index_private_marker(self): """Test exception is not raised if private non-owned marker is used""" UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'saving', - 'is_public': False, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #125', - 'size': 19, - 'checksum': None, - 'owner': '1234'} + extra_fixture = self.get_fixture(id=UUID4, owner='1234', + status='saving', is_public=False) db_api.image_create(self.context, extra_fixture) @@ -496,25 +317,11 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_index_limit(self): """Test correct number of images returned with limit param.""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving') db_api.image_create(self.context, extra_fixture) - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #125', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving') db_api.image_create(self.context, extra_fixture) @@ -524,55 +331,28 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_index_marker_limit(self): """Test correct set of images returned with marker/limit params.""" UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID3, name='new name! #123', + status='saving') db_api.image_create(self.context, extra_fixture) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #125', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID4, name='new name! #125', + status='saving') db_api.image_create(self.context, extra_fixture) images = self.client.get_images(marker=UUID3, limit=1) - self.assertEquals(len(images), 1) - self.assertEquals(images[0]['id'], UUID2) + self.assertEqualImages(images, (UUID2,), unjsonify=False) def test_get_image_index_limit_None(self): """Test correct set of images returned with limit param == None.""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving') db_api.image_create(self.context, extra_fixture) - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #125', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving') db_api.image_create(self.context, extra_fixture) @@ -584,14 +364,7 @@ class TestRegistryV1Client(base.IsolatedUnitTest): Test correct set of public, name-filtered image returned. This is just a sanity check, we test the details call more in-depth. """ - extra_fixture = {'id': _gen_uuid(), - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), name='new name! #123') db_api.image_create(self.context, extra_fixture) @@ -603,14 +376,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details(self): """Tests that the detailed info about public images returned""" - fixture = {'id': UUID2, - 'name': 'fake image #2', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'status': 'active', - 'size': 19, - 'properties': {}} + fixture = self.get_fixture(id=UUID2, name='fake image #2', + properties={}, size=19) images = self.client.get_images_detailed() @@ -621,32 +388,17 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details_marker_limit(self): """Test correct set of images returned with marker/limit params.""" UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID3, status='saving') db_api.image_create(self.context, extra_fixture) - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #125', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving') db_api.image_create(self.context, extra_fixture) images = self.client.get_images_detailed(marker=UUID3, limit=1) - self.assertEquals(len(images), 1) - self.assertEquals(images[0]['id'], UUID2) + self.assertEqualImages(images, (UUID2,), unjsonify=False) def test_get_image_details_invalid_marker(self): """Test exception is raised when marker is invalid""" @@ -657,15 +409,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details_forbidden_marker(self): """Test exception is raised when marker is forbidden""" UUID5 = _gen_uuid() - extra_fixture = {'id': UUID5, - 'status': 'saving', - 'is_public': False, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #125', - 'size': 19, - 'owner': '0123', - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID5, is_public=False, + owner='0123', status='saving') db_api.image_create(self.context, extra_fixture) @@ -683,15 +428,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details_private_marker(self): """Test exception is not raised if private non-owned marker is used""" UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'saving', - 'is_public': False, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #125', - 'size': 19, - 'checksum': None, - 'owner': '1234'} + extra_fixture = self.get_fixture(id=UUID4, is_public=False, + owner='1234', status='saving') db_api.image_create(self.context, extra_fixture) @@ -702,14 +440,7 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details_by_name(self): """Tests that a detailed call can be filtered by name""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), name='new name! #123') db_api.image_create(self.context, extra_fixture) @@ -722,14 +453,7 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details_by_status(self): """Tests that a detailed call can be filtered by status""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving') db_api.image_create(self.context, extra_fixture) @@ -741,14 +465,7 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details_by_container_format(self): """Tests that a detailed call can be filtered by container_format""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving') db_api.image_create(self.context, extra_fixture) @@ -761,14 +478,7 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details_by_disk_format(self): """Tests that a detailed call can be filtered by disk_format""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving') db_api.image_create(self.context, extra_fixture) @@ -781,14 +491,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details_with_maximum_size(self): """Tests that a detailed call can be filtered by size_max""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 21, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving', + size=21) db_api.image_create(self.context, extra_fixture) @@ -800,14 +504,7 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details_with_minimum_size(self): """Tests that a detailed call can be filtered by size_min""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 20, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving') db_api.image_create(self.context, extra_fixture) @@ -832,66 +529,39 @@ class TestRegistryV1Client(base.IsolatedUnitTest): iso4 = timeutils.isotime(dt4) UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'fake image #3', - 'size': 18, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID3, name='fake image #3') db_api.image_create(self.context, extra_fixture) db_api.image_destroy(self.context, UUID3) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'active', - 'is_public': True, - 'disk_format': 'ami', - 'container_format': 'ami', - 'name': 'fake image #4', - 'size': 20, - 'checksum': None, - 'created_at': dt3, - 'updated_at': dt3} + extra_fixture = self.get_fixture(id=UUID4, name='fake image #4', + created_at=dt3, updated_at=dt3) db_api.image_create(self.context, extra_fixture) # Check a standard list, 4 images in db (2 deleted) images = self.client.get_images_detailed(filters={}) - self.assertEqual(images[0]['id'], UUID4) - self.assertEqual(images[1]['id'], UUID2) + self.assertEqualImages(images, (UUID4, UUID2), unjsonify=False) # Expect 3 images (1 deleted) filters = {'changes-since': iso1} images = self.client.get_images(filters=filters) - self.assertEquals(len(images), 3) - self.assertEqual(images[0]['id'], UUID4) - self.assertEqual(images[1]['id'], UUID3) # deleted - self.assertEqual(images[2]['id'], UUID2) + self.assertEqualImages(images, (UUID4, UUID3, UUID2), unjsonify=False) # Expect 1 images (0 deleted) filters = {'changes-since': iso2} images = self.client.get_images_detailed(filters=filters) - self.assertEquals(len(images), 1) - self.assertEqual(images[0]['id'], UUID4) + self.assertEqualImages(images, (UUID4,), unjsonify=False) # Expect 0 images (0 deleted) filters = {'changes-since': iso4} images = self.client.get_images(filters=filters) - self.assertEquals(len(images), 0) + self.assertEqualImages(images, (), unjsonify=False) def test_get_image_details_with_size_min(self): """Tests that a detailed call can be filtered by size_min""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 20, - 'checksum': None} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving') db_api.image_create(self.context, extra_fixture) @@ -903,15 +573,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_details_by_property(self): """Tests that a detailed call can be filtered by a property""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None, - 'properties': {'p a': 'v a'}} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving', + properties={'p a': 'v a'}) db_api.image_create(self.context, extra_fixture) @@ -924,15 +587,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_get_image_is_public_v1(self): """Tests that a detailed call can be filtered by a property""" - extra_fixture = {'id': _gen_uuid(), - 'status': 'saving', - 'is_public': True, - 'disk_format': 'vhd', - 'container_format': 'ovf', - 'name': 'new name! #123', - 'size': 19, - 'checksum': None, - 'properties': {'is_public': 'avalue'}} + extra_fixture = self.get_fixture(id=_gen_uuid(), status='saving', + properties={'is_public': 'avalue'}) context = copy.copy(self.context) db_api.image_create(context, extra_fixture) @@ -951,47 +607,29 @@ class TestRegistryV1Client(base.IsolatedUnitTest): ascending order. """ UUID3 = _gen_uuid() - extra_fixture = {'id': UUID3, - 'status': 'active', - 'is_public': True, - 'disk_format': 'ami', - 'container_format': 'ami', - 'name': 'asdf', - 'size': 19, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID3, name='asdf', + disk_format='ami', + container_format='ami') db_api.image_create(self.context, extra_fixture) UUID4 = _gen_uuid() - extra_fixture = {'id': UUID4, - 'status': 'active', - 'is_public': True, - 'disk_format': 'vdi', - 'container_format': 'ovf', - 'name': 'xyz', - 'size': 20, - 'checksum': None} + extra_fixture = self.get_fixture(id=UUID4, name='xyz', + disk_format='vdi') db_api.image_create(self.context, extra_fixture) images = self.client.get_images_detailed(sort_key='disk_format', sort_dir='asc') - self.assertEquals(len(images), 3) - self.assertEquals(images[0]['id'], UUID3) - self.assertEquals(images[1]['id'], UUID4) - self.assertEquals(images[2]['id'], UUID2) + self.assertEqualImages(images, (UUID3, UUID4, UUID2), unjsonify=False) def test_get_image(self): """Tests that the detailed info about an image returned""" - fixture = {'id': UUID1, - 'name': 'fake image #1', - 'is_public': False, - 'disk_format': 'ami', - 'container_format': 'ami', - 'status': 'active', - 'size': 13, - 'properties': {'type': 'kernel'}} + fixture = self.get_fixture(id=UUID1, name='fake image #1', + disk_format='ami', container_format='ami', + is_public=False, size=13, + properties={'type': 'kernel'}) data = self.client.get_image(UUID1) @@ -1009,13 +647,7 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_add_image_basic(self): """Tests that we can add image metadata and returns the new id""" - fixture = { - 'name': 'fake public image', - 'is_public': True, - 'disk_format': 'vmdk', - 'container_format': 'ovf', - 'size': 19, - } + fixture = self.get_fixture() new_image = self.client.add_image(fixture) @@ -1031,13 +663,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_add_image_with_properties(self): """Tests that we can add image metadata with properties""" - fixture = {'name': 'fake public image', - 'is_public': True, - 'disk_format': 'vmdk', - 'container_format': 'ovf', - 'size': 19, - 'location': "file:///tmp/glance-tests/2", - 'properties': {'distro': 'Ubuntu 10.04 LTS'}} + fixture = self.get_fixture(location="file:///tmp/glance-tests/2", + properties={'distro': 'Ubuntu 10.04 LTS'}) new_image = self.client.add_image(fixture) @@ -1053,14 +680,9 @@ class TestRegistryV1Client(base.IsolatedUnitTest): """Tests that we can add image metadata with properties""" location = "file:///tmp/glance-tests/2" loc_meta = {'key': 'value'} - fixture = {'name': 'fake public image', - 'is_public': True, - 'disk_format': 'vmdk', - 'container_format': 'ovf', - 'size': 19, - 'location_data': [{'url': location, - 'metadata': loc_meta}], - 'properties': {'distro': 'Ubuntu 10.04 LTS'}} + fixture = self.get_fixture(location_data=[{'url': location, + 'metadata': loc_meta}], + properties={'distro': 'Ubuntu 10.04 LTS'}) new_image = self.client.add_image(fixture) @@ -1070,15 +692,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_add_image_already_exists(self): """Tests proper exception is raised if image with ID already exists""" - fixture = { - 'id': UUID2, - 'name': 'fake public image', - 'is_public': True, - 'disk_format': 'vmdk', - 'container_format': 'ovf', - 'size': 19, - 'location': "file:///tmp/glance-tests/2", - } + fixture = self.get_fixture(id=UUID2, + location="file:///tmp/glance-tests/2") self.assertRaises(exception.Duplicate, self.client.add_image, @@ -1086,15 +701,8 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_add_image_with_bad_status(self): """Tests proper exception is raised if a bad status is set""" - fixture = { - 'name': 'fake public image', - 'is_public': True, - 'disk_format': 'vmdk', - 'container_format': 'ovf', - 'status': 'bad status', - 'size': 19, - 'location': "file:///tmp/glance-tests/2", - } + fixture = self.get_fixture(status='bad status', + location="file:///tmp/glance-tests/2") self.assertRaises(exception.Invalid, self.client.add_image, @@ -1115,13 +723,7 @@ class TestRegistryV1Client(base.IsolatedUnitTest): def test_update_image_not_existing(self): """Tests non existing image update doesn't work""" - fixture = { - 'name': 'fake public image', - 'is_public': True, - 'disk_format': 'vmdk', - 'container_format': 'ovf', - 'status': 'bad status', - } + fixture = self.get_fixture(status='bad status') self.assertRaises(exception.NotFound, self.client.update_image, @@ -1199,13 +801,10 @@ class TestBaseClient(testtools.TestCase): actual = base_client.get_connect_kwargs() expected = {'insecure': False, 'key_file': None, - 'ca_file': '/etc/ssl/certs/ca-certificates.crt', 'cert_file': None, 'timeout': 1} - self.assertEqual(expected['insecure'], actual['insecure']) - self.assertEqual(expected['key_file'], actual['key_file']) - self.assertEqual(expected['cert_file'], actual['cert_file']) - self.assertEqual(expected['timeout'], actual['timeout']) + for k in expected.keys(): + self.assertEqual(expected[k], actual[k]) class TestRegistryV1ClientApi(base.IsolatedUnitTest): @@ -1249,16 +848,20 @@ class TestRegistryV1ClientApi(base.IsolatedUnitTest): rapi.configure_registry_client() self.mox.VerifyAll() - def test_configure_registry_admin_creds(self): - expected = { + def _get_fake_config_creds(self, auth_url='auth_url', strategy='keystone'): + return { 'user': 'user', 'password': 'password', 'username': 'user', 'tenant': 'tenant', - 'auth_url': None, - 'strategy': 'configured_strategy', - 'region': 'region', + 'auth_url': auth_url, + 'strategy': strategy, + 'region': 'region' } + + def test_configure_registry_admin_creds(self): + expected = self._get_fake_config_creds(auth_url=None, + strategy='configured_strategy') self.config(admin_user=expected['user']) self.config(admin_password=expected['password']) self.config(admin_tenant_name=expected['tenant']) @@ -1271,15 +874,7 @@ class TestRegistryV1ClientApi(base.IsolatedUnitTest): self.assertEquals(rapi._CLIENT_CREDS, expected) def test_configure_registry_admin_creds_with_auth_url(self): - expected = { - 'user': 'user', - 'password': 'password', - 'username': 'user', - 'tenant': 'tenant', - 'auth_url': 'auth_url', - 'strategy': 'keystone', - 'region': 'region', - } + expected = self._get_fake_config_creds() self.config(admin_user=expected['user']) self.config(admin_password=expected['password']) self.config(admin_tenant_name=expected['tenant'])