From 950c4500e2f2bcff370146d88f016e6ef84e56ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awek=20Kap=C5=82o=C5=84ski?= Date: Sat, 22 Apr 2017 20:06:57 +0000 Subject: [PATCH] Remove neutronclient mocks from network create tests Neutronclient mock is replaced by mocking REST calls using base.RequestsMockTestCase class Change-Id: Ied57f41694d1c4f934439c52799f4c87794db0a5 --- shade/tests/unit/test_network.py | 196 ++++++++++++++++++++----------- 1 file changed, 126 insertions(+), 70 deletions(-) diff --git a/shade/tests/unit/test_network.py b/shade/tests/unit/test_network.py index 111c43d36..5893d8b4e 100644 --- a/shade/tests/unit/test_network.py +++ b/shade/tests/unit/test_network.py @@ -10,7 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import mock +import copy import testtools import shade @@ -19,6 +19,34 @@ from shade.tests.unit import base class TestNetwork(base.RequestsMockTestCase): + mock_new_network_rep = { + 'provider:physical_network': None, + 'ipv6_address_scope': None, + 'revision_number': 3, + 'port_security_enabled': True, + 'provider:network_type': 'local', + 'id': '881d1bb7-a663-44c0-8f9f-ee2765b74486', + 'router:external': False, + 'availability_zone_hints': [], + 'availability_zones': [], + 'provider:segmentation_id': None, + 'ipv4_address_scope': None, + 'shared': False, + 'project_id': '861808a93da0484ea1767967c4df8a23', + 'status': 'ACTIVE', + 'subnets': [], + 'description': '', + 'tags': [], + 'updated_at': '2017-04-22T19:22:53Z', + 'is_default': False, + 'qos_policy_id': None, + 'name': 'netname', + 'admin_state_up': True, + 'tenant_id': '861808a93da0484ea1767967c4df8a23', + 'created_at': '2017-04-22T19:22:53Z', + 'mtu': 0 + } + def test_list_networks(self): net1 = {'id': '1', 'name': 'net1'} net2 = {'id': '2', 'name': 'net2'} @@ -43,86 +71,114 @@ class TestNetwork(base.RequestsMockTestCase): self.cloud.list_networks(filters={'name': 'test'}) self.assert_calls() - @mock.patch.object(shade.OpenStackCloud, 'neutron_client') - def test_create_network(self, mock_neutron): - self.cloud.create_network("netname") - mock_neutron.create_network.assert_called_with( - body=dict( - network=dict( - name='netname', - admin_state_up=True - ) - ) - ) + def test_create_network(self): + self.register_uris([ + dict(method='POST', + uri=self.get_mock_url( + 'network', 'public', append=['v2.0', 'networks.json']), + json={'network': self.mock_new_network_rep}, + validate=dict( + json={'network': { + 'admin_state_up': True, + 'name': 'netname'}})) + ]) + network = self.cloud.create_network("netname") + self.assertEqual(self.mock_new_network_rep, network) + self.assert_calls() - @mock.patch.object(shade.OpenStackCloud, 'neutron_client') - def test_create_network_specific_tenant(self, mock_neutron): - self.cloud.create_network("netname", project_id="project_id_value") - mock_neutron.create_network.assert_called_with( - body=dict( - network=dict( - name='netname', - admin_state_up=True, - tenant_id="project_id_value", - ) - ) - ) + def test_create_network_specific_tenant(self): + project_id = "project_id_value" + mock_new_network_rep = copy.copy(self.mock_new_network_rep) + mock_new_network_rep['project_id'] = project_id + self.register_uris([ + dict(method='POST', + uri=self.get_mock_url( + 'network', 'public', append=['v2.0', 'networks.json']), + json={'network': mock_new_network_rep}, + validate=dict( + json={'network': { + 'admin_state_up': True, + 'name': 'netname', + 'tenant_id': project_id}})) + ]) + network = self.cloud.create_network("netname", project_id=project_id) + self.assertEqual(mock_new_network_rep, network) + self.assert_calls() - @mock.patch.object(shade.OpenStackCloud, 'neutron_client') - def test_create_network_external(self, mock_neutron): - self.cloud.create_network("netname", external=True) - mock_neutron.create_network.assert_called_with( - body=dict( - network={ - 'name': 'netname', - 'admin_state_up': True, - 'router:external': True - } - ) - ) + def test_create_network_external(self): + mock_new_network_rep = copy.copy(self.mock_new_network_rep) + mock_new_network_rep['router:external'] = True + self.register_uris([ + dict(method='POST', + uri=self.get_mock_url( + 'network', 'public', append=['v2.0', 'networks.json']), + json={'network': mock_new_network_rep}, + validate=dict( + json={'network': { + 'admin_state_up': True, + 'name': 'netname', + 'router:external': True}})) + ]) + network = self.cloud.create_network("netname", external=True) + self.assertEqual(mock_new_network_rep, network) + self.assert_calls() - @mock.patch.object(shade.OpenStackCloud, 'neutron_client') - def test_create_network_provider(self, mock_neutron): + def test_create_network_provider(self): provider_opts = {'physical_network': 'mynet', 'network_type': 'vlan', 'segmentation_id': 'vlan1'} - self.cloud.create_network("netname", provider=provider_opts) - mock_neutron.create_network.assert_called_once_with( - body=dict( - network={ - 'name': 'netname', - 'admin_state_up': True, - 'provider:physical_network': - provider_opts['physical_network'], - 'provider:network_type': - provider_opts['network_type'], - 'provider:segmentation_id': - provider_opts['segmentation_id'], - } - ) - ) + new_network_provider_opts = { + 'provider:physical_network': 'mynet', + 'provider:network_type': 'vlan', + 'provider:segmentation_id': 'vlan1' + } + mock_new_network_rep = copy.copy(self.mock_new_network_rep) + mock_new_network_rep.update(new_network_provider_opts) + expected_send_params = { + 'admin_state_up': True, + 'name': 'netname' + } + expected_send_params.update(new_network_provider_opts) + self.register_uris([ + dict(method='POST', + uri=self.get_mock_url( + 'network', 'public', append=['v2.0', 'networks.json']), + json={'network': mock_new_network_rep}, + validate=dict( + json={'network': expected_send_params})) + ]) + network = self.cloud.create_network("netname", provider=provider_opts) + self.assertEqual(mock_new_network_rep, network) + self.assert_calls() - @mock.patch.object(shade.OpenStackCloud, 'neutron_client') - def test_create_network_provider_ignored_value(self, mock_neutron): + def test_create_network_provider_ignored_value(self): provider_opts = {'physical_network': 'mynet', 'network_type': 'vlan', 'segmentation_id': 'vlan1', 'should_not_be_passed': 1} - self.cloud.create_network("netname", provider=provider_opts) - mock_neutron.create_network.assert_called_once_with( - body=dict( - network={ - 'name': 'netname', - 'admin_state_up': True, - 'provider:physical_network': - provider_opts['physical_network'], - 'provider:network_type': - provider_opts['network_type'], - 'provider:segmentation_id': - provider_opts['segmentation_id'], - } - ) - ) + new_network_provider_opts = { + 'provider:physical_network': 'mynet', + 'provider:network_type': 'vlan', + 'provider:segmentation_id': 'vlan1' + } + mock_new_network_rep = copy.copy(self.mock_new_network_rep) + mock_new_network_rep.update(new_network_provider_opts) + expected_send_params = { + 'admin_state_up': True, + 'name': 'netname' + } + expected_send_params.update(new_network_provider_opts) + self.register_uris([ + dict(method='POST', + uri=self.get_mock_url( + 'network', 'public', append=['v2.0', 'networks.json']), + json={'network': mock_new_network_rep}, + validate=dict( + json={'network': expected_send_params})) + ]) + network = self.cloud.create_network("netname", provider=provider_opts) + self.assertEqual(mock_new_network_rep, network) + self.assert_calls() def test_create_network_provider_wrong_type(self): provider_opts = "invalid"