From 28b1267921178334e79d6237e408bcbe58f1f653 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Fri, 25 Aug 2023 13:08:01 +0100 Subject: [PATCH] tests: Use consistent shortcut to fake image client This removes the need for a number of base test case subclasses. We use 'image_client' rather than 'client' to avoid conflicts with clients for other services. Note that this highlights a minor bug with the 'volume create' command when using the v1 block storage API and creating a volume from an image. This is corrected, though it can be assumed that no one is actually using this code path to say it hasn't been reported in the few years since the bug was introduced in Ussuri. Change-Id: I571be27f68bb7669dcb883f3b4799731b4a35479 Signed-off-by: Stephen Finucane --- .../tests/unit/compute/v2/fakes.py | 1 + .../tests/unit/compute/v2/test_server.py | 136 +++++----- .../unit/compute/v2/test_server_backup.py | 15 +- .../unit/compute/v2/test_server_image.py | 10 +- openstackclient/tests/unit/image/v1/fakes.py | 3 +- .../tests/unit/image/v1/test_image.py | 89 ++++--- openstackclient/tests/unit/image/v2/fakes.py | 29 +-- .../tests/unit/image/v2/test_image.py | 244 ++++++++++-------- .../tests/unit/image/v2/test_info.py | 18 +- .../unit/image/v2/test_metadef_namespaces.py | 48 ++-- .../image/v2/test_metadef_resource_types.py | 15 +- .../tests/unit/image/v2/test_task.py | 30 +-- .../tests/unit/volume/v1/test_volume.py | 9 +- .../tests/unit/volume/v2/test_volume.py | 9 +- openstackclient/volume/v1/volume.py | 4 +- 15 files changed, 301 insertions(+), 359 deletions(-) diff --git a/openstackclient/tests/unit/compute/v2/fakes.py b/openstackclient/tests/unit/compute/v2/fakes.py index 496be2528..515828311 100644 --- a/openstackclient/tests/unit/compute/v2/fakes.py +++ b/openstackclient/tests/unit/compute/v2/fakes.py @@ -167,6 +167,7 @@ class TestComputev2(network_fakes.FakeClientMixin, utils.TestCommand): ) self.app.client_manager.image = mock.Mock() + self.image_client = self.app.client_manager.image self.app.client_manager.volume = volume_fakes.FakeVolumeClient( endpoint=fakes.AUTH_URL, diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py index 9837fd5ef..515f1ba95 100644 --- a/openstackclient/tests/unit/compute/v2/test_server.py +++ b/openstackclient/tests/unit/compute/v2/test_server.py @@ -92,16 +92,6 @@ class TestServer(compute_fakes.TestComputev2): self.flavors_mock = self.app.client_manager.compute.flavors self.flavors_mock.reset_mock() - # Get a shortcut to the image client ImageManager Mock - self.images_mock = self.app.client_manager.image.images - self.images_mock.reset_mock() - - self.find_image_mock = self.app.client_manager.image.find_image - self.find_image_mock.reset_mock() - - self.get_image_mock = self.app.client_manager.image.get_image - self.get_image_mock.reset_mock() - # Get a shortcut to the volume client VolumeManager Mock self.volumes_mock = self.app.client_manager.volume.volumes self.volumes_mock.reset_mock() @@ -1375,8 +1365,8 @@ class TestServerCreate(TestServer): self.servers_mock.create.return_value = self.new_server self.image = image_fakes.create_one_image() - self.find_image_mock.return_value = self.image - self.get_image_mock.return_value = self.image + self.image_client.find_image.return_value = self.image + self.image_client.get_image.return_value = self.image self.flavor = compute_fakes.create_one_flavor() self.flavors_mock.get.return_value = self.flavor @@ -1452,7 +1442,7 @@ class TestServerCreate(TestServer): self.assertEqual(self.columns, columns) self.assertEqual(self.datalist(), data) - self.assertFalse(self.images_mock.called) + self.assertFalse(self.image_client.images.called) self.assertFalse(self.flavors_mock.called) def test_server_create_with_options(self): @@ -3444,7 +3434,7 @@ class TestServerCreate(TestServer): } _image = image_fakes.create_one_image(image_info) - self.images_mock.return_value = [_image] + self.image_client.images.return_value = [_image] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -3500,7 +3490,7 @@ class TestServerCreate(TestServer): 'hw_disk_bus': 'ide', } _image = image_fakes.create_one_image(image_info) - self.images_mock.return_value = [_image] + self.image_client.images.return_value = [_image] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -3557,7 +3547,7 @@ class TestServerCreate(TestServer): } _image = image_fakes.create_one_image(image_info) - self.images_mock.return_value = [_image] + self.image_client.images.return_value = [_image] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -3589,7 +3579,7 @@ class TestServerCreate(TestServer): target_image = image_fakes.create_one_image(image_info) another_image = image_fakes.create_one_image({}) - self.images_mock.return_value = [target_image, another_image] + self.image_client.images.return_value = [target_image, another_image] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -3893,7 +3883,7 @@ class TestServerCreate(TestServer): self.assertEqual(self.columns, columns) self.assertEqual(self.datalist(), data) - self.assertFalse(self.images_mock.called) + self.assertFalse(self.image_client.images.called) self.assertFalse(self.flavors_mock.called) def test_server_create_with_description_api_older(self): @@ -3975,7 +3965,7 @@ class TestServerCreate(TestServer): self.assertEqual(self.columns, columns) self.assertEqual(self.datalist(), data) - self.assertFalse(self.images_mock.called) + self.assertFalse(self.image_client.images.called) self.assertFalse(self.flavors_mock.called) def test_server_create_with_tag_pre_v252(self): @@ -4063,7 +4053,7 @@ class TestServerCreate(TestServer): self.assertEqual(self.columns, columns) self.assertEqual(self.datalist(), data) - self.assertFalse(self.images_mock.called) + self.assertFalse(self.image_client.images.called) self.assertFalse(self.flavors_mock.called) def test_server_create_with_host_pre_v274(self): @@ -4147,7 +4137,7 @@ class TestServerCreate(TestServer): self.assertEqual(self.columns, columns) self.assertEqual(self.datalist(), data) - self.assertFalse(self.images_mock.called) + self.assertFalse(self.image_client.images.called) self.assertFalse(self.flavors_mock.called) def test_server_create_with_hypervisor_hostname_pre_v274(self): @@ -4235,7 +4225,7 @@ class TestServerCreate(TestServer): self.assertEqual(self.columns, columns) self.assertEqual(self.datalist(), data) - self.assertFalse(self.images_mock.called) + self.assertFalse(self.image_client.images.called) self.assertFalse(self.flavors_mock.called) def test_server_create_with_hostname_v290(self): @@ -4286,7 +4276,7 @@ class TestServerCreate(TestServer): self.assertEqual(self.columns, columns) self.assertEqual(self.datalist(), data) - self.assertFalse(self.images_mock.called) + self.assertFalse(self.image_client.images.called) self.assertFalse(self.flavors_mock.called) def test_server_create_with_hostname_pre_v290(self): @@ -4366,7 +4356,7 @@ class TestServerCreate(TestServer): ) self.assertEqual(self.columns, columns) self.assertEqual(self.datalist(), data) - self.assertFalse(self.images_mock.called) + self.assertFalse(self.image_client.images.called) self.assertFalse(self.flavors_mock.called) def test_server_create_with_trusted_image_cert_prev263(self): @@ -4714,9 +4704,8 @@ class _TestServerList(TestServer): self.image = image_fakes.create_one_image() - # self.images_mock.return_value = [self.image] - self.find_image_mock.return_value = self.image - self.get_image_mock.return_value = self.image + self.image_client.find_image.return_value = self.image + self.image_client.get_image.return_value = self.image self.flavor = compute_fakes.create_one_flavor() self.sdk_client.find_flavor.return_value = self.flavor @@ -4735,7 +4724,7 @@ class TestServerList(_TestServerList): super(TestServerList, self).setUp() Image = collections.namedtuple('Image', 'id name') - self.images_mock.return_value = [ + self.image_client.images.return_value = [ Image(id=s.image['id'], name=self.image.name) # Image will be an empty string if boot-from-volume for s in self.servers @@ -4774,11 +4763,11 @@ class TestServerList(_TestServerList): columns, data = self.cmd.take_action(parsed_args) self.sdk_client.servers.assert_called_with(**self.kwargs) - self.images_mock.assert_called() + self.image_client.images.assert_called() self.sdk_client.flavors.assert_called() # we did not pass image or flavor, so gets on those must be absent self.assertFalse(self.flavors_mock.get.call_count) - self.assertFalse(self.get_image_mock.call_count) + self.assertFalse(self.image_client.get_image.call_count) self.assertEqual(self.columns, columns) self.assertEqual(self.data, tuple(data)) @@ -4796,7 +4785,7 @@ class TestServerList(_TestServerList): columns, data = self.cmd.take_action(parsed_args) self.sdk_client.servers.assert_called_with(**self.kwargs) - self.images_mock.assert_not_called() + self.image_client.images.assert_not_called() self.sdk_client.flavors.assert_not_called() self.assertEqual(self.columns, columns) self.assertEqual(self.data, tuple(data)) @@ -4833,7 +4822,7 @@ class TestServerList(_TestServerList): columns, data = self.cmd.take_action(parsed_args) self.sdk_client.servers.assert_called_with(**self.kwargs) image_ids = {s.image['id'] for s in self.servers if s.image} - self.images_mock.assert_called_once_with( + self.image_client.images.assert_called_once_with( id=f'in:{",".join(image_ids)}', ) self.sdk_client.flavors.assert_called_once_with(is_public=None) @@ -4913,7 +4902,7 @@ class TestServerList(_TestServerList): columns, data = self.cmd.take_action(parsed_args) self.sdk_client.servers.assert_called_with(**self.kwargs) - self.images_mock.assert_not_called() + self.image_client.images.assert_not_called() self.sdk_client.flavors.assert_not_called() self.assertEqual(self.columns, columns) self.assertEqual(self.data, tuple(data)) @@ -4944,7 +4933,7 @@ class TestServerList(_TestServerList): columns, data = self.cmd.take_action(parsed_args) self.sdk_client.servers.assert_called_with(**self.kwargs) - self.images_mock.assert_not_called() + self.image_client.images.assert_not_called() self.sdk_client.flavors.assert_not_called() self.assertEqual(self.columns, columns) self.assertEqual(self.data, tuple(data)) @@ -4961,9 +4950,9 @@ class TestServerList(_TestServerList): columns, data = self.cmd.take_action(parsed_args) self.sdk_client.servers.assert_called_with(**self.kwargs) - self.images_mock.assert_not_called() + self.image_client.images.assert_not_called() self.sdk_client.flavors.assert_not_called() - self.get_image_mock.assert_called() + self.image_client.get_image.assert_called() self.sdk_client.find_flavor.assert_called() self.assertEqual(self.columns, columns) @@ -4976,13 +4965,13 @@ class TestServerList(_TestServerList): parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - self.find_image_mock.assert_called_with( + self.image_client.find_image.assert_called_with( self.image.id, ignore_missing=False ) self.kwargs['image'] = self.image.id self.sdk_client.servers.assert_called_with(**self.kwargs) - self.images_mock.assert_not_called() + self.image_client.images.assert_not_called() self.sdk_client.flavors.assert_called_once() self.assertEqual(self.columns, columns) @@ -5001,7 +4990,7 @@ class TestServerList(_TestServerList): self.kwargs['flavor'] = self.flavor.id self.sdk_client.servers.assert_called_with(**self.kwargs) - self.images_mock.assert_called_once() + self.image_client.images.assert_called_once() self.sdk_client.flavors.assert_not_called() self.assertEqual(self.columns, columns) @@ -5326,7 +5315,7 @@ class TestServerList(_TestServerList): # Make sure the returned image and flavor IDs match the servers. Image = collections.namedtuple('Image', 'id name') - self.images_mock.return_value = [ + self.image_client.images.return_value = [ Image(id=s.image['id'], name=self.image.name) # Image will be an empty string if boot-from-volume for s in servers @@ -5409,7 +5398,7 @@ class TestServerListV273(_TestServerList): self.sdk_client.servers.return_value = self.servers Image = collections.namedtuple('Image', 'id name') - self.images_mock.return_value = [ + self.image_client.images.return_value = [ Image(id=s.image['id'], name=self.image.name) # Image will be an empty string if boot-from-volume for s in self.servers @@ -6172,7 +6161,7 @@ class TestServerRebuild(TestServer): # Return value for utils.find_resource for image self.image = image_fakes.create_one_image() - self.get_image_mock.return_value = self.image + self.image_client.get_image.return_value = self.image # Fake the rebuilt new server. attrs = { @@ -6200,7 +6189,7 @@ class TestServerRebuild(TestServer): def test_rebuild_with_image_name(self): image_name = 'my-custom-image' user_image = image_fakes.create_one_image(attrs={'name': image_name}) - self.find_image_mock.return_value = user_image + self.image_client.find_image.return_value = user_image attrs = { 'image': {'id': user_image.id}, @@ -6218,10 +6207,10 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.find_image_mock.assert_called_with( + self.image_client.find_image.assert_called_with( image_name, ignore_missing=False ) - self.get_image_mock.assert_called_with(user_image.id) + self.image_client.get_image.assert_called_with(user_image.id) self.server.rebuild.assert_called_with(user_image, None) def test_rebuild_with_current_image(self): @@ -6235,8 +6224,8 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.find_image_mock.assert_not_called() - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.find_image.assert_not_called() + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with(self.image, None) def test_rebuild_with_volume_backed_server_no_image(self): @@ -6274,7 +6263,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with(self.image, None, name=name) def test_rebuild_with_preserve_ephemeral(self): @@ -6292,7 +6281,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with( self.image, None, preserve_ephemeral=True ) @@ -6312,7 +6301,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with( self.image, None, preserve_ephemeral=False ) @@ -6327,7 +6316,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with(self.image, password) def test_rebuild_with_description(self): @@ -6343,7 +6332,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with( self.image, None, description=description ) @@ -6388,7 +6377,7 @@ class TestServerRebuild(TestServer): ) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with(self.image, None) @mock.patch.object(common_utils, 'wait_for_status', return_value=False) @@ -6413,7 +6402,7 @@ class TestServerRebuild(TestServer): ) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with(self.image, None) @mock.patch.object(common_utils, 'wait_for_status', return_value=True) @@ -6443,7 +6432,7 @@ class TestServerRebuild(TestServer): ) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with(self.image, None) @mock.patch.object(common_utils, 'wait_for_status', return_value=True) @@ -6473,7 +6462,7 @@ class TestServerRebuild(TestServer): ) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with(self.image, None) def test_rebuild_wrong_status_fails(self): @@ -6491,7 +6480,7 @@ class TestServerRebuild(TestServer): ) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_not_called() def test_rebuild_with_property(self): @@ -6513,7 +6502,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with( self.image, None, meta=expected_properties ) @@ -6538,7 +6527,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with( self.image, None, key_name=self.server.key_name ) @@ -6581,7 +6570,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with(self.image, None, key_name=None) def test_rebuild_with_keypair_name_and_unset(self): @@ -6634,7 +6623,7 @@ class TestServerRebuild(TestServer): mock_file.close.assert_called_with() self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with( self.image, None, @@ -6679,7 +6668,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with(self.image, None, userdata=None) def test_rebuild_with_no_user_data_pre_v254(self): @@ -6733,7 +6722,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with( self.image, None, trusted_image_certificates=['foo', 'bar'] ) @@ -6777,7 +6766,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with( self.image, None, trusted_image_certificates=None ) @@ -6813,7 +6802,7 @@ class TestServerRebuild(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.get_image_mock.assert_called_with(self.image.id) + self.image_client.get_image.assert_called_with(self.image.id) self.server.rebuild.assert_called_with( self.image, None, hostname='new-hostname' ) @@ -6841,7 +6830,7 @@ class TestServerRebuildVolumeBacked(TestServer): super().setUp() self.new_image = image_fakes.create_one_image() - self.find_image_mock.return_value = self.new_image + self.image_client.find_image.return_value = self.new_image attrs = { 'image': '', @@ -6939,9 +6928,10 @@ class TestServerRebuildVolumeBacked(TestServer): class TestEvacuateServer(TestServer): def setUp(self): super(TestEvacuateServer, self).setUp() + # Return value for utils.find_resource for image self.image = image_fakes.create_one_image() - self.images_mock.get.return_value = self.image + self.image_client.get_image.return_value = self.image # Fake the rebuilt new server. attrs = { @@ -7137,7 +7127,7 @@ class TestServerRescue(TestServer): # Return value for utils.find_resource for image self.image = image_fakes.create_one_image() - self.get_image_mock.return_value = self.image + self.image_client.get_image.return_value = self.image new_server = compute_fakes.create_one_server() attrs = { @@ -7178,7 +7168,7 @@ class TestServerRescue(TestServer): def test_rescue_with_new_image(self): new_image = image_fakes.create_one_image() - self.find_image_mock.return_value = new_image + self.image_client.find_image.return_value = new_image arglist = [ '--image', new_image.id, @@ -7194,7 +7184,7 @@ class TestServerRescue(TestServer): self.cmd.take_action(parsed_args) self.servers_mock.get.assert_called_with(self.server.id) - self.find_image_mock.assert_called_with(new_image.id) + self.image_client.find_image.assert_called_with(new_image.id) self.server.rescue.assert_called_with(image=new_image, password=None) def test_rescue_with_current_image_and_password(self): @@ -8278,7 +8268,7 @@ class TestServerShow(TestServer): # This is the return value for utils.find_resource() self.sdk_client.get_server.return_value = self.server - self.get_image_mock.return_value = self.image + self.image_client.get_image.return_value = self.image self.flavors_mock.get.return_value = self.flavor # Get the command object to test @@ -9119,7 +9109,7 @@ class TestServerGeneral(TestServer): } _server = compute_fakes.create_one_server(attrs=server_info) find_resource.side_effect = [_server, _flavor] - self.get_image_mock.return_value = _image + self.image_client.get_image.return_value = _image # Prepare result data. info = { @@ -9139,7 +9129,7 @@ class TestServerGeneral(TestServer): # Call _prep_server_detail(). server_detail = server._prep_server_detail( self.app.client_manager.compute, - self.app.client_manager.image, + self.image_client, _server, ) # 'networks' is used to create _server. Remove it. diff --git a/openstackclient/tests/unit/compute/v2/test_server_backup.py b/openstackclient/tests/unit/compute/v2/test_server_backup.py index 7b2c252b8..4d141ff5a 100644 --- a/openstackclient/tests/unit/compute/v2/test_server_backup.py +++ b/openstackclient/tests/unit/compute/v2/test_server_backup.py @@ -31,10 +31,6 @@ class TestServerBackup(compute_fakes.TestComputev2): self.app.client_manager.sdk_connection.compute = mock.Mock() self.sdk_client = self.app.client_manager.sdk_connection.compute - # Get a shortcut to the image client ImageManager Mock - self.images_mock = self.app.client_manager.image - self.images_mock.find_image.reset_mock() - # Set object attributes to be tested. Could be overwritten in subclass. self.attrs = {} @@ -102,8 +98,7 @@ class TestServerBackupCreate(TestServerBackup): count=count, ) - # self.images_mock.get = mock.Mock(side_effect=images) - self.images_mock.find_image = mock.Mock(side_effect=images) + self.image_client.find_image = mock.Mock(side_effect=images) return images def test_server_backup_defaults(self): @@ -177,7 +172,7 @@ class TestServerBackupCreate(TestServerBackup): def test_server_backup_wait_fail(self, mock_wait_for_status): servers = self.setup_servers_mock(count=1) images = self.setup_images_mock(count=1, servers=servers) - self.images_mock.get_image = mock.Mock( + self.image_client.get_image = mock.Mock( side_effect=images[0], ) @@ -211,7 +206,7 @@ class TestServerBackupCreate(TestServerBackup): ) mock_wait_for_status.assert_called_once_with( - self.images_mock.get_image, images[0].id, callback=mock.ANY + self.image_client.get_image, images[0].id, callback=mock.ANY ) @mock.patch.object(common_utils, 'wait_for_status', return_value=True) @@ -219,7 +214,7 @@ class TestServerBackupCreate(TestServerBackup): servers = self.setup_servers_mock(count=1) images = self.setup_images_mock(count=1, servers=servers) - self.images_mock.get_image = mock.Mock( + self.image_client.get_image = mock.Mock( side_effect=images[0], ) @@ -252,7 +247,7 @@ class TestServerBackupCreate(TestServerBackup): ) mock_wait_for_status.assert_called_once_with( - self.images_mock.get_image, images[0].id, callback=mock.ANY + self.image_client.get_image, images[0].id, callback=mock.ANY ) self.assertEqual(self.image_columns(images[0]), columns) diff --git a/openstackclient/tests/unit/compute/v2/test_server_image.py b/openstackclient/tests/unit/compute/v2/test_server_image.py index cc1ee90ad..17fc92fd2 100644 --- a/openstackclient/tests/unit/compute/v2/test_server_image.py +++ b/openstackclient/tests/unit/compute/v2/test_server_image.py @@ -30,10 +30,6 @@ class TestServerImage(compute_fakes.TestComputev2): self.app.client_manager.sdk_connection.compute = mock.Mock() self.sdk_client = self.app.client_manager.sdk_connection.compute - # Get a shortcut to the image client ImageManager Mock - self.images_mock = self.app.client_manager.image - self.images_mock.find_image.reset_mock() - # Set object attributes to be tested. Could be overwritten in subclass. self.attrs = {} @@ -100,7 +96,7 @@ class TestServerImageCreate(TestServerImage): count=count, ) - self.images_mock.find_image = mock.Mock(side_effect=images) + self.image_client.find_image = mock.Mock(side_effect=images) self.sdk_client.create_server_image = mock.Mock( return_value=images[0], ) @@ -192,7 +188,7 @@ class TestServerImageCreate(TestServerImage): ) mock_wait_for_status.assert_called_once_with( - self.images_mock.get_image, images[0].id, callback=mock.ANY + self.image_client.get_image, images[0].id, callback=mock.ANY ) @mock.patch.object(common_utils, 'wait_for_status', return_value=True) @@ -222,7 +218,7 @@ class TestServerImageCreate(TestServerImage): ) mock_wait_for_status.assert_called_once_with( - self.images_mock.get_image, images[0].id, callback=mock.ANY + self.image_client.get_image, images[0].id, callback=mock.ANY ) self.assertEqual(self.image_columns(images[0]), columns) diff --git a/openstackclient/tests/unit/image/v1/fakes.py b/openstackclient/tests/unit/image/v1/fakes.py index 09c14cdc0..e6eca4243 100644 --- a/openstackclient/tests/unit/image/v1/fakes.py +++ b/openstackclient/tests/unit/image/v1/fakes.py @@ -27,14 +27,13 @@ class TestImagev1(utils.TestCommand): super().setUp() self.app.client_manager.image = mock.Mock() + self.image_client = self.app.client_manager.image self.app.client_manager.volume = volume_fakes.FakeVolumev1Client( endpoint=fakes.AUTH_URL, token=fakes.AUTH_TOKEN, ) - self.client = self.app.client_manager.image - def create_one_image(attrs=None): """Create a fake image. diff --git a/openstackclient/tests/unit/image/v1/test_image.py b/openstackclient/tests/unit/image/v1/test_image.py index 0016bc21d..ed1e202fd 100644 --- a/openstackclient/tests/unit/image/v1/test_image.py +++ b/openstackclient/tests/unit/image/v1/test_image.py @@ -11,7 +11,6 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -# import copy from unittest import mock @@ -23,11 +22,7 @@ from openstackclient.tests.unit import fakes from openstackclient.tests.unit.image.v1 import fakes as image_fakes -class TestImage(image_fakes.TestImagev1): - pass - - -class TestImageCreate(TestImage): +class TestImageCreate(image_fakes.TestImagev1): new_image = image_fakes.create_one_image() columns = ( 'container_format', @@ -59,9 +54,9 @@ class TestImageCreate(TestImage): def setUp(self): super(TestImageCreate, self).setUp() - self.client.create_image = mock.Mock(return_value=self.new_image) - self.client.find_image = mock.Mock(return_value=self.new_image) - self.client.update_image = mock.Mock(return_image=self.new_image) + self.image_client.create_image = mock.Mock(return_value=self.new_image) + self.image_client.find_image = mock.Mock(return_value=self.new_image) + self.image_client.update_image = mock.Mock(return_image=self.new_image) # Get the command object to test self.cmd = image.CreateImage(self.app, None) @@ -84,14 +79,14 @@ class TestImageCreate(TestImage): columns, data = self.cmd.take_action(parsed_args) # ImageManager.create(name=, **) - self.client.create_image.assert_called_with( + self.image_client.create_image.assert_called_with( name=self.new_image.name, container_format=image.DEFAULT_CONTAINER_FORMAT, disk_format=image.DEFAULT_DISK_FORMAT, ) # Verify update() was not called, if it was show the args - self.assertEqual(self.client.update_image.call_args_list, []) + self.assertEqual(self.image_client.update_image.call_args_list, []) self.assertEqual(self.columns, columns) self.assertCountEqual(self.data, data) @@ -133,7 +128,7 @@ class TestImageCreate(TestImage): columns, data = self.cmd.take_action(parsed_args) # ImageManager.create(name=, **) - self.client.create_image.assert_called_with( + self.image_client.create_image.assert_called_with( name=self.new_image.name, container_format='ovf', disk_format='ami', @@ -145,7 +140,7 @@ class TestImageCreate(TestImage): ) # Verify update() was not called, if it was show the args - self.assertEqual(self.client.update_image.call_args_list, []) + self.assertEqual(self.image_client.update_image.call_args_list, []) self.assertEqual(self.columns, columns) self.assertCountEqual(self.data, data) @@ -190,7 +185,7 @@ class TestImageCreate(TestImage): mock_file.close.assert_called_with() # ImageManager.create(name=, **) - self.client.create_image.assert_called_with( + self.image_client.create_image.assert_called_with( name=self.new_image.name, container_format=image.DEFAULT_CONTAINER_FORMAT, disk_format=image.DEFAULT_DISK_FORMAT, @@ -204,21 +199,21 @@ class TestImageCreate(TestImage): ) # Verify update() was not called, if it was show the args - self.assertEqual(self.client.update_image.call_args_list, []) + self.assertEqual(self.image_client.update_image.call_args_list, []) self.assertEqual(self.columns, columns) self.assertCountEqual(self.data, data) -class TestImageDelete(TestImage): +class TestImageDelete(image_fakes.TestImagev1): _image = image_fakes.create_one_image() def setUp(self): super(TestImageDelete, self).setUp() # This is the return value for utils.find_resource() - self.client.find_image = mock.Mock(return_value=self._image) - self.client.delete_image = mock.Mock(return_value=None) + self.image_client.find_image = mock.Mock(return_value=self._image) + self.image_client.delete_image = mock.Mock(return_value=None) # Get the command object to test self.cmd = image.DeleteImage(self.app, None) @@ -234,11 +229,11 @@ class TestImageDelete(TestImage): result = self.cmd.take_action(parsed_args) - self.client.delete_image.assert_called_with(self._image.id) + self.image_client.delete_image.assert_called_with(self._image.id) self.assertIsNone(result) -class TestImageList(TestImage): +class TestImageList(image_fakes.TestImagev1): _image = image_fakes.create_one_image() columns = ( @@ -266,8 +261,8 @@ class TestImageList(TestImage): def setUp(self): super(TestImageList, self).setUp() - self.client.images = mock.Mock() - self.client.images.side_effect = [ + self.image_client.images = mock.Mock() + self.image_client.images.side_effect = [ [self._image], [], ] @@ -288,7 +283,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with() + self.image_client.images.assert_called_with() self.assertEqual(self.columns, columns) self.assertEqual(self.datalist, tuple(data)) @@ -308,7 +303,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( is_public=True, ) @@ -330,7 +325,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( is_private=True, ) @@ -350,7 +345,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with() + self.image_client.images.assert_called_with() collist = ( 'ID', @@ -406,7 +401,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with() + self.image_client.images.assert_called_with() sf_mock.assert_called_with( [self._image], attr='a', @@ -432,22 +427,22 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with() + self.image_client.images.assert_called_with() si_mock.assert_called_with([self._image], 'name:asc') self.assertEqual(self.columns, columns) self.assertEqual(self.datalist, tuple(data)) -class TestImageSet(TestImage): +class TestImageSet(image_fakes.TestImagev1): _image = image_fakes.create_one_image() def setUp(self): super(TestImageSet, self).setUp() # This is the return value for utils.find_resource() - self.client.find_image = mock.Mock(return_value=self._image) - self.client.update_image = mock.Mock(return_value=self._image) + self.image_client.find_image = mock.Mock(return_value=self._image) + self.image_client.update_image = mock.Mock(return_value=self._image) # Get the command object to test self.cmd = image.SetImage(self.app, None) @@ -463,7 +458,7 @@ class TestImageSet(TestImage): result = self.cmd.take_action(parsed_args) - self.client.update_image.assert_called_with(self._image.id, **{}) + self.image_client.update_image.assert_called_with(self._image.id, **{}) self.assertIsNone(result) def test_image_set_options(self): @@ -508,7 +503,9 @@ class TestImageSet(TestImage): 'size': 35165824, } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_bools1(self): @@ -533,7 +530,9 @@ class TestImageSet(TestImage): 'is_public': False, } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_bools2(self): @@ -558,7 +557,9 @@ class TestImageSet(TestImage): 'is_public': True, } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_properties(self): @@ -585,7 +586,9 @@ class TestImageSet(TestImage): }, } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_update_volume(self): @@ -642,7 +645,7 @@ class TestImageSet(TestImage): '', ) # ImageManager.update(image_id, remove_props=, **) - self.client.update_image.assert_called_with( + self.image_client.update_image.assert_called_with( self._image.id, name='updated_image', volume='volly', @@ -671,11 +674,13 @@ class TestImageSet(TestImage): 'min_ram': 0, } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) -class TestImageShow(TestImage): +class TestImageShow(image_fakes.TestImagev1): _image = image_fakes.create_one_image(attrs={'size': 2000}) columns = ( 'container_format', @@ -707,7 +712,7 @@ class TestImageShow(TestImage): def setUp(self): super(TestImageShow, self).setUp() - self.client.find_image = mock.Mock(return_value=self._image) + self.image_client.find_image = mock.Mock(return_value=self._image) # Get the command object to test self.cmd = image.ShowImage(self.app, None) @@ -725,7 +730,7 @@ class TestImageShow(TestImage): # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. columns, data = self.cmd.take_action(parsed_args) - self.client.find_image.assert_called_with( + self.image_client.find_image.assert_called_with( self._image.id, ) @@ -747,7 +752,7 @@ class TestImageShow(TestImage): # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. columns, data = self.cmd.take_action(parsed_args) - self.client.find_image.assert_called_with( + self.image_client.find_image.assert_called_with( self._image.id, ) diff --git a/openstackclient/tests/unit/image/v2/fakes.py b/openstackclient/tests/unit/image/v2/fakes.py index 571e7f309..de419149c 100644 --- a/openstackclient/tests/unit/image/v2/fakes.py +++ b/openstackclient/tests/unit/image/v2/fakes.py @@ -33,6 +33,7 @@ class TestImagev2(utils.TestCommand): super().setUp() self.app.client_manager.image = mock.Mock() + self.image_client = self.app.client_manager.image self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client( endpoint=fakes.AUTH_URL, @@ -231,34 +232,6 @@ def create_tasks(attrs=None, count=2): return tasks -class FakeMetadefNamespaceClient: - def __init__(self, **kwargs): - self.create_metadef_namespace = mock.Mock() - self.delete_metadef_namespace = mock.Mock() - self.metadef_namespaces = mock.Mock() - self.get_metadef_namespace = mock.Mock() - self.update_metadef_namespace = mock.Mock() - - self.auth_token = kwargs['token'] - self.management_url = kwargs['endpoint'] - self.version = 2.0 - - -class TestMetadefNamespaces(utils.TestCommand): - def setUp(self): - super().setUp() - - self.app.client_manager.image = FakeMetadefNamespaceClient( - endpoint=fakes.AUTH_URL, - token=fakes.AUTH_TOKEN, - ) - - self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client( - endpoint=fakes.AUTH_URL, - token=fakes.AUTH_TOKEN, - ) - - def create_one_metadef_namespace(attrs=None): """Create a fake MetadefNamespace member. diff --git a/openstackclient/tests/unit/image/v2/test_image.py b/openstackclient/tests/unit/image/v2/test_image.py index c17903255..cd7fe3ffd 100644 --- a/openstackclient/tests/unit/image/v2/test_image.py +++ b/openstackclient/tests/unit/image/v2/test_image.py @@ -32,9 +32,6 @@ class TestImage(image_fakes.TestImagev2, volume_fakes.TestVolume): def setUp(self): super().setUp() - # Get shortcuts to mocked image client - self.client = self.app.client_manager.image - # Get shortcut to the Mocks in identity client self.project_mock = self.app.client_manager.identity.projects self.project_mock.reset_mock() @@ -61,14 +58,13 @@ class TestImageCreate(TestImage): super().setUp() self.new_image = image_fakes.create_one_image() - self.client.create_image.return_value = self.new_image + self.image_client.create_image.return_value = self.new_image + self.image_client.update_image.return_value = self.new_image self.project_mock.get.return_value = self.project self.domain_mock.get.return_value = self.domain - self.client.update_image.return_value = self.new_image - (self.expected_columns, self.expected_data) = zip( *sorted(_image._format_image(self.new_image).items()) ) @@ -92,7 +88,7 @@ class TestImageCreate(TestImage): columns, data = self.cmd.take_action(parsed_args) # ImageManager.create(name=, **) - self.client.create_image.assert_called_with( + self.image_client.create_image.assert_called_with( name=self.new_image.name, allow_duplicates=True, container_format=_image.DEFAULT_CONTAINER_FORMAT, @@ -144,7 +140,7 @@ class TestImageCreate(TestImage): columns, data = self.cmd.take_action(parsed_args) # ImageManager.create(name=, **) - self.client.create_image.assert_called_with( + self.image_client.create_image.assert_called_with( name=self.new_image.name, allow_duplicates=True, container_format='ovf', @@ -240,7 +236,7 @@ class TestImageCreate(TestImage): columns, data = self.cmd.take_action(parsed_args) # ImageManager.create(name=, **) - self.client.create_image.assert_called_with( + self.image_client.create_image.assert_called_with( name=self.new_image.name, allow_duplicates=True, container_format=_image.DEFAULT_CONTAINER_FORMAT, @@ -276,7 +272,7 @@ class TestImageCreate(TestImage): columns, data = self.cmd.take_action(parsed_args) - self.client.create_image.assert_called_with( + self.image_client.create_image.assert_called_with( name=self.new_image.name, allow_duplicates=True, container_format=_image.DEFAULT_CONTAINER_FORMAT, @@ -317,7 +313,7 @@ class TestImageCreate(TestImage): columns, data = self.cmd.take_action(parsed_args) # ImageManager.create(name=, **) - self.client.create_image.assert_called_with( + self.image_client.create_image.assert_called_with( name=self.new_image.name, allow_duplicates=True, container_format=_image.DEFAULT_CONTAINER_FORMAT, @@ -439,10 +435,10 @@ class TestAddProjectToImage(TestImage): super().setUp() # This is the return value for utils.find_resource() - self.client.find_image.return_value = self._image + self.image_client.find_image.return_value = self._image # Update the image_id in the MEMBER dict - self.client.add_member.return_value = self.new_member + self.image_client.add_member.return_value = self.new_member self.project_mock.get.return_value = self.project self.domain_mock.get.return_value = self.domain # Get the command object to test @@ -463,7 +459,7 @@ class TestAddProjectToImage(TestImage): # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. columns, data = self.cmd.take_action(parsed_args) - self.client.add_member.assert_called_with( + self.image_client.add_member.assert_called_with( image=self._image.id, member_id=self.project.id ) @@ -488,7 +484,7 @@ class TestAddProjectToImage(TestImage): # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. columns, data = self.cmd.take_action(parsed_args) - self.client.add_member.assert_called_with( + self.image_client.add_member.assert_called_with( image=self._image.id, member_id=self.project.id ) @@ -500,7 +496,7 @@ class TestImageDelete(TestImage): def setUp(self): super().setUp() - self.client.delete_image.return_value = None + self.image_client.delete_image.return_value = None # Get the command object to test self.cmd = _image.DeleteImage(self.app, None) @@ -516,11 +512,11 @@ class TestImageDelete(TestImage): ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) - self.client.find_image.side_effect = images + self.image_client.find_image.side_effect = images result = self.cmd.take_action(parsed_args) - self.client.delete_image.assert_called_with( + self.image_client.delete_image.assert_called_with( images[0].id, store=parsed_args.store, ignore_missing=False ) self.assertIsNone(result) @@ -536,11 +532,11 @@ class TestImageDelete(TestImage): verifylist = [('images', [images[0].id]), ('store', 'store1')] parsed_args = self.check_parser(self.cmd, arglist, verifylist) - self.client.find_image.side_effect = images + self.image_client.find_image.side_effect = images result = self.cmd.take_action(parsed_args) - self.client.delete_image.assert_called_with( + self.image_client.delete_image.assert_called_with( images[0].id, store=parsed_args.store, ignore_missing=False ) self.assertIsNone(result) @@ -554,7 +550,7 @@ class TestImageDelete(TestImage): ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) - self.client.find_image.side_effect = images + self.image_client.find_image.side_effect = images result = self.cmd.take_action(parsed_args) @@ -562,7 +558,7 @@ class TestImageDelete(TestImage): mock.call(i.id, store=parsed_args.store, ignore_missing=False) for i in images ] - self.client.delete_image.assert_has_calls(calls) + self.image_client.delete_image.assert_has_calls(calls) self.assertIsNone(result) def test_image_delete_from_store_without_multi_backend(self): @@ -572,9 +568,11 @@ class TestImageDelete(TestImage): verifylist = [('images', [images[0].id]), ('store', 'store1')] parsed_args = self.check_parser(self.cmd, arglist, verifylist) - self.client.find_image.side_effect = images + self.image_client.find_image.side_effect = images - self.client.delete_image.side_effect = sdk_exceptions.ResourceNotFound + self.image_client.delete_image.side_effect = ( + sdk_exceptions.ResourceNotFound + ) exc = self.assertRaises( exceptions.CommandError, self.cmd.take_action, @@ -602,7 +600,7 @@ class TestImageDelete(TestImage): # And fake find() to find the real network or not. ret_find = [images[0], images[1], sdk_exceptions.ResourceNotFound()] - self.client.find_image.side_effect = ret_find + self.image_client.find_image.side_effect = ret_find self.assertRaises( exceptions.CommandError, self.cmd.take_action, parsed_args @@ -611,7 +609,7 @@ class TestImageDelete(TestImage): mock.call(i.id, store=parsed_args.store, ignore_missing=False) for i in images ] - self.client.delete_image.assert_has_calls(calls) + self.image_client.delete_image.assert_has_calls(calls) class TestImageList(TestImage): @@ -634,7 +632,7 @@ class TestImageList(TestImage): def setUp(self): super().setUp() - self.client.images.side_effect = [[self._image], []] + self.image_client.images.side_effect = [[self._image], []] # Get the command object to test self.cmd = _image.ListImage(self.app, None) @@ -651,7 +649,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( # marker=self._image.id, ) @@ -672,7 +670,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( visibility='public', ) @@ -693,7 +691,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( visibility='private', ) @@ -714,7 +712,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( visibility='community', ) @@ -735,7 +733,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( visibility='shared', ) @@ -756,7 +754,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( visibility='all', ) @@ -776,7 +774,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( visibility='shared', member_status='all', ) @@ -806,7 +804,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with() + self.image_client.images.assert_called_with() collist = ( 'ID', @@ -857,7 +855,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with() + self.image_client.images.assert_called_with() sf_mock.assert_called_with( [self._image], attr='a', @@ -880,7 +878,7 @@ class TestImageList(TestImage): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with() + self.image_client.images.assert_called_with() si_mock.assert_called_with( [self._image], 'name:asc', @@ -901,7 +899,7 @@ class TestImageList(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( limit=ret_limit, paginated=False # marker=None @@ -911,7 +909,7 @@ class TestImageList(TestImage): self.assertEqual(ret_limit, len(tuple(data))) def test_image_list_project_option(self): - self.client.find_image = mock.Mock(return_value=self._image) + self.image_client.find_image = mock.Mock(return_value=self._image) arglist = [ '--project', 'nova', @@ -928,7 +926,7 @@ class TestImageList(TestImage): @mock.patch('osc_lib.utils.find_resource') def test_image_list_marker_option(self, fr_mock): - self.client.find_image = mock.Mock(return_value=self._image) + self.image_client.find_image = mock.Mock(return_value=self._image) arglist = [ '--marker', @@ -940,11 +938,11 @@ class TestImageList(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( marker=self._image.id, ) - self.client.find_image.assert_called_with( + self.image_client.find_image.assert_called_with( 'graven', ignore_missing=False, ) @@ -960,7 +958,7 @@ class TestImageList(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with( + self.image_client.images.assert_called_with( name='abc', # marker=self._image.id ) @@ -976,7 +974,7 @@ class TestImageList(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with(status='active') + self.image_client.images.assert_called_with(status='active') def test_image_list_hidden_option(self): arglist = [ @@ -988,7 +986,7 @@ class TestImageList(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with(is_hidden=True) + self.image_client.images.assert_called_with(is_hidden=True) def test_image_list_tag_option(self): arglist = ['--tag', 'abc', '--tag', 'cba'] @@ -998,7 +996,7 @@ class TestImageList(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - self.client.images.assert_called_with(tag=['abc', 'cba']) + self.image_client.images.assert_called_with(tag=['abc', 'cba']) class TestListImageProjects(TestImage): @@ -1021,8 +1019,8 @@ class TestListImageProjects(TestImage): def setUp(self): super().setUp() - self.client.find_image.return_value = self._image - self.client.members.return_value = [self.member] + self.image_client.find_image.return_value = self._image + self.image_client.members.return_value = [self.member] self.cmd = _image.ListImageProjects(self.app, None) @@ -1033,7 +1031,7 @@ class TestListImageProjects(TestImage): columns, data = self.cmd.take_action(parsed_args) - self.client.members.assert_called_with(image=self._image.id) + self.image_client.members.assert_called_with(image=self._image.id) self.assertEqual(self.columns, columns) self.assertEqual(self.datalist, list(data)) @@ -1048,11 +1046,11 @@ class TestRemoveProjectImage(TestImage): self._image = image_fakes.create_one_image() # This is the return value for utils.find_resource() - self.client.find_image.return_value = self._image + self.image_client.find_image.return_value = self._image self.project_mock.get.return_value = self.project self.domain_mock.get.return_value = self.domain - self.client.remove_member.return_value = None + self.image_client.remove_member.return_value = None # Get the command object to test self.cmd = _image.RemoveProjectImage(self.app, None) @@ -1069,11 +1067,11 @@ class TestRemoveProjectImage(TestImage): result = self.cmd.take_action(parsed_args) - self.client.find_image.assert_called_with( + self.image_client.find_image.assert_called_with( self._image.id, ignore_missing=False ) - self.client.remove_member.assert_called_with( + self.image_client.remove_member.assert_called_with( member=self.project.id, image=self._image.id, ) @@ -1095,7 +1093,7 @@ class TestRemoveProjectImage(TestImage): result = self.cmd.take_action(parsed_args) - self.client.remove_member.assert_called_with( + self.image_client.remove_member.assert_called_with( member=self.project.id, image=self._image.id, ) @@ -1114,7 +1112,7 @@ class TestImageSet(TestImage): self.domain_mock.get.return_value = self.domain - self.client.find_image.return_value = self._image + self.image_client.find_image.return_value = self._image self.app.client_manager.auth_ref = mock.Mock( project_id=self.project.id, @@ -1145,7 +1143,7 @@ class TestImageSet(TestImage): 'member_id': self.project.id, } ) - self.client.update_member.return_value = membership + self.image_client.update_member.return_value = membership arglist = [ '--accept', @@ -1156,7 +1154,7 @@ class TestImageSet(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.cmd.take_action(parsed_args) - self.client.update_member.assert_called_once_with( + self.image_client.update_member.assert_called_once_with( image=self._image.id, member=self.app.client_manager.auth_ref.project_id, status='accepted', @@ -1164,7 +1162,7 @@ class TestImageSet(TestImage): # Assert that the 'update image" route is also called, in addition to # the 'update membership' route. - self.client.update_image.assert_called_with(self._image.id) + self.image_client.update_image.assert_called_with(self._image.id) def test_image_set_membership_option_reject(self): membership = image_fakes.create_one_image_member( @@ -1173,7 +1171,7 @@ class TestImageSet(TestImage): 'member_id': self.project.id, } ) - self.client.update_member.return_value = membership + self.image_client.update_member.return_value = membership arglist = [ '--reject', @@ -1187,7 +1185,7 @@ class TestImageSet(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.cmd.take_action(parsed_args) - self.client.update_member.assert_called_once_with( + self.image_client.update_member.assert_called_once_with( image=self._image.id, member=self.app.client_manager.auth_ref.project_id, status='rejected', @@ -1195,7 +1193,7 @@ class TestImageSet(TestImage): # Assert that the 'update image" route is also called, in addition to # the 'update membership' route. - self.client.update_image.assert_called_with(self._image.id) + self.image_client.update_image.assert_called_with(self._image.id) def test_image_set_membership_option_pending(self): membership = image_fakes.create_one_image_member( @@ -1204,7 +1202,7 @@ class TestImageSet(TestImage): 'member_id': self.project.id, } ) - self.client.update_member.return_value = membership + self.image_client.update_member.return_value = membership arglist = [ '--pending', @@ -1218,7 +1216,7 @@ class TestImageSet(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.cmd.take_action(parsed_args) - self.client.update_member.assert_called_once_with( + self.image_client.update_member.assert_called_once_with( image=self._image.id, member=self.app.client_manager.auth_ref.project_id, status='pending', @@ -1226,7 +1224,7 @@ class TestImageSet(TestImage): # Assert that the 'update image" route is also called, in addition to # the 'update membership' route. - self.client.update_image.assert_called_with(self._image.id) + self.image_client.update_image.assert_called_with(self._image.id) def test_image_set_options(self): arglist = [ @@ -1269,7 +1267,9 @@ class TestImageSet(TestImage): 'disk_format': 'vmdk', } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_with_unexist_project(self): @@ -1311,7 +1311,9 @@ class TestImageSet(TestImage): 'visibility': 'private', } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_bools2(self): @@ -1334,7 +1336,9 @@ class TestImageSet(TestImage): 'visibility': 'public', } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_properties(self): @@ -1358,7 +1362,9 @@ class TestImageSet(TestImage): 'Beta': '2', } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_fake_properties(self): @@ -1399,7 +1405,9 @@ class TestImageSet(TestImage): 'ramdisk_id': 'xyzpdq', } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_tag(self): @@ -1420,7 +1428,9 @@ class TestImageSet(TestImage): 'tags': ['test-tag'], } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_activate(self): @@ -1442,11 +1452,13 @@ class TestImageSet(TestImage): 'tags': ['test-tag'], } - self.client.reactivate_image.assert_called_with( + self.image_client.reactivate_image.assert_called_with( self._image.id, ) # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_deactivate(self): @@ -1468,17 +1480,19 @@ class TestImageSet(TestImage): 'tags': ['test-tag'], } - self.client.deactivate_image.assert_called_with( + self.image_client.deactivate_image.assert_called_with( self._image.id, ) # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_tag_merge(self): old_image = self._image old_image['tags'] = ['old1', 'new2'] - self.client.find_image.return_value = old_image + self.image_client.find_image.return_value = old_image arglist = [ '--tag', 'test-tag', @@ -1496,7 +1510,7 @@ class TestImageSet(TestImage): 'tags': ['old1', 'new2', 'test-tag'], } # ImageManager.update(image, **kwargs) - a, k = self.client.update_image.call_args + a, k = self.image_client.update_image.call_args self.assertEqual(self._image.id, a[0]) self.assertIn('tags', k) self.assertEqual(set(kwargs['tags']), set(k['tags'])) @@ -1505,7 +1519,7 @@ class TestImageSet(TestImage): def test_image_set_tag_merge_dupe(self): old_image = self._image old_image['tags'] = ['old1', 'new2'] - self.client.find_image.return_value = old_image + self.image_client.find_image.return_value = old_image arglist = [ '--tag', 'old1', @@ -1523,7 +1537,7 @@ class TestImageSet(TestImage): 'tags': ['new2', 'old1'], } # ImageManager.update(image, **kwargs) - a, k = self.client.update_image.call_args + a, k = self.image_client.update_image.call_args self.assertEqual(self._image.id, a[0]) self.assertIn('tags', k) self.assertEqual(set(kwargs['tags']), set(k['tags'])) @@ -1567,7 +1581,9 @@ class TestImageSet(TestImage): 'min_ram': 0, } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_hidden(self): @@ -1590,7 +1606,9 @@ class TestImageSet(TestImage): 'visibility': 'public', } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) def test_image_set_unhidden(self): @@ -1613,7 +1631,9 @@ class TestImageSet(TestImage): 'visibility': 'public', } # ImageManager.update(image, **kwargs) - self.client.update_image.assert_called_with(self._image.id, **kwargs) + self.image_client.update_image.assert_called_with( + self._image.id, **kwargs + ) self.assertIsNone(result) @@ -1636,7 +1656,7 @@ class TestImageShow(TestImage): def setUp(self): super().setUp() - self.client.find_image = mock.Mock(return_value=self._data) + self.image_client.find_image = mock.Mock(return_value=self._data) # Get the command object to test self.cmd = _image.ShowImage(self.app, None) @@ -1654,7 +1674,7 @@ class TestImageShow(TestImage): # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. columns, data = self.cmd.take_action(parsed_args) - self.client.find_image.assert_called_with( + self.image_client.find_image.assert_called_with( '0f41529e-7c12-4de8-be2d-181abb825b3c', ignore_missing=False ) @@ -1662,7 +1682,7 @@ class TestImageShow(TestImage): self.assertCountEqual(self.data, data) def test_image_show_human_readable(self): - self.client.find_image.return_value = self.new_image + self.image_client.find_image.return_value = self.new_image arglist = [ '--human-readable', self.new_image.id, @@ -1677,7 +1697,7 @@ class TestImageShow(TestImage): # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. columns, data = self.cmd.take_action(parsed_args) - self.client.find_image.assert_called_with( + self.image_client.find_image.assert_called_with( self.new_image.id, ignore_missing=False ) @@ -1696,9 +1716,9 @@ class TestImageUnset(TestImage): attrs['prop2'] = 'fake' self.image = image_fakes.create_one_image(attrs) - self.client.find_image.return_value = self.image - self.client.remove_tag.return_value = self.image - self.client.update_image.return_value = self.image + self.image_client.find_image.return_value = self.image + self.image_client.remove_tag.return_value = self.image + self.image_client.update_image.return_value = self.image # Get the command object to test self.cmd = _image.UnsetImage(self.app, None) @@ -1728,7 +1748,7 @@ class TestImageUnset(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) result = self.cmd.take_action(parsed_args) - self.client.remove_tag.assert_called_with(self.image.id, 'test') + self.image_client.remove_tag.assert_called_with(self.image.id, 'test') self.assertIsNone(result) def test_image_unset_property_option(self): @@ -1747,7 +1767,7 @@ class TestImageUnset(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) result = self.cmd.take_action(parsed_args) - self.client.update_image.assert_called_with( + self.image_client.update_image.assert_called_with( self.image, properties={'prop2': 'fake'} ) @@ -1772,11 +1792,11 @@ class TestImageUnset(TestImage): parsed_args = self.check_parser(self.cmd, arglist, verifylist) result = self.cmd.take_action(parsed_args) - self.client.update_image.assert_called_with( + self.image_client.update_image.assert_called_with( self.image, properties={'prop2': 'fake'} ) - self.client.remove_tag.assert_called_with(self.image.id, 'test') + self.image_client.remove_tag.assert_called_with(self.image.id, 'test') self.assertIsNone(result) @@ -1786,7 +1806,7 @@ class TestImageStage(TestImage): def setUp(self): super().setUp() - self.client.find_image.return_value = self.image + self.image_client.find_image.return_value = self.image self.cmd = _image.StageImage(self.app, None) @@ -1808,7 +1828,7 @@ class TestImageStage(TestImage): self.cmd.take_action(parsed_args) - self.client.stage_image.assert_called_once_with( + self.image_client.stage_image.assert_called_once_with( self.image, filename=imagefile.name, ) @@ -1828,7 +1848,7 @@ class TestImageStage(TestImage): self.cmd.take_action(parsed_args) - self.client.stage_image.assert_called_once_with( + self.image_client.stage_image.assert_called_once_with( self.image, data=fake_stdin, ) @@ -1846,8 +1866,8 @@ class TestImageImport(TestImage): def setUp(self): super().setUp() - self.client.find_image.return_value = self.image - self.client.get_import_info.return_value = self.import_info + self.image_client.find_image.return_value = self.image + self.image_client.get_import_info.return_value = self.import_info self.cmd = _image.ImportImage(self.app, None) @@ -1863,7 +1883,7 @@ class TestImageImport(TestImage): self.cmd.take_action(parsed_args) - self.client.import_image.assert_called_once_with( + self.image_client.import_image.assert_called_once_with( self.image, method='glance-direct', uri=None, @@ -1893,7 +1913,7 @@ class TestImageImport(TestImage): self.cmd.take_action(parsed_args) - self.client.import_image.assert_called_once_with( + self.image_client.import_image.assert_called_once_with( self.image, method='web-download', uri='https://example.com/', @@ -1927,7 +1947,7 @@ class TestImageImport(TestImage): ) self.assertIn("The '--uri' option is required ", str(exc)) - self.client.import_image.assert_not_called() + self.image_client.import_image.assert_not_called() # NOTE(stephenfin): Ditto def test_import_image__web_download_invalid_options(self): @@ -1952,7 +1972,7 @@ class TestImageImport(TestImage): ) self.assertIn("The '--uri' option is only supported ", str(exc)) - self.client.import_image.assert_not_called() + self.image_client.import_image.assert_not_called() def test_import_image__web_download_invalid_image_state(self): self.image.status = 'uploading' # != 'queued' @@ -1981,7 +2001,7 @@ class TestImageImport(TestImage): str(exc), ) - self.client.import_image.assert_not_called() + self.image_client.import_image.assert_not_called() def test_import_image__copy_image(self): self.image.status = 'active' @@ -2001,7 +2021,7 @@ class TestImageImport(TestImage): self.cmd.take_action(parsed_args) - self.client.import_image.assert_called_once_with( + self.image_client.import_image.assert_called_once_with( self.image, method='copy-image', uri=None, @@ -2036,7 +2056,7 @@ class TestImageImport(TestImage): self.cmd.take_action(parsed_args) - self.client.import_image.assert_called_once_with( + self.image_client.import_image.assert_called_once_with( self.image, method='glance-download', uri=None, @@ -2055,8 +2075,8 @@ class TestImageSave(TestImage): def setUp(self): super().setUp() - self.client.find_image.return_value = self.image - self.client.download_image.return_value = self.image + self.image_client.find_image.return_value = self.image + self.image_client.download_image.return_value = self.image # Get the command object to test self.cmd = _image.SaveImage(self.app, None) @@ -2072,7 +2092,7 @@ class TestImageSave(TestImage): self.cmd.take_action(parsed_args) - self.client.download_image.assert_called_once_with( + self.image_client.download_image.assert_called_once_with( self.image.id, stream=True, output='/path/to/file' ) @@ -2109,7 +2129,7 @@ class TestStoresInfo(TestImage): def setUp(self): super().setUp() - self.client.stores.return_value = self.stores_info + self.image_client.stores.return_value = self.stores_info self.cmd = _image.StoresInfo(self.app, None) @@ -2118,19 +2138,21 @@ class TestStoresInfo(TestImage): parsed_args = self.check_parser(self.cmd, arglist, []) self.cmd.take_action(parsed_args) - self.client.stores.assert_called() + self.image_client.stores.assert_called() def test_stores_info_with_detail(self): arglist = ['--detail'] parsed_args = self.check_parser(self.cmd, arglist, []) self.cmd.take_action(parsed_args) - self.client.stores.assert_called_with(details=True) + self.image_client.stores.assert_called_with(details=True) def test_stores_info_neg(self): arglist = [] parsed_args = self.check_parser(self.cmd, arglist, []) - self.client.stores.side_effect = sdk_exceptions.ResourceNotFound() + self.image_client.stores.side_effect = ( + sdk_exceptions.ResourceNotFound() + ) exc = self.assertRaises( exceptions.CommandError, diff --git a/openstackclient/tests/unit/image/v2/test_info.py b/openstackclient/tests/unit/image/v2/test_info.py index 2489bfc9e..86f7bd759 100644 --- a/openstackclient/tests/unit/image/v2/test_info.py +++ b/openstackclient/tests/unit/image/v2/test_info.py @@ -14,24 +14,16 @@ # under the License. from openstackclient.image.v2 import info -from openstackclient.tests.unit.image.v2 import fakes as info_fakes +from openstackclient.tests.unit.image.v2 import fakes as image_fakes -class TestInfo(info_fakes.TestImagev2): - def setUp(self): - super().setUp() - - # Get shortcuts to mocked image client - self.client = self.app.client_manager.image - - -class TestImportInfo(TestInfo): - import_info = info_fakes.create_one_import_info() +class TestImportInfo(image_fakes.TestImagev2): + import_info = image_fakes.create_one_import_info() def setUp(self): super().setUp() - self.client.get_import_info.return_value = self.import_info + self.image_client.get_import_info.return_value = self.import_info self.cmd = info.ImportInfo(self.app, None) @@ -40,4 +32,4 @@ class TestImportInfo(TestInfo): parsed_args = self.check_parser(self.cmd, arglist, []) self.cmd.take_action(parsed_args) - self.client.get_import_info.assert_called() + self.image_client.get_import_info.assert_called() diff --git a/openstackclient/tests/unit/image/v2/test_metadef_namespaces.py b/openstackclient/tests/unit/image/v2/test_metadef_namespaces.py index 7a1aca06e..9e629c3c1 100644 --- a/openstackclient/tests/unit/image/v2/test_metadef_namespaces.py +++ b/openstackclient/tests/unit/image/v2/test_metadef_namespaces.py @@ -13,25 +13,11 @@ # under the License. from openstackclient.image.v2 import metadef_namespaces -from openstackclient.tests.unit.image.v2 import fakes as md_namespace_fakes +from openstackclient.tests.unit.image.v2 import fakes as image_fakes -class TestMetadefNamespaces(md_namespace_fakes.TestMetadefNamespaces): - def setUp(self): - super().setUp() - - # Get shortcuts to mocked image client - self.client = self.app.client_manager.image - - # Get shortcut to the Mocks in identity client - self.project_mock = self.app.client_manager.identity.projects - self.project_mock.reset_mock() - self.domain_mock = self.app.client_manager.identity.domains - self.domain_mock.reset_mock() - - -class TestMetadefNamespaceCreate(TestMetadefNamespaces): - _metadef_namespace = md_namespace_fakes.create_one_metadef_namespace() +class TestMetadefNamespaceCreate(image_fakes.TestImagev2): + _metadef_namespace = image_fakes.create_one_metadef_namespace() expected_columns = ( 'created_at', @@ -65,7 +51,7 @@ class TestMetadefNamespaceCreate(TestMetadefNamespaces): def setUp(self): super().setUp() - self.client.create_metadef_namespace.return_value = ( + self.image_client.create_metadef_namespace.return_value = ( self._metadef_namespace ) self.cmd = metadef_namespaces.CreateMetadefNameSpace(self.app, None) @@ -83,13 +69,13 @@ class TestMetadefNamespaceCreate(TestMetadefNamespaces): self.assertEqual(self.expected_data, data) -class TestMetadefNamespaceDelete(TestMetadefNamespaces): - _metadef_namespace = md_namespace_fakes.create_one_metadef_namespace() +class TestMetadefNamespaceDelete(image_fakes.TestImagev2): + _metadef_namespace = image_fakes.create_one_metadef_namespace() def setUp(self): super().setUp() - self.client.delete_metadef_namespace.return_value = ( + self.image_client.delete_metadef_namespace.return_value = ( self._metadef_namespace ) self.cmd = metadef_namespaces.DeleteMetadefNameSpace(self.app, None) @@ -106,8 +92,8 @@ class TestMetadefNamespaceDelete(TestMetadefNamespaces): self.assertIsNone(result) -class TestMetadefNamespaceList(TestMetadefNamespaces): - _metadef_namespace = [md_namespace_fakes.create_one_metadef_namespace()] +class TestMetadefNamespaceList(image_fakes.TestImagev2): + _metadef_namespace = [image_fakes.create_one_metadef_namespace()] columns = ['namespace'] @@ -116,13 +102,13 @@ class TestMetadefNamespaceList(TestMetadefNamespaces): def setUp(self): super().setUp() - self.client.metadef_namespaces.side_effect = [ + self.image_client.metadef_namespaces.side_effect = [ self._metadef_namespace, [], ] # Get the command object to test - self.client.metadef_namespaces.return_value = iter( + self.image_client.metadef_namespaces.return_value = iter( self._metadef_namespace ) self.cmd = metadef_namespaces.ListMetadefNameSpaces(self.app, None) @@ -141,13 +127,13 @@ class TestMetadefNamespaceList(TestMetadefNamespaces): self.assertEqual(getattr(self.datalist[0], 'namespace'), next(data)[0]) -class TestMetadefNamespaceSet(TestMetadefNamespaces): - _metadef_namespace = md_namespace_fakes.create_one_metadef_namespace() +class TestMetadefNamespaceSet(image_fakes.TestImagev2): + _metadef_namespace = image_fakes.create_one_metadef_namespace() def setUp(self): super().setUp() - self.client.update_metadef_namespace.return_value = ( + self.image_client.update_metadef_namespace.return_value = ( self._metadef_namespace ) self.cmd = metadef_namespaces.SetMetadefNameSpace(self.app, None) @@ -166,8 +152,8 @@ class TestMetadefNamespaceSet(TestMetadefNamespaces): self.assertIsNone(result) -class TestMetadefNamespaceShow(TestMetadefNamespaces): - _metadef_namespace = md_namespace_fakes.create_one_metadef_namespace() +class TestMetadefNamespaceShow(image_fakes.TestImagev2): + _metadef_namespace = image_fakes.create_one_metadef_namespace() expected_columns = ( 'created_at', @@ -187,7 +173,7 @@ class TestMetadefNamespaceShow(TestMetadefNamespaces): def setUp(self): super().setUp() - self.client.get_metadef_namespace.return_value = ( + self.image_client.get_metadef_namespace.return_value = ( self._metadef_namespace ) self.cmd = metadef_namespaces.ShowMetadefNameSpace(self.app, None) diff --git a/openstackclient/tests/unit/image/v2/test_metadef_resource_types.py b/openstackclient/tests/unit/image/v2/test_metadef_resource_types.py index 6b8264ed9..f70f5e340 100644 --- a/openstackclient/tests/unit/image/v2/test_metadef_resource_types.py +++ b/openstackclient/tests/unit/image/v2/test_metadef_resource_types.py @@ -11,18 +11,11 @@ # under the License. from openstackclient.image.v2 import metadef_resource_types -from openstackclient.tests.unit.image.v2 import fakes as resource_type_fakes +from openstackclient.tests.unit.image.v2 import fakes as image_fakes -class TestMetadefResourceTypes(resource_type_fakes.TestImagev2): - def setUp(self): - super().setUp() - - self.client = self.app.client_manager.image - - -class TestMetadefResourceTypeList(TestMetadefResourceTypes): - resource_types = resource_type_fakes.create_resource_types() +class TestMetadefResourceTypeList(image_fakes.TestImagev2): + resource_types = image_fakes.create_resource_types() columns = ['Name'] @@ -31,7 +24,7 @@ class TestMetadefResourceTypeList(TestMetadefResourceTypes): def setUp(self): super().setUp() - self.client.metadef_resource_types.side_effect = [ + self.image_client.metadef_resource_types.side_effect = [ self.resource_types, [], ] diff --git a/openstackclient/tests/unit/image/v2/test_task.py b/openstackclient/tests/unit/image/v2/test_task.py index 32f6363c8..891ad1a72 100644 --- a/openstackclient/tests/unit/image/v2/test_task.py +++ b/openstackclient/tests/unit/image/v2/test_task.py @@ -16,15 +16,7 @@ from openstackclient.image.v2 import task from openstackclient.tests.unit.image.v2 import fakes as image_fakes -class TestTask(image_fakes.TestImagev2): - def setUp(self): - super().setUp() - - # Get shortcuts to mocked image client - self.client = self.app.client_manager.image - - -class TestTaskShow(TestTask): +class TestTaskShow(image_fakes.TestImagev2): task = image_fakes.create_one_task() columns = ( @@ -57,7 +49,7 @@ class TestTaskShow(TestTask): def setUp(self): super().setUp() - self.client.get_task.return_value = self.task + self.image_client.get_task.return_value = self.task # Get the command object to test self.cmd = task.ShowTask(self.app, None) @@ -73,13 +65,13 @@ class TestTaskShow(TestTask): # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. columns, data = self.cmd.take_action(parsed_args) - self.client.get_task.assert_called_with(self.task.id) + self.image_client.get_task.assert_called_with(self.task.id) self.assertEqual(self.columns, columns) self.assertCountEqual(self.data, data) -class TestTaskList(TestTask): +class TestTaskList(image_fakes.TestImagev2): tasks = image_fakes.create_tasks() columns = ( @@ -101,7 +93,7 @@ class TestTaskList(TestTask): def setUp(self): super().setUp() - self.client.tasks.side_effect = [self.tasks, []] + self.image_client.tasks.side_effect = [self.tasks, []] # Get the command object to test self.cmd = task.ListTask(self.app, None) @@ -120,7 +112,7 @@ class TestTaskList(TestTask): columns, data = self.cmd.take_action(parsed_args) - self.client.tasks.assert_called_with() + self.image_client.tasks.assert_called_with() self.assertEqual(self.columns, columns) self.assertCountEqual(self.datalist, data) @@ -132,7 +124,7 @@ class TestTaskList(TestTask): columns, data = self.cmd.take_action(parsed_args) - self.client.tasks.assert_called_with( + self.image_client.tasks.assert_called_with( sort_key=parsed_args.sort_key, ) @@ -146,7 +138,7 @@ class TestTaskList(TestTask): self.cmd.take_action(parsed_args) - self.client.tasks.assert_called_with( + self.image_client.tasks.assert_called_with( sort_dir=parsed_args.sort_dir, ) @@ -157,7 +149,7 @@ class TestTaskList(TestTask): self.cmd.take_action(parsed_args) - self.client.tasks.assert_called_with( + self.image_client.tasks.assert_called_with( limit=parsed_args.limit, marker=parsed_args.marker, ) @@ -169,7 +161,7 @@ class TestTaskList(TestTask): self.cmd.take_action(parsed_args) - self.client.tasks.assert_called_with( + self.image_client.tasks.assert_called_with( type=self.tasks[0].type, ) @@ -180,6 +172,6 @@ class TestTaskList(TestTask): self.cmd.take_action(parsed_args) - self.client.tasks.assert_called_with( + self.image_client.tasks.assert_called_with( status=self.tasks[0].status, ) diff --git a/openstackclient/tests/unit/volume/v1/test_volume.py b/openstackclient/tests/unit/volume/v1/test_volume.py index 60d6ead7c..b0af1da00 100644 --- a/openstackclient/tests/unit/volume/v1/test_volume.py +++ b/openstackclient/tests/unit/volume/v1/test_volume.py @@ -44,9 +44,8 @@ class TestVolume(volume_fakes.TestVolumev1): self.users_mock = self.app.client_manager.identity.users self.users_mock.reset_mock() - # Get a shortcut to the ImageManager Mock - self.images_mock = self.app.client_manager.image.images - self.images_mock.reset_mock() + self.app.client_manager.image = mock.Mock() + self.image_client = self.app.client_manager.image def setup_volumes_mock(self, count): volumes = volume_fakes.create_volumes(count=count) @@ -328,7 +327,7 @@ class TestVolumeCreate(TestVolume): def test_volume_create_image_id(self): image = image_fakes.create_one_image() - self.images_mock.get.return_value = image + self.image_client.find_image.return_value = image arglist = [ '--image', @@ -373,7 +372,7 @@ class TestVolumeCreate(TestVolume): def test_volume_create_image_name(self): image = image_fakes.create_one_image() - self.images_mock.get.return_value = image + self.image_client.find_image.return_value = image arglist = [ '--image', diff --git a/openstackclient/tests/unit/volume/v2/test_volume.py b/openstackclient/tests/unit/volume/v2/test_volume.py index 8a743725b..68ebf98c8 100644 --- a/openstackclient/tests/unit/volume/v2/test_volume.py +++ b/openstackclient/tests/unit/volume/v2/test_volume.py @@ -41,9 +41,6 @@ class TestVolume(volume_fakes.TestVolume): self.users_mock = self.app.client_manager.identity.users self.users_mock.reset_mock() - self.find_image_mock = self.app.client_manager.image.find_image - self.find_image_mock.reset_mock() - self.snapshots_mock = self.app.client_manager.volume.volume_snapshots self.snapshots_mock.reset_mock() @@ -58,6 +55,8 @@ class TestVolume(volume_fakes.TestVolume): ) self.consistencygroups_mock.reset_mock() + self.image_client = self.app.client_manager.image + def setup_volumes_mock(self, count): volumes = volume_fakes.create_volumes(count=count) @@ -233,7 +232,7 @@ class TestVolumeCreate(TestVolume): def test_volume_create_image_id(self): image = image_fakes.create_one_image() - self.find_image_mock.return_value = image + self.image_client.find_image.return_value = image arglist = [ '--image', @@ -274,7 +273,7 @@ class TestVolumeCreate(TestVolume): def test_volume_create_image_name(self): image = image_fakes.create_one_image() - self.find_image_mock.return_value = image + self.image_client.find_image.return_value = image arglist = [ '--image', diff --git a/openstackclient/volume/v1/volume.py b/openstackclient/volume/v1/volume.py index ec989f028..7c60d6c78 100644 --- a/openstackclient/volume/v1/volume.py +++ b/openstackclient/volume/v1/volume.py @@ -206,9 +206,9 @@ class CreateVolume(command.ShowOne): image = None if parsed_args.image: - image = utils.find_resource( - image_client.images, + image = image_client.find_image( parsed_args.image, + ignore_missing=False, ).id snapshot = parsed_args.snapshot or parsed_args.snapshot_id