diff --git a/neutron_fwaas_dashboard/test/api_tests/fwaas_tests.py b/neutron_fwaas_dashboard/test/api_tests/fwaas_tests.py index acd34a3..e6f8d7b 100644 --- a/neutron_fwaas_dashboard/test/api_tests/fwaas_tests.py +++ b/neutron_fwaas_dashboard/test/api_tests/fwaas_tests.py @@ -12,17 +12,20 @@ # License for the specific language governing permissions and limitations # under the License. -from django import http -from mox3 import mox +import mock from neutronclient.v2_0.client import Client as neutronclient from openstack_dashboard.api import neutron as api_neutron +from openstack_dashboard.test import helpers from neutron_fwaas_dashboard.api import fwaas as api_fwaas from neutron_fwaas_dashboard.test import helpers as test class FwaasApiTests(test.APITestCase): - @test.create_stubs({neutronclient: ('create_firewall_rule',)}) + + use_mox = False + + @helpers.create_mocks({neutronclient: ('create_firewall_rule',)}) def test_rule_create(self): rule1 = self.fw_rules.first() rule1_dict = self.api_fw_rules.first() @@ -39,13 +42,14 @@ class FwaasApiTests(test.APITestCase): } form_dict = {'firewall_rule': form_data} ret_dict = {'firewall_rule': rule1_dict} - neutronclient.create_firewall_rule(form_dict).AndReturn(ret_dict) - self.mox.ReplayAll() + self.mock_create_firewall_rule.return_value = ret_dict ret_val = api_fwaas.rule_create(self.request, **form_data) + self.assertIsInstance(ret_val, api_fwaas.Rule) self.assertEqual(rule1.name, ret_val.name) self.assertTrue(ret_val.id) + self.mock_create_firewall_rule.assert_called_once_with(form_dict) def _assert_rule_return_value(self, ret_val, exp_rule): self.assertIsInstance(ret_val, api_fwaas.Rule) @@ -57,57 +61,65 @@ class FwaasApiTests(test.APITestCase): else: self.assertIsNone(ret_val.policy) - @test.create_stubs({neutronclient: ('list_firewall_rules', - 'list_firewall_policies')}) + @helpers.create_mocks({neutronclient: ('list_firewall_rules', + 'list_firewall_policies')}) def test_rule_list(self): exp_rules = self.fw_rules.list() api_rules = {'firewall_rules': self.api_fw_rules.list()} api_policies = {'firewall_policies': self.api_fw_policies.list()} - neutronclient.list_firewall_rules().AndReturn(api_rules) - neutronclient.list_firewall_policies().AndReturn(api_policies) - self.mox.ReplayAll() + self.mock_list_firewall_rules.return_value = api_rules + self.mock_list_firewall_policies.return_value = api_policies ret_val = api_fwaas.rule_list(self.request) for (v, d) in zip(ret_val, exp_rules): self._assert_rule_return_value(v, d) + self.mock_list_firewall_rules.assert_called_once_with() + self.mock_list_firewall_policies.assert_called_once_with() - @test.create_stubs({neutronclient: ('list_firewall_rules', - 'list_firewall_policies')}) + @helpers.create_mocks({neutronclient: ('list_firewall_rules', + 'list_firewall_policies')}) def test_rule_list_for_tenant(self): tenant_id = self.request.user.project_id exp_rules = self.fw_rules.list() api_rules = {'firewall_rules': self.api_fw_rules.list()} api_policies = {'firewall_policies': self.api_fw_policies.list()} - neutronclient.list_firewall_rules( - tenant_id=tenant_id, - shared=False).AndReturn({'firewall_rules': []}) - neutronclient.list_firewall_rules(shared=True) \ - .AndReturn(api_rules) - neutronclient.list_firewall_policies().AndReturn(api_policies) - self.mox.ReplayAll() + self.mock_list_firewall_rules.side_effect = [ + {'firewall_rules': []}, + api_rules, + ] + self.mock_list_firewall_policies.return_value = api_policies ret_val = api_fwaas.rule_list_for_tenant(self.request, tenant_id) + for (v, d) in zip(ret_val, exp_rules): self._assert_rule_return_value(v, d) + self.assertEqual(2, self.mock_list_firewall_rules.call_count) + self.mock_list_firewall_rules.assert_has_calls([ + mock.call(tenant_id=tenant_id, shared=False), + mock.call(shared=True), + ]) + self.mock_list_firewall_policies.assert_called_once_with() - @test.create_stubs({neutronclient: ('show_firewall_rule', - 'show_firewall_policy')}) + @helpers.create_mocks({neutronclient: ('show_firewall_rule', + 'show_firewall_policy')}) def test_rule_get(self): exp_rule = self.fw_rules.first() ret_dict = {'firewall_rule': self.api_fw_rules.first()} policy_dict = {'firewall_policy': self.api_fw_policies.first()} - neutronclient.show_firewall_rule(exp_rule.id).AndReturn(ret_dict) - neutronclient.show_firewall_policy( - exp_rule.firewall_policy_id).AndReturn(policy_dict) - self.mox.ReplayAll() + self.mock_show_firewall_rule.return_value = ret_dict + self.mock_show_firewall_policy.return_value = policy_dict ret_val = api_fwaas.rule_get(self.request, exp_rule.id) - self._assert_rule_return_value(ret_val, exp_rule) - @test.create_stubs({neutronclient: ('update_firewall_rule',)}) + self._assert_rule_return_value(ret_val, exp_rule) + self.mock_show_firewall_rule.assert_called_once_with(exp_rule.id) + self.mock_show_firewall_policy.assert_called_once_with( + exp_rule.firewall_policy_id) + + @helpers.create_mocks({neutronclient: ('update_firewall_rule',)}) def test_rule_update(self): rule = self.fw_rules.first() rule_dict = self.api_fw_rules.first() @@ -136,17 +148,17 @@ class FwaasApiTests(test.APITestCase): form_dict = {'firewall_rule': form_data} ret_dict = {'firewall_rule': rule_dict} - neutronclient.update_firewall_rule( - rule.id, form_dict).AndReturn(ret_dict) - self.mox.ReplayAll() + self.mock_update_firewall_rule.return_value = ret_dict ret_val = api_fwaas.rule_update(self.request, rule.id, **form_data) self.assertIsInstance(ret_val, api_fwaas.Rule) self.assertEqual(rule.name, ret_val.name) self.assertTrue(ret_val.id) + self.mock_update_firewall_rule.assert_called_once_with(rule.id, + form_dict) - @test.create_stubs({neutronclient: ('create_firewall_policy', )}) + @helpers.create_mocks({neutronclient: ('create_firewall_policy', )}) def test_policy_create(self): policy1 = self.fw_policies.first() policy1_dict = self.api_fw_policies.first() @@ -160,13 +172,13 @@ class FwaasApiTests(test.APITestCase): form_dict = {'firewall_policy': form_data} ret_dict = {'firewall_policy': policy1_dict} - neutronclient.create_firewall_policy(form_dict).AndReturn(ret_dict) - self.mox.ReplayAll() + self.mock_create_firewall_policy.return_value = ret_dict ret_val = api_fwaas.policy_create(self.request, **form_data) self.assertIsInstance(ret_val, api_fwaas.Policy) self.assertEqual(policy1.name, ret_val.name) self.assertTrue(ret_val.id) + self.mock_create_firewall_policy.assert_called_once_with(form_dict) def _assert_policy_return_value(self, ret_val, exp_policy): self.assertIsInstance(ret_val, api_fwaas.Policy) @@ -178,43 +190,48 @@ class FwaasApiTests(test.APITestCase): for (r, exp_r) in zip(ret_val.rules, exp_policy.rules): self.assertEqual(exp_r.id, r.id) - @test.create_stubs({neutronclient: ('list_firewall_policies', - 'list_firewall_rules')}) + @helpers.create_mocks({neutronclient: ('list_firewall_policies', + 'list_firewall_rules')}) def test_policy_list(self): exp_policies = self.fw_policies.list() policies_dict = {'firewall_policies': self.api_fw_policies.list()} rules_dict = {'firewall_rules': self.api_fw_rules.list()} - neutronclient.list_firewall_policies().AndReturn(policies_dict) - neutronclient.list_firewall_rules().AndReturn(rules_dict) - self.mox.ReplayAll() + self.mock_list_firewall_policies.return_value = policies_dict + self.mock_list_firewall_rules.return_value = rules_dict ret_val = api_fwaas.policy_list(self.request) for (v, d) in zip(ret_val, exp_policies): self._assert_policy_return_value(v, d) + self.mock_list_firewall_policies.assert_called_once_with() + self.mock_list_firewall_rules.assert_called_once_with() - @test.create_stubs({neutronclient: ('list_firewall_policies', - 'list_firewall_rules')}) + @helpers.create_mocks({neutronclient: ('list_firewall_policies', + 'list_firewall_rules')}) def test_policy_list_for_tenant(self): tenant_id = self.request.user.project_id exp_policies = self.fw_policies.list() policies_dict = {'firewall_policies': self.api_fw_policies.list()} rules_dict = {'firewall_rules': self.api_fw_rules.list()} - neutronclient.list_firewall_policies( - tenant_id=tenant_id, - shared=False).AndReturn({'firewall_policies': []}) - neutronclient.list_firewall_policies( - shared=True).AndReturn(policies_dict) - neutronclient.list_firewall_rules().AndReturn(rules_dict) - self.mox.ReplayAll() + self.mock_list_firewall_policies.side_effect = [ + {'firewall_policies': []}, + policies_dict, + ] + self.mock_list_firewall_rules.return_value = rules_dict ret_val = api_fwaas.policy_list_for_tenant(self.request, tenant_id) for (v, d) in zip(ret_val, exp_policies): self._assert_policy_return_value(v, d) + self.assertEqual(2, self.mock_list_firewall_policies.call_count) + self.mock_list_firewall_policies.assert_has_calls([ + mock.call(tenant_id=tenant_id, shared=False), + mock.call(shared=True), + ]) + self.mock_list_firewall_rules.assert_called_once_with() - @test.create_stubs({neutronclient: ('show_firewall_policy', - 'list_firewall_rules')}) + @helpers.create_mocks({neutronclient: ('show_firewall_policy', + 'list_firewall_rules')}) def test_policy_get(self): exp_policy = self.fw_policies.first() policy_dict = self.api_fw_policies.first() @@ -222,32 +239,33 @@ class FwaasApiTests(test.APITestCase): api_rules = self.api_fw_rules.list()[:2] ret_dict = {'firewall_policy': policy_dict} - neutronclient.show_firewall_policy(exp_policy.id).AndReturn(ret_dict) + self.mock_show_firewall_policy.return_value = ret_dict filters = {'firewall_policy_id': exp_policy.id} ret_dict = {'firewall_rules': api_rules} - neutronclient.list_firewall_rules(**filters).AndReturn(ret_dict) - self.mox.ReplayAll() + self.mock_list_firewall_rules.return_value = ret_dict ret_val = api_fwaas.policy_get(self.request, exp_policy.id) self._assert_policy_return_value(ret_val, exp_policy) + self.mock_show_firewall_policy.assert_called_once_with(exp_policy.id) + self.mock_list_firewall_rules.assert_called_once_with(**filters) - @test.create_stubs({neutronclient: ('show_firewall_policy',)}) + @helpers.create_mocks({neutronclient: ('show_firewall_policy',)}) def test_policy_get_no_rule(self): # 2nd policy is not associated with any rules. exp_policy = self.fw_policies.list()[1] policy_dict = self.api_fw_policies.list()[1] ret_dict = {'firewall_policy': policy_dict} - neutronclient.show_firewall_policy(exp_policy.id).AndReturn(ret_dict) - self.mox.ReplayAll() + self.mock_show_firewall_policy.return_value = ret_dict ret_val = api_fwaas.policy_get(self.request, exp_policy.id) self.assertIsInstance(ret_val, api_fwaas.Policy) self.assertEqual(exp_policy.name, ret_val.name) self.assertTrue(ret_val.id) self.assertFalse(len(ret_val.rules)) + self.mock_show_firewall_policy.assert_called_once_with(exp_policy.id) - @test.create_stubs({neutronclient: ('update_firewall_policy',)}) + @helpers.create_mocks({neutronclient: ('update_firewall_policy',)}) def test_policy_update(self): policy = self.fw_policies.first() policy_dict = self.api_fw_policies.first() @@ -271,17 +289,17 @@ class FwaasApiTests(test.APITestCase): form_dict = {'firewall_policy': form_data} ret_dict = {'firewall_policy': policy_dict} - neutronclient.update_firewall_policy( - policy.id, form_dict).AndReturn(ret_dict) - self.mox.ReplayAll() + self.mock_update_firewall_policy.return_value = ret_dict ret_val = api_fwaas.policy_update(self.request, policy.id, **form_data) self.assertIsInstance(ret_val, api_fwaas.Policy) self.assertEqual(policy.name, ret_val.name) self.assertTrue(ret_val.id) + self.mock_update_firewall_policy.assert_called_once_with( + policy.id, form_dict) - @test.create_stubs({neutronclient: ('firewall_policy_insert_rule',)}) + @helpers.create_mocks({neutronclient: ('firewall_policy_insert_rule',)}) def test_policy_insert_rule(self): policy = self.fw_policies.first() policy_dict = self.api_fw_policies.first() @@ -294,15 +312,15 @@ class FwaasApiTests(test.APITestCase): 'insert_before': policy.firewall_rules[1], 'insert_after': policy.firewall_rules[0]} - neutronclient.firewall_policy_insert_rule( - policy.id, body).AndReturn(policy_dict) - self.mox.ReplayAll() + self.mock_firewall_policy_insert_rule.return_value = policy_dict ret_val = api_fwaas.policy_insert_rule(self.request, policy.id, **body) self.assertIn(new_rule_id, ret_val.firewall_rules) + self.mock_firewall_policy_insert_rule.assert_called_once_with( + policy.id, body) - @test.create_stubs({neutronclient: ('firewall_policy_remove_rule',)}) + @helpers.create_mocks({neutronclient: ('firewall_policy_remove_rule',)}) def test_policy_remove_rule(self): policy = self.fw_policies.first() policy_dict = self.api_fw_policies.first() @@ -312,15 +330,15 @@ class FwaasApiTests(test.APITestCase): body = {'firewall_rule_id': remove_rule_id} - neutronclient.firewall_policy_remove_rule( - policy.id, body).AndReturn(policy_dict) - self.mox.ReplayAll() + self.mock_firewall_policy_remove_rule.return_value = policy_dict ret_val = api_fwaas.policy_remove_rule(self.request, policy.id, **body) self.assertNotIn(remove_rule_id, ret_val.firewall_rules) + self.mock_firewall_policy_remove_rule.assert_called_once_with( + policy.id, body) - @test.create_stubs({neutronclient: ('create_firewall', )}) + @helpers.create_mocks({neutronclient: ('create_firewall', )}) def test_firewall_create(self): firewall = self.firewalls.first() firewall_dict = self.api_firewalls.first() @@ -333,13 +351,13 @@ class FwaasApiTests(test.APITestCase): form_dict = {'firewall': form_data} ret_dict = {'firewall': firewall_dict} - neutronclient.create_firewall(form_dict).AndReturn(ret_dict) - self.mox.ReplayAll() + self.mock_create_firewall.return_value = ret_dict ret_val = api_fwaas.firewall_create(self.request, **form_data) self.assertIsInstance(ret_val, api_fwaas.Firewall) self.assertEqual(firewall.name, ret_val.name) self.assertTrue(ret_val.id) + self.mock_create_firewall.assert_called_once_with(form_dict) def _assert_firewall_return_value(self, ret_val, exp_firewall): self.assertIsInstance(ret_val, api_fwaas.Firewall) @@ -351,69 +369,69 @@ class FwaasApiTests(test.APITestCase): # TODO(absubram) : Add API tests for firewall_create with routers, # add router to firewall and remove router from fw. - @test.create_stubs({neutronclient: ('list_firewalls', - 'list_firewall_policies'), - api_neutron: ('is_extension_supported', - 'router_list')}) + @helpers.create_mocks({neutronclient: ('list_firewalls', + 'list_firewall_policies'), + api_neutron: ('is_extension_supported', + 'router_list')}) def test_firewall_list(self): exp_firewalls = self.firewalls.list() firewalls_dict = {'firewalls': self.api_firewalls.list()} policies_dict = {'firewall_policies': self.api_fw_policies.list()} - neutronclient.list_firewalls().AndReturn(firewalls_dict) - neutronclient.list_firewall_policies().AndReturn(policies_dict) - api_neutron.is_extension_supported( - mox.IsA(http.HttpRequest), 'fwaasrouterinsertion').AndReturn(True) - api_neutron.router_list(mox.IsA(http.HttpRequest)) \ - .AndReturn(self.routers.list()) - self.mox.ReplayAll() + self.mock_list_firewalls.return_value = firewalls_dict + self.mock_list_firewall_policies.return_value = policies_dict + self.mock_is_extension_supported.return_value = True + self.mock_router_list.return_value = self.routers.list() ret_val = api_fwaas.firewall_list(self.request) for (v, d) in zip(ret_val, exp_firewalls): self._assert_firewall_return_value(v, d) + self.mock_list_firewalls.assert_called_once_with() + self.mock_list_firewall_policies.assert_called_once_with() + self.mock_is_extension_supported.assert_called_once_with( + helpers.IsHttpRequest(), 'fwaasrouterinsertion') + self.mock_router_list.assert_called_once_with( + helpers.IsHttpRequest()) - @test.create_stubs({neutronclient: ('list_firewalls', - 'list_firewall_policies'), - api_neutron: ('is_extension_supported', - 'router_list')}) + @helpers.create_mocks({neutronclient: ('list_firewalls', + 'list_firewall_policies'), + api_neutron: ('is_extension_supported', + 'router_list')}) def test_firewall_list_for_tenant(self): tenant_id = self.request.user.project_id exp_firewalls = self.firewalls.list() firewalls_dict = {'firewalls': self.api_firewalls.list()} policies_dict = {'firewall_policies': self.api_fw_policies.list()} - neutronclient.list_firewalls(tenant_id=tenant_id) \ - .AndReturn(firewalls_dict) - neutronclient.list_firewall_policies().AndReturn(policies_dict) - api_neutron.is_extension_supported( - mox.IsA(http.HttpRequest), 'fwaasrouterinsertion').AndReturn(True) - api_neutron.router_list(mox.IsA(http.HttpRequest), - tenant_id=self.request.user.project_id) \ - .AndReturn(self.routers.list()) - self.mox.ReplayAll() + self.mock_list_firewalls.return_value = firewalls_dict + self.mock_list_firewall_policies.return_value = policies_dict + self.mock_is_extension_supported.return_value = True + self.mock_router_list.return_value = self.routers.list() ret_val = api_fwaas.firewall_list_for_tenant(self.request, tenant_id) for (v, d) in zip(ret_val, exp_firewalls): self._assert_firewall_return_value(v, d) - @test.create_stubs({neutronclient: ('show_firewall', - 'show_firewall_policy'), - api_neutron: ('is_extension_supported', - 'router_list')}) + self.mock_list_firewalls.assert_called_once_with(tenant_id=tenant_id) + self.mock_list_firewall_policies.assert_called_once_with() + self.mock_is_extension_supported.assert_called_once_with( + helpers.IsHttpRequest(), 'fwaasrouterinsertion') + self.mock_router_list.assert_called_once_with( + helpers.IsHttpRequest(), tenant_id=self.request.user.project_id) + + @helpers.create_mocks({neutronclient: ('show_firewall', + 'show_firewall_policy'), + api_neutron: ('is_extension_supported', + 'router_list')}) def test_firewall_get(self): exp_firewall = self.firewalls.first() ret_dict = {'firewall': self.api_firewalls.first()} policy_dict = {'firewall_policy': self.api_fw_policies.first()} - neutronclient.show_firewall(exp_firewall.id).AndReturn(ret_dict) - neutronclient.show_firewall_policy( - exp_firewall.firewall_policy_id).AndReturn(policy_dict) - api_neutron.is_extension_supported( - mox.IsA(http.HttpRequest), 'fwaasrouterinsertion').AndReturn(True) - api_neutron.router_list( - mox.IsA(http.HttpRequest), - id=exp_firewall.router_ids).AndReturn(exp_firewall.routers) - self.mox.ReplayAll() + self.mock_show_firewall.return_value = ret_dict + self.mock_show_firewall_policy.return_value = policy_dict + self.mock_is_extension_supported.return_value = True + self.mock_router_list.return_value = exp_firewall.routers ret_val = api_fwaas.firewall_get(self.request, exp_firewall.id) self._assert_firewall_return_value(ret_val, exp_firewall) @@ -422,8 +440,15 @@ class FwaasApiTests(test.APITestCase): [r.id for r in ret_val.routers]) self.assertEqual([r.name for r in exp_firewall.routers], [r.name for r in ret_val.routers]) + self.mock_show_firewall.assert_called_once_with(exp_firewall.id) + self.mock_show_firewall_policy.assert_called_once_with( + exp_firewall.firewall_policy_id) + self.mock_is_extension_supported.assert_called_once_with( + helpers.IsHttpRequest(), 'fwaasrouterinsertion') + self.mock_router_list.assert_called_once_with( + helpers.IsHttpRequest(), id=exp_firewall.router_ids) - @test.create_stubs({neutronclient: ('update_firewall',)}) + @helpers.create_mocks({neutronclient: ('update_firewall',)}) def test_firewall_update(self): firewall = self.firewalls.first() firewall_dict = self.api_firewalls.first() @@ -444,12 +469,12 @@ class FwaasApiTests(test.APITestCase): form_dict = {'firewall': form_data} ret_dict = {'firewall': firewall_dict} - neutronclient.update_firewall( - firewall.id, form_dict).AndReturn(ret_dict) - self.mox.ReplayAll() + self.mock_update_firewall.return_value = ret_dict ret_val = api_fwaas.firewall_update(self.request, firewall.id, **form_data) self.assertIsInstance(ret_val, api_fwaas.Firewall) self.assertEqual(firewall.name, ret_val.name) self.assertTrue(ret_val.id) + self.mock_update_firewall.assert_called_once_with(firewall.id, + form_dict)