From 8a26bedc9fa092a920320627ac180cc02e911a85 Mon Sep 17 00:00:00 2001 From: Akihiro Motoki Date: Mon, 14 May 2018 04:08:35 +0900 Subject: [PATCH] Convert admin.networks.agents tests into mock blueprint mock-framework-in-unit-tests Change-Id: I649c4cf5584c89caeae364159719d9de88d7b6fd --- .../dashboards/admin/networks/agents/tests.py | 164 ++++++++++-------- 1 file changed, 88 insertions(+), 76 deletions(-) diff --git a/openstack_dashboard/dashboards/admin/networks/agents/tests.py b/openstack_dashboard/dashboards/admin/networks/agents/tests.py index e00705984e..78d19396ad 100644 --- a/openstack_dashboard/dashboards/admin/networks/agents/tests.py +++ b/openstack_dashboard/dashboards/admin/networks/agents/tests.py @@ -13,10 +13,9 @@ # License for the specific language governing permissions and limitations # under the License. -from django import http from django.urls import reverse -from mox3.mox import IsA +import mock from openstack_dashboard import api from openstack_dashboard.test import helpers as test @@ -26,21 +25,15 @@ NETWORKS_DETAIL_URL = 'horizon:admin:networks:detail' class NetworkAgentTests(test.BaseAdminViewTests): - use_mox = True - - @test.create_stubs({api.neutron: ('agent_list', + @test.create_mocks({api.neutron: ('agent_list', 'network_get', 'list_dhcp_agent_hosting_networks',)}) def test_agent_add_get(self): network = self.networks.first() - api.neutron.agent_list(IsA(http.HttpRequest), agent_type='DHCP agent')\ - .AndReturn(self.agents.list()) - api.neutron.network_get(IsA(http.HttpRequest), network.id)\ - .AndReturn(network) - api.neutron.list_dhcp_agent_hosting_networks(IsA(http.HttpRequest), - network.id)\ - .AndReturn(self.agents.list()) - self.mox.ReplayAll() + self.mock_agent_list.return_value = self.agents.list() + self.mock_network_get.return_value = network + self.mock_list_dhcp_agent_hosting_networks.return_value = \ + self.agents.list() url = reverse('horizon:admin:networks:adddhcpagent', args=[network.id]) @@ -48,24 +41,26 @@ class NetworkAgentTests(test.BaseAdminViewTests): self.assertTemplateUsed(res, 'admin/networks/agents/add.html') - @test.create_stubs({api.neutron: ('agent_list', + self.mock_agent_list.assert_called_once_with(test.IsHttpRequest(), + agent_type='DHCP agent') + self.mock_network_get.assert_called_once_with(test.IsHttpRequest(), + network.id) + self.mock_list_dhcp_agent_hosting_networks.assert_called_once_with( + test.IsHttpRequest(), network.id) + + @test.create_mocks({api.neutron: ('agent_list', 'network_get', 'list_dhcp_agent_hosting_networks', 'add_network_to_dhcp_agent',)}) def test_agent_add_post(self): network = self.networks.first() agent_id = self.agents.first().id - api.neutron.list_dhcp_agent_hosting_networks(IsA(http.HttpRequest), - network.id)\ - .AndReturn([self.agents.list()[1]]) - api.neutron.network_get(IsA(http.HttpRequest), network.id)\ - .AndReturn(network) - api.neutron.agent_list(IsA(http.HttpRequest), agent_type='DHCP agent')\ - .AndReturn(self.agents.list()) - api.neutron.add_network_to_dhcp_agent(IsA(http.HttpRequest), - agent_id, network.id)\ - .AndReturn(True) - self.mox.ReplayAll() + + self.mock_list_dhcp_agent_hosting_networks.return_value = \ + [self.agents.list()[1]] + self.mock_network_get.return_value = network + self.mock_agent_list.return_value = self.agents.list() + self.mock_add_network_to_dhcp_agent.return_value = True form_data = {'network_id': network.id, 'network_name': network.name, @@ -78,24 +73,28 @@ class NetworkAgentTests(test.BaseAdminViewTests): redir_url = reverse(NETWORKS_DETAIL_URL, args=[network.id]) self.assertRedirectsNoFollow(res, redir_url) - @test.create_stubs({api.neutron: ('agent_list', + self.mock_list_dhcp_agent_hosting_networks.assert_called_once_with( + test.IsHttpRequest(), network.id) + self.mock_network_get.assert_called_once_with(test.IsHttpRequest(), + network.id) + self.mock_agent_list.assert_called_once_with(test.IsHttpRequest(), + agent_type='DHCP agent') + self.mock_add_network_to_dhcp_agent.assert_called_once_with( + test.IsHttpRequest(), agent_id, network.id) + + @test.create_mocks({api.neutron: ('agent_list', 'network_get', 'list_dhcp_agent_hosting_networks', 'add_network_to_dhcp_agent',)}) def test_agent_add_post_exception(self): network = self.networks.first() agent_id = self.agents.first().id - api.neutron.list_dhcp_agent_hosting_networks(IsA(http.HttpRequest), - network.id)\ - .AndReturn([self.agents.list()[1]]) - api.neutron.network_get(IsA(http.HttpRequest), network.id)\ - .AndReturn(network) - api.neutron.agent_list(IsA(http.HttpRequest), agent_type='DHCP agent')\ - .AndReturn(self.agents.list()) - api.neutron.add_network_to_dhcp_agent(IsA(http.HttpRequest), - agent_id, network.id)\ - .AndRaise(self.exceptions.neutron) - self.mox.ReplayAll() + self.mock_list_dhcp_agent_hosting_networks.return_value = \ + [self.agents.list()[1]] + self.mock_network_get.return_value = network + self.mock_agent_list.return_value = self.agents.list() + self.mock_add_network_to_dhcp_agent.side_effect = \ + self.exceptions.neutron form_data = {'network_id': network.id, 'network_name': network.name, @@ -108,30 +107,30 @@ class NetworkAgentTests(test.BaseAdminViewTests): redir_url = reverse(NETWORKS_DETAIL_URL, args=[network.id]) self.assertRedirectsNoFollow(res, redir_url) - @test.create_stubs({api.neutron: ('subnet_list', - 'port_list', - 'list_dhcp_agent_hosting_networks', - 'show_network_ip_availability', + self.mock_list_dhcp_agent_hosting_networks.assert_called_once_with( + test.IsHttpRequest(), network.id) + self.mock_network_get.assert_called_once_with(test.IsHttpRequest(), + network.id) + self.mock_agent_list.assert_called_once_with(test.IsHttpRequest(), + agent_type='DHCP agent') + self.mock_add_network_to_dhcp_agent.assert_called_once_with( + test.IsHttpRequest(), agent_id, network.id) + + @test.create_mocks({api.neutron: ('list_dhcp_agent_hosting_networks', 'is_extension_supported', 'remove_network_from_dhcp_agent',)}) def test_agent_delete(self): network_id = self.networks.first().id agent_id = self.agents.first().id - api.neutron.list_dhcp_agent_hosting_networks(IsA(http.HttpRequest), - network_id).\ - AndReturn(self.agents.list()) - api.neutron.remove_network_from_dhcp_agent(IsA(http.HttpRequest), - agent_id, network_id) - api.neutron.is_extension_supported( - IsA(http.HttpRequest), - 'network-ip-availability').AndReturn(True) - api.neutron.is_extension_supported(IsA(http.HttpRequest), - 'mac-learning')\ - .AndReturn(False) - api.neutron.is_extension_supported(IsA(http.HttpRequest), - 'dhcp_agent_scheduler')\ - .AndReturn(True) - self.mox.ReplayAll() + + self.mock_list_dhcp_agent_hosting_networks.return_value = \ + self.agents.list() + self.mock_remove_network_from_dhcp_agent.return_value = None + self.mock_is_extension_supported.side_effect = [ + True, # network-ip-availability + False, # mac-learning + True, # dhcp_agent_scheduler + ] url = NETWORKS_DETAIL_URL form_data = {'action': 'agents__delete__%s' % agent_id} @@ -140,34 +139,47 @@ class NetworkAgentTests(test.BaseAdminViewTests): self.assertRedirectsNoFollow(res, url) - @test.create_stubs({api.neutron: ('subnet_list', - 'port_list', - 'list_dhcp_agent_hosting_networks', - 'show_network_ip_availability', + self.mock_list_dhcp_agent_hosting_networks.assert_called_once_with( + test.IsHttpRequest(), network_id) + self.mock_remove_network_from_dhcp_agent.assert_called_once_with( + test.IsHttpRequest(), agent_id, network_id) + self.mock_is_extension_supported.assert_has_calls([ + mock.call(test.IsHttpRequest(), 'network-ip-availability'), + mock.call(test.IsHttpRequest(), 'mac-learning'), + mock.call(test.IsHttpRequest(), 'dhcp_agent_scheduler'), + ]) + self.assertEqual(3, self.mock_is_extension_supported.call_count) + + @test.create_mocks({api.neutron: ('list_dhcp_agent_hosting_networks', 'is_extension_supported', 'remove_network_from_dhcp_agent',)}) def test_agent_delete_exception(self): network_id = self.networks.first().id agent_id = self.agents.first().id - api.neutron.list_dhcp_agent_hosting_networks(IsA(http.HttpRequest), - network_id).\ - AndReturn(self.agents.list()) - api.neutron.remove_network_from_dhcp_agent(IsA(http.HttpRequest), - agent_id, network_id)\ - .AndRaise(self.exceptions.neutron) - api.neutron.is_extension_supported( - IsA(http.HttpRequest), - 'network-ip-availability').AndReturn(True) - api.neutron.is_extension_supported(IsA(http.HttpRequest), - 'mac-learning')\ - .AndReturn(False) - api.neutron.is_extension_supported(IsA(http.HttpRequest), - 'dhcp_agent_scheduler')\ - .AndReturn(True) - self.mox.ReplayAll() + + self.mock_list_dhcp_agent_hosting_networks.return_value = \ + self.agents.list() + self.mock_remove_network_from_dhcp_agent.side_effect = \ + self.exceptions.neutron + self.mock_is_extension_supported.side_effect = [ + True, # network-ip-availability + False, # mac-learning + True, # dhcp_agent_scheduler + ] form_data = {'action': 'agents__delete__%s' % agent_id} url = reverse(NETWORKS_DETAIL_URL, args=[network_id]) res = self.client.post(url, form_data) self.assertRedirectsNoFollow(res, url) + + self.mock_list_dhcp_agent_hosting_networks.assert_called_once_with( + test.IsHttpRequest(), network_id) + self.mock_remove_network_from_dhcp_agent.assert_called_once_with( + test.IsHttpRequest(), agent_id, network_id) + self.mock_is_extension_supported.assert_has_calls([ + mock.call(test.IsHttpRequest(), 'network-ip-availability'), + mock.call(test.IsHttpRequest(), 'mac-learning'), + mock.call(test.IsHttpRequest(), 'dhcp_agent_scheduler'), + ]) + self.assertEqual(3, self.mock_is_extension_supported.call_count)