From da7f7ccb2165b24e00eb749ad099611efafc391a Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Fri, 24 Mar 2017 08:37:31 -0500 Subject: [PATCH] Fix old-style mocking of nova_client When we assign to nova_client, rather than using the decorator form, it persists through the process lifetime, which pollutes other tests. This shows up when you start trying to replace nova_client mocks with requests_mock. Change-Id: I056085c9b80868a78c95ddda0aeae11865015ad1 --- shade/tests/unit/test_create_server.py | 251 ++++++++---------- shade/tests/unit/test_rebuild_server.py | 162 +++++------ .../tests/unit/test_server_delete_metadata.py | 34 +-- shade/tests/unit/test_server_set_metadata.py | 34 +-- shade/tests/unit/test_update_server.py | 51 ++-- 5 files changed, 235 insertions(+), 297 deletions(-) diff --git a/shade/tests/unit/test_create_server.py b/shade/tests/unit/test_create_server.py index fc483c731..0e4816f8c 100644 --- a/shade/tests/unit/test_create_server.py +++ b/shade/tests/unit/test_create_server.py @@ -17,7 +17,6 @@ test_create_server Tests for the `create_server` command. """ -from mock import patch, Mock import mock from shade import meta from shade import OpenStackCloud @@ -28,148 +27,126 @@ from shade.tests.unit import base class TestCreateServer(base.RequestsMockTestCase): - def test_create_server_with_create_exception(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_create_server_with_create_exception(self, mock_nova): """ Test that an exception in the novaclient create raises an exception in create_server. """ - with patch("shade.OpenStackCloud.nova_client"): - config = { - "servers.create.side_effect": Exception("exception"), - } - OpenStackCloud.nova_client = Mock(**config) - self.assertRaises( - OpenStackCloudException, self.cloud.create_server, - 'server-name', {'id': 'image-id'}, {'id': 'flavor-id'}) + mock_nova.servers.create.side_effect = Exception("exception") + self.assertRaises( + OpenStackCloudException, self.cloud.create_server, + 'server-name', {'id': 'image-id'}, {'id': 'flavor-id'}) - def test_create_server_with_get_exception(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_create_server_with_get_exception(self, mock_nova): """ Test that an exception when attempting to get the server instance via the novaclient raises an exception in create_server. """ - with patch("shade.OpenStackCloud.nova_client"): - config = { - "servers.create.return_value": Mock(status="BUILD"), - "servers.get.side_effect": Exception("exception") - } - OpenStackCloud.nova_client = Mock(**config) - self.assertRaises( - OpenStackCloudException, self.cloud.create_server, - 'server-name', {'id': 'image-id'}, {'id': 'flavor-id'}) + mock_nova.servers.create.return_value = mock.Mock(status="BUILD") + mock_nova.servers.get.side_effect = Exception("exception") + self.assertRaises( + OpenStackCloudException, self.cloud.create_server, + 'server-name', {'id': 'image-id'}, {'id': 'flavor-id'}) - def test_create_server_with_server_error(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_create_server_with_server_error(self, mock_nova): """ Test that a server error before we return or begin waiting for the server instance spawn raises an exception in create_server. """ build_server = fakes.FakeServer('1234', '', 'BUILD') error_server = fakes.FakeServer('1234', '', 'ERROR') - with patch("shade.OpenStackCloud.nova_client"): - config = { - "servers.create.return_value": build_server, - "servers.get.return_value": error_server, - } - OpenStackCloud.nova_client = Mock(**config) - self.assertRaises( - OpenStackCloudException, self.cloud.create_server, - 'server-name', {'id': 'image-id'}, {'id': 'flavor-id'}) + mock_nova.servers.create.return_value = build_server + mock_nova.servers.get.return_value = error_server + self.assertRaises( + OpenStackCloudException, self.cloud.create_server, + 'server-name', {'id': 'image-id'}, {'id': 'flavor-id'}) - def test_create_server_wait_server_error(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_create_server_wait_server_error(self, mock_nova): """ Test that a server error while waiting for the server to spawn raises an exception in create_server. """ - with patch("shade.OpenStackCloud.nova_client"): - build_server = fakes.FakeServer('1234', '', 'BUILD') - error_server = fakes.FakeServer('1234', '', 'ERROR') - fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', - '1.1.1.1', '2.2.2.2', - '5678') - config = { - "servers.create.return_value": build_server, - "servers.get.return_value": build_server, - "servers.list.side_effect": [ - [build_server], [error_server]], - "floating_ips.list.return_value": [fake_floating_ip] - } - OpenStackCloud.nova_client = Mock(**config) - self.assertRaises( - OpenStackCloudException, - self.cloud.create_server, - 'server-name', dict(id='image-id'), - dict(id='flavor-id'), wait=True) + build_server = fakes.FakeServer('1234', '', 'BUILD') + error_server = fakes.FakeServer('1234', '', 'ERROR') + fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', + '1.1.1.1', '2.2.2.2', + '5678') + mock_nova.servers.create.return_value = build_server + mock_nova.servers.get.return_value = build_server + mock_nova.servers.list.side_effect = [[build_server], [error_server]] + mock_nova.floating_ips.list.return_value = [fake_floating_ip] + self.assertRaises( + OpenStackCloudException, + self.cloud.create_server, + 'server-name', dict(id='image-id'), + dict(id='flavor-id'), wait=True) - def test_create_server_with_timeout(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_create_server_with_timeout(self, mock_nova): """ Test that a timeout while waiting for the server to spawn raises an exception in create_server. """ - with patch("shade.OpenStackCloud.nova_client"): - fake_server = fakes.FakeServer('1234', '', 'BUILD') - config = { - "servers.create.return_value": fake_server, - "servers.get.return_value": fake_server, - "servers.list.return_value": [fake_server], - } - OpenStackCloud.nova_client = Mock(**config) - self.assertRaises( - OpenStackCloudTimeout, - self.cloud.create_server, - 'server-name', - dict(id='image-id'), dict(id='flavor-id'), - wait=True, timeout=0.01) + fake_server = fakes.FakeServer('1234', '', 'BUILD') + mock_nova.servers.create.return_value = fake_server + mock_nova.servers.get.return_value = fake_server + mock_nova.servers.list.return_value = [fake_server] + self.assertRaises( + OpenStackCloudTimeout, + self.cloud.create_server, + 'server-name', + dict(id='image-id'), dict(id='flavor-id'), + wait=True, timeout=0.01) - def test_create_server_no_wait(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_create_server_no_wait(self, mock_nova): """ Test that create_server with no wait and no exception in the novaclient create call returns the server instance. """ - with patch("shade.OpenStackCloud.nova_client"): - fake_server = fakes.FakeServer('1234', '', 'BUILD') - fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', - '1.1.1.1', '2.2.2.2', - '5678') - config = { - "servers.create.return_value": fake_server, - "servers.get.return_value": fake_server, - "floating_ips.list.return_value": [fake_floating_ip] - } - OpenStackCloud.nova_client = Mock(**config) - self.assertEqual( - self.cloud._normalize_server( - meta.obj_to_dict(fake_server)), - self.cloud.create_server( - name='server-name', - image=dict(id='image=id'), - flavor=dict(id='flavor-id'))) + fake_server = fakes.FakeServer('1234', '', 'BUILD') + fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', + '1.1.1.1', '2.2.2.2', + '5678') + mock_nova.servers.create.return_value = fake_server + mock_nova.servers.get.return_value = fake_server + mock_nova.floating_ips.list.return_value = [fake_floating_ip] + self.assertEqual( + self.cloud._normalize_server( + meta.obj_to_dict(fake_server)), + self.cloud.create_server( + name='server-name', + image=dict(id='image=id'), + flavor=dict(id='flavor-id'))) - def test_create_server_with_admin_pass_no_wait(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_create_server_with_admin_pass_no_wait(self, mock_nova): """ Test that a server with an admin_pass passed returns the password """ - with patch("shade.OpenStackCloud.nova_client"): - fake_server = fakes.FakeServer('1234', '', 'BUILD') - fake_create_server = fakes.FakeServer('1234', '', 'BUILD', - adminPass='ooBootheiX0edoh') - fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', - '1.1.1.1', '2.2.2.2', - '5678') - config = { - "servers.create.return_value": fake_create_server, - "servers.get.return_value": fake_server, - "floating_ips.list.return_value": [fake_floating_ip] - } - OpenStackCloud.nova_client = Mock(**config) - self.assertEqual( - self.cloud._normalize_server( - meta.obj_to_dict(fake_create_server)), - self.cloud.create_server( - name='server-name', image=dict(id='image=id'), - flavor=dict(id='flavor-id'), admin_pass='ooBootheiX0edoh')) + fake_server = fakes.FakeServer('1234', '', 'BUILD') + fake_create_server = fakes.FakeServer('1234', '', 'BUILD', + adminPass='ooBootheiX0edoh') + fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', + '1.1.1.1', '2.2.2.2', + '5678') + mock_nova.servers.create.return_value = fake_create_server + mock_nova.servers.get.return_value = fake_server + mock_nova.floating_ips.list.return_value = [fake_floating_ip] + self.assertEqual( + self.cloud._normalize_server( + meta.obj_to_dict(fake_create_server)), + self.cloud.create_server( + name='server-name', image=dict(id='image=id'), + flavor=dict(id='flavor-id'), admin_pass='ooBootheiX0edoh')) - @patch.object(OpenStackCloud, "wait_for_server") - @patch.object(OpenStackCloud, "nova_client") + @mock.patch.object(OpenStackCloud, "wait_for_server") + @mock.patch.object(OpenStackCloud, "nova_client") def test_create_server_with_admin_pass_wait(self, mock_nova, mock_wait): """ Test that a server with an admin_pass passed returns the password @@ -199,8 +176,8 @@ class TestCreateServer(base.RequestsMockTestCase): meta.obj_to_dict(fake_server_with_pass)) ) - @patch.object(OpenStackCloud, "get_active_server") - @patch.object(OpenStackCloud, "get_server") + @mock.patch.object(OpenStackCloud, "get_active_server") + @mock.patch.object(OpenStackCloud, "get_server") def test_wait_for_server(self, mock_get_server, mock_get_active_server): """ Test that waiting for a server returns the server instance when @@ -233,8 +210,8 @@ class TestCreateServer(base.RequestsMockTestCase): self.assertEqual('ACTIVE', server['status']) - @patch.object(OpenStackCloud, 'wait_for_server') - @patch.object(OpenStackCloud, 'nova_client') + @mock.patch.object(OpenStackCloud, 'wait_for_server') + @mock.patch.object(OpenStackCloud, 'nova_client') def test_create_server_wait(self, mock_nova, mock_wait): """ Test that create_server with a wait actually does the wait. @@ -252,37 +229,35 @@ class TestCreateServer(base.RequestsMockTestCase): nat_destination=None, ) - @patch('time.sleep') - def test_create_server_no_addresses(self, mock_sleep): + @mock.patch.object(OpenStackCloud, 'add_ips_to_server') + @mock.patch.object(OpenStackCloud, 'nova_client') + @mock.patch('time.sleep') + def test_create_server_no_addresses( + self, mock_sleep, mock_nova, mock_add_ips_to_server): """ Test that create_server with a wait throws an exception if the server doesn't have addresses. """ - with patch("shade.OpenStackCloud.nova_client"): - build_server = fakes.FakeServer('1234', '', 'BUILD') - fake_server = fakes.FakeServer('1234', '', 'ACTIVE') - fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', - '1.1.1.1', '2.2.2.2', - '5678') - config = { - "servers.create.return_value": build_server, - "servers.get.return_value": [build_server, None], - "servers.list.side_effect": [ - [build_server], [fake_server]], - "servers.delete.return_value": None, - "floating_ips.list.return_value": [fake_floating_ip] - } - OpenStackCloud.nova_client = Mock(**config) - self.cloud._SERVER_AGE = 0 - with patch.object(OpenStackCloud, "add_ips_to_server", - return_value=fake_server): - self.assertRaises( - OpenStackCloudException, self.cloud.create_server, - 'server-name', {'id': 'image-id'}, {'id': 'flavor-id'}, - wait=True) + build_server = fakes.FakeServer('1234', '', 'BUILD') + fake_server = fakes.FakeServer('1234', '', 'ACTIVE') + fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', + '1.1.1.1', '2.2.2.2', + '5678') + mock_nova.servers.create.return_value = build_server + mock_nova.servers.get.return_value = [build_server, None] + mock_nova.servers.list.side_effect = [[build_server], [fake_server]] + mock_nova.servers.delete.return_value = None + mock_nova.floating_ips.list.return_value = [fake_floating_ip] + mock_add_ips_to_server.return_value = fake_server + self.cloud._SERVER_AGE = 0 - @patch('shade.OpenStackCloud.nova_client') - @patch('shade.OpenStackCloud.get_network') + self.assertRaises( + OpenStackCloudException, self.cloud.create_server, + 'server-name', {'id': 'image-id'}, {'id': 'flavor-id'}, + wait=True) + + @mock.patch('shade.OpenStackCloud.nova_client') + @mock.patch('shade.OpenStackCloud.get_network') def test_create_server_network_with_no_nics(self, mock_get_network, mock_nova): """ @@ -294,8 +269,8 @@ class TestCreateServer(base.RequestsMockTestCase): dict(id='image-id'), dict(id='flavor-id'), network='network-name') mock_get_network.assert_called_once_with(name_or_id='network-name') - @patch('shade.OpenStackCloud.nova_client') - @patch('shade.OpenStackCloud.get_network') + @mock.patch('shade.OpenStackCloud.nova_client') + @mock.patch('shade.OpenStackCloud.get_network') def test_create_server_network_with_empty_nics(self, mock_get_network, mock_nova): diff --git a/shade/tests/unit/test_rebuild_server.py b/shade/tests/unit/test_rebuild_server.py index 3d461d28d..dc28a73ad 100644 --- a/shade/tests/unit/test_rebuild_server.py +++ b/shade/tests/unit/test_rebuild_server.py @@ -19,7 +19,8 @@ test_rebuild_server Tests for the `rebuild_server` command. """ -from mock import patch, Mock +import mock + from shade import meta from shade import OpenStackCloud from shade.exc import (OpenStackCloudException, OpenStackCloudTimeout) @@ -29,20 +30,18 @@ from shade.tests.unit import base class TestRebuildServer(base.TestCase): - def test_rebuild_server_rebuild_exception(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_rebuild_server_rebuild_exception(self, mock_nova): """ Test that an exception in the novaclient rebuild raises an exception in rebuild_server. """ - with patch("shade.OpenStackCloud"): - config = { - "servers.rebuild.side_effect": Exception("exception"), - } - OpenStackCloud.nova_client = Mock(**config) - self.assertRaises( - OpenStackCloudException, self.cloud.rebuild_server, "a", "b") + mock_nova.servers.rebuild.side_effect = Exception("exception") + self.assertRaises( + OpenStackCloudException, self.cloud.rebuild_server, "a", "b") - def test_rebuild_server_server_error(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_rebuild_server_server_error(self, mock_nova): """ Test that a server error while waiting for the server to rebuild raises an exception in rebuild_server. @@ -52,108 +51,89 @@ class TestRebuildServer(base.TestCase): fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', '1.1.1.1', '2.2.2.2', '5678') - with patch("shade.OpenStackCloud"): - config = { - "servers.rebuild.return_value": rebuild_server, - "servers.list.return_value": [error_server], - "floating_ips.list.return_value": [fake_floating_ip] - } - OpenStackCloud.nova_client = Mock(**config) - self.assertRaises( - OpenStackCloudException, - self.cloud.rebuild_server, "1234", "b", wait=True) + mock_nova.servers.rebuild.return_value = rebuild_server + mock_nova.servers.list.return_value = [error_server] + mock_nova.floating_ips.list.return_value = [fake_floating_ip] + self.assertRaises( + OpenStackCloudException, + self.cloud.rebuild_server, "1234", "b", wait=True) - def test_rebuild_server_timeout(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_rebuild_server_timeout(self, mock_nova): """ Test that a timeout while waiting for the server to rebuild raises an exception in rebuild_server. """ rebuild_server = fakes.FakeServer('1234', '', 'REBUILD') - with patch("shade.OpenStackCloud"): - config = { - "servers.rebuild.return_value": rebuild_server, - "servers.list.return_value": [rebuild_server], - } - OpenStackCloud.nova_client = Mock(**config) - self.assertRaises( - OpenStackCloudTimeout, - self.cloud.rebuild_server, "a", "b", wait=True, timeout=0.001) + mock_nova.servers.rebuild.return_value = rebuild_server + mock_nova.servers.list.return_value = [rebuild_server] + self.assertRaises( + OpenStackCloudTimeout, + self.cloud.rebuild_server, "a", "b", wait=True, timeout=0.001) - def test_rebuild_server_no_wait(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_rebuild_server_no_wait(self, mock_nova): """ Test that rebuild_server with no wait and no exception in the novaclient rebuild call returns the server instance. """ - with patch("shade.OpenStackCloud"): - rebuild_server = fakes.FakeServer('1234', '', 'REBUILD') - config = { - "servers.rebuild.return_value": rebuild_server - } - OpenStackCloud.nova_client = Mock(**config) - self.assertEqual(meta.obj_to_dict(rebuild_server), - self.cloud.rebuild_server("a", "b")) + rebuild_server = fakes.FakeServer('1234', '', 'REBUILD') + mock_nova.servers.rebuild.return_value = rebuild_server + self.assertEqual(meta.obj_to_dict(rebuild_server), + self.cloud.rebuild_server("a", "b")) - def test_rebuild_server_with_admin_pass_no_wait(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_rebuild_server_with_admin_pass_no_wait(self, mock_nova): """ Test that a server with an admin_pass passed returns the password """ - with patch("shade.OpenStackCloud"): - rebuild_server = fakes.FakeServer('1234', '', 'REBUILD', - adminPass='ooBootheiX0edoh') - config = { - "servers.rebuild.return_value": rebuild_server, - } - OpenStackCloud.nova_client = Mock(**config) - self.assertEqual( - meta.obj_to_dict(rebuild_server), - self.cloud.rebuild_server( - 'a', 'b', admin_pass='ooBootheiX0edoh')) + rebuild_server = fakes.FakeServer('1234', '', 'REBUILD', + adminPass='ooBootheiX0edoh') + mock_nova.servers.rebuild.return_value = rebuild_server + self.assertEqual( + meta.obj_to_dict(rebuild_server), + self.cloud.rebuild_server( + 'a', 'b', admin_pass='ooBootheiX0edoh')) - def test_rebuild_server_with_admin_pass_wait(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_rebuild_server_with_admin_pass_wait(self, mock_nova): """ Test that a server with an admin_pass passed returns the password """ - with patch("shade.OpenStackCloud"): - rebuild_server = fakes.FakeServer('1234', '', 'REBUILD', - adminPass='ooBootheiX0edoh') - active_server = fakes.FakeServer('1234', '', 'ACTIVE') - ret_active_server = fakes.FakeServer('1234', '', 'ACTIVE', - adminPass='ooBootheiX0edoh') - fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', - '1.1.1.1', '2.2.2.2', - '5678') - config = { - "servers.rebuild.return_value": rebuild_server, - "servers.list.return_value": [active_server], - "floating_ips.list.return_value": [fake_floating_ip] - } - OpenStackCloud.nova_client = Mock(**config) - self.cloud.name = 'cloud-name' - self.assertEqual( - self.cloud._normalize_server( - meta.obj_to_dict(ret_active_server)), - self.cloud.rebuild_server( - "1234", "b", wait=True, admin_pass='ooBootheiX0edoh')) + rebuild_server = fakes.FakeServer('1234', '', 'REBUILD', + adminPass='ooBootheiX0edoh') + active_server = fakes.FakeServer('1234', '', 'ACTIVE') + ret_active_server = fakes.FakeServer('1234', '', 'ACTIVE', + adminPass='ooBootheiX0edoh') + fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', + '1.1.1.1', '2.2.2.2', + '5678') + mock_nova.servers.rebuild.return_value = rebuild_server + mock_nova.servers.list.return_value = [active_server] + mock_nova.floating_ips.list.return_value = [fake_floating_ip] + self.cloud.name = 'cloud-name' + self.assertEqual( + self.cloud._normalize_server( + meta.obj_to_dict(ret_active_server)), + self.cloud.rebuild_server( + "1234", "b", wait=True, admin_pass='ooBootheiX0edoh')) - def test_rebuild_server_wait(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_rebuild_server_wait(self, mock_nova): """ Test that rebuild_server with a wait returns the server instance when its status changes to "ACTIVE". """ - with patch("shade.OpenStackCloud"): - rebuild_server = fakes.FakeServer('1234', '', 'REBUILD') - active_server = fakes.FakeServer('1234', '', 'ACTIVE') - fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', - '1.1.1.1', '2.2.2.2', - '5678') - config = { - "servers.rebuild.return_value": rebuild_server, - "servers.list.return_value": [active_server], - "floating_ips.list.return_value": [fake_floating_ip] - } - OpenStackCloud.nova_client = Mock(**config) - self.cloud.name = 'cloud-name' - self.assertEqual( - self.cloud._normalize_server( - meta.obj_to_dict(active_server)), - self.cloud.rebuild_server("1234", "b", wait=True)) + rebuild_server = fakes.FakeServer('1234', '', 'REBUILD') + active_server = fakes.FakeServer('1234', '', 'ACTIVE') + fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', + '1.1.1.1', '2.2.2.2', + '5678') + mock_nova.servers.rebuild.return_value = rebuild_server + mock_nova.servers.list.return_value = [active_server] + mock_nova.floating_ips.list.return_value = [fake_floating_ip] + self.cloud.name = 'cloud-name' + self.assertEqual( + self.cloud._normalize_server( + meta.obj_to_dict(active_server)), + self.cloud.rebuild_server("1234", "b", wait=True)) diff --git a/shade/tests/unit/test_server_delete_metadata.py b/shade/tests/unit/test_server_delete_metadata.py index 3ba7da8a5..b34cf507f 100644 --- a/shade/tests/unit/test_server_delete_metadata.py +++ b/shade/tests/unit/test_server_delete_metadata.py @@ -17,7 +17,8 @@ test_server_delete_metadata Tests for the `delete_server_metadata` command. """ -from mock import patch, Mock +import mock + from shade import OpenStackCloud from shade.exc import OpenStackCloudException from shade.tests.unit import base @@ -25,33 +26,26 @@ from shade.tests.unit import base class TestServerDeleteMetadata(base.TestCase): - def test_server_delete_metadata_with_delete_meta_exception(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_server_delete_metadata_with_exception(self, mock_nova): """ Test that a generic exception in the novaclient delete_meta raises an exception in delete_server_metadata. """ - with patch("shade.OpenStackCloud"): - config = { - "servers.delete_meta.side_effect": Exception("exception"), - } - OpenStackCloud.nova_client = Mock(**config) + mock_nova.servers.delete_meta.side_effect = Exception("exception") - self.assertRaises( - OpenStackCloudException, self.cloud.delete_server_metadata, - {'id': 'server-id'}, ['key']) + self.assertRaises( + OpenStackCloudException, self.cloud.delete_server_metadata, + {'id': 'server-id'}, ['key']) - def test_server_delete_metadata_with_exception_reraise(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_server_delete_metadata_with_exception_reraise(self, mock_nova): """ Test that an OpenStackCloudException exception gets re-raised in delete_server_metadata. """ - with patch("shade.OpenStackCloud"): - config = { - "servers.delete_meta.side_effect": - OpenStackCloudException("exception"), - } - OpenStackCloud.nova_client = Mock(**config) + mock_nova.servers.delete_meta.side_effect = OpenStackCloudException("") - self.assertRaises( - OpenStackCloudException, self.cloud.delete_server_metadata, - 'server-id', ['key']) + self.assertRaises( + OpenStackCloudException, self.cloud.delete_server_metadata, + 'server-id', ['key']) diff --git a/shade/tests/unit/test_server_set_metadata.py b/shade/tests/unit/test_server_set_metadata.py index a4257d7a7..a892cddaf 100644 --- a/shade/tests/unit/test_server_set_metadata.py +++ b/shade/tests/unit/test_server_set_metadata.py @@ -17,7 +17,8 @@ test_server_set_metadata Tests for the `set_server_metadata` command. """ -from mock import patch, Mock +import mock + from shade import OpenStackCloud from shade.exc import OpenStackCloudException from shade.tests.unit import base @@ -25,33 +26,26 @@ from shade.tests.unit import base class TestServerSetMetadata(base.TestCase): - def test_server_set_metadata_with_set_meta_exception(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_server_set_metadata_with_set_meta_exception(self, mock_nova): """ Test that a generic exception in the novaclient set_meta raises an exception in set_server_metadata. """ - with patch("shade.OpenStackCloud"): - config = { - "servers.set_meta.side_effect": Exception("exception"), - } - OpenStackCloud.nova_client = Mock(**config) + mock_nova.servers.set_meta.side_effect = Exception("exception") - self.assertRaises( - OpenStackCloudException, self.cloud.set_server_metadata, - {'id': 'server-id'}, {'meta': 'data'}) + self.assertRaises( + OpenStackCloudException, self.cloud.set_server_metadata, + {'id': 'server-id'}, {'meta': 'data'}) - def test_server_set_metadata_with_exception_reraise(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_server_set_metadata_with_exception_reraise(self, mock_nova): """ Test that an OpenStackCloudException exception gets re-raised in set_server_metadata. """ - with patch("shade.OpenStackCloud"): - config = { - "servers.set_meta.side_effect": - OpenStackCloudException("exception"), - } - OpenStackCloud.nova_client = Mock(**config) + mock_nova.servers.set_meta.side_effect = OpenStackCloudException("") - self.assertRaises( - OpenStackCloudException, self.cloud.set_server_metadata, - 'server-id', {'meta': 'data'}) + self.assertRaises( + OpenStackCloudException, self.cloud.set_server_metadata, + 'server-id', {'meta': 'data'}) diff --git a/shade/tests/unit/test_update_server.py b/shade/tests/unit/test_update_server.py index 28e311ddc..6c503d33b 100644 --- a/shade/tests/unit/test_update_server.py +++ b/shade/tests/unit/test_update_server.py @@ -17,7 +17,8 @@ test_update_server Tests for the `update_server` command. """ -from mock import patch, Mock +import mock + from shade import OpenStackCloud from shade.exc import OpenStackCloudException from shade.tests import fakes @@ -26,38 +27,32 @@ from shade.tests.unit import base class TestUpdateServer(base.TestCase): - def test_update_server_with_update_exception(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_update_server_with_update_exception(self, mock_nova): """ Test that an exception in the novaclient update raises an exception in update_server. """ - with patch("shade.OpenStackCloud"): - config = { - "servers.update.side_effect": Exception("exception"), - } - OpenStackCloud.nova_client = Mock(**config) - self.assertRaises( - OpenStackCloudException, self.cloud.update_server, - 'server-name') + mock_nova.servers.update.side_effect = Exception("exception") + self.assertRaises( + OpenStackCloudException, self.cloud.update_server, + 'server-name') - def test_update_server_name(self): + @mock.patch.object(OpenStackCloud, 'nova_client') + def test_update_server_name(self, mock_nova): """ Test that update_server updates the name without raising any exception """ - with patch("shade.OpenStackCloud"): - fake_server = fakes.FakeServer('1234', 'server-name', 'ACTIVE') - fake_update_server = fakes.FakeServer('1234', 'server-name2', - 'ACTIVE') - fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', - '1.1.1.1', '2.2.2.2', - '5678') - config = { - "servers.list.return_value": [fake_server], - "servers.update.return_value": fake_update_server, - "floating_ips.list.return_value": [fake_floating_ip] - } - OpenStackCloud.nova_client = Mock(**config) - self.assertEqual( - 'server-name2', - self.cloud.update_server( - 'server-name', name='server-name2')['name']) + fake_server = fakes.FakeServer('1234', 'server-name', 'ACTIVE') + fake_update_server = fakes.FakeServer('1234', 'server-name2', + 'ACTIVE') + fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool', + '1.1.1.1', '2.2.2.2', + '5678') + mock_nova.servers.list.return_value = [fake_server] + mock_nova.servers.update.return_value = fake_update_server + mock_nova.floating_ips.list.return_value = [fake_floating_ip] + self.assertEqual( + 'server-name2', + self.cloud.update_server( + 'server-name', name='server-name2')['name'])