Merge "Convert admin.networks.agents tests into mock"

This commit is contained in:
Zuul 2018-06-22 19:22:48 +00:00 committed by Gerrit Code Review
commit 6481442fb6
1 changed files with 88 additions and 76 deletions

View File

@ -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)