Convert admin.info tests into mock

Partially-Implements: blueprint mock-framework-in-unit-tests
Change-Id: If5bc1e2e6471e0d4cf8adfbe6bc82103cafda158
This commit is contained in:
Vladislav Kuzmin
2018-03-12 18:03:40 +04:00
committed by Akihiro Motoki
parent ec14dd91bd
commit 324dce500e

View File

@@ -12,10 +12,9 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from django import http import mock
from django.urls import reverse from django.urls import reverse
from mox3.mox import IgnoreArg
from mox3.mox import IsA
from openstack_dashboard import api from openstack_dashboard import api
from openstack_dashboard.test import helpers as test from openstack_dashboard.test import helpers as test
@@ -25,35 +24,44 @@ INDEX_URL = reverse('horizon:admin:info:index')
class SystemInfoViewTests(test.BaseAdminViewTests): class SystemInfoViewTests(test.BaseAdminViewTests):
@test.create_stubs({api.base: ('is_service_enabled',), @test.create_mocks({api.base: ['is_service_enabled'],
api.nova: ('service_list',), api.nova: [('service_list', 'nova_service_list')],
api.neutron: ('agent_list', 'is_extension_supported'), api.neutron: ['agent_list', 'is_extension_supported'],
api.cinder: ('service_list',), api.cinder: [('service_list', 'cinder_service_list')],
}) })
def _test_base_index(self): def _test_base_index(self):
api.base.is_service_enabled(IsA(http.HttpRequest), IgnoreArg()) \ self.mock_is_service_enabled.return_value = True
.MultipleTimes().AndReturn(True) self.mock_nova_service_list.return_value = self.services.list()
services = self.services.list() extensions = {
api.nova.service_list(IsA(http.HttpRequest)).AndReturn(services) 'agent': True,
'availability_zone': False
}
api.neutron.is_extension_supported(IsA(http.HttpRequest), def _is_extension_supported(request, ext):
'agent').AndReturn(True) return extensions[ext]
agents = self.agents.list()
api.neutron.agent_list(IsA(http.HttpRequest)).AndReturn(agents)
api.neutron.is_extension_supported(IsA(http.HttpRequest),
"availability_zone")\
.AndReturn(False)
cinder_services = self.cinder_services.list() self.mock_is_extension_supported.side_effect = _is_extension_supported
api.cinder.service_list(IsA(http.HttpRequest)).\ self.mock_agent_list.return_value = self.agents.list()
AndReturn(cinder_services) self.mock_cinder_service_list.return_value = \
self.cinder_services.list()
self.mox.ReplayAll()
res = self.client.get(INDEX_URL) res = self.client.get(INDEX_URL)
self.assertTemplateUsed(res, 'admin/info/index.html') self.assertTemplateUsed(res, 'admin/info/index.html')
self.mock_is_service_enabled.assert_called_once_with(
test.IsHttpRequest(), 'network')
self.mock_nova_service_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_is_extension_supported.assert_has_calls([
mock.call(test.IsHttpRequest(), 'agent'),
mock.call(test.IsHttpRequest(), 'availability_zone')])
self.assertEqual(2, self.mock_is_extension_supported.call_count)
self.mock_agent_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_cinder_service_list.assert_called_once_with(
test.IsHttpRequest())
return res return res
def test_index(self): def test_index(self):
@@ -62,7 +70,6 @@ class SystemInfoViewTests(test.BaseAdminViewTests):
self.assertIn("region", services_tab._tables['services'].data[0]) self.assertIn("region", services_tab._tables['services'].data[0])
self.assertIn("endpoints", self.assertIn("endpoints",
services_tab._tables['services'].data[0]) services_tab._tables['services'].data[0])
self.mox.VerifyAll()
def test_neutron_index(self): def test_neutron_index(self):
res = self._test_base_index() res = self._test_base_index()
@@ -72,8 +79,6 @@ class SystemInfoViewTests(test.BaseAdminViewTests):
[agent.__repr__() for agent in self.agents.list()] [agent.__repr__() for agent in self.agents.list()]
) )
self.mox.VerifyAll()
def test_cinder_index(self): def test_cinder_index(self):
res = self._test_base_index() res = self._test_base_index()
cinder_services_tab = res.context['tab_group'].\ cinder_services_tab = res.context['tab_group'].\
@@ -82,5 +87,3 @@ class SystemInfoViewTests(test.BaseAdminViewTests):
cinder_services_tab._tables['cinder_services'].data, cinder_services_tab._tables['cinder_services'].data,
[service.__repr__() for service in self.cinder_services.list()] [service.__repr__() for service in self.cinder_services.list()]
) )
self.mox.VerifyAll()