Start using create_mocks in dashboards/admin/volumes/tests.py
Change cinder api to return None for volume_manage() and for volume_reset_state(). In this case the tests check these functions returns correct values. Partially-Implements: blueprint mock-framework-in-unit-tests Change-Id: I6694113cb3e8bfa74b1267c6336642d192fbf4ac
This commit is contained in:
parent
c32b5c1f2e
commit
b407b07c84
@ -414,7 +414,7 @@ def volume_delete_metadata(request, volume_id, keys):
|
|||||||
|
|
||||||
@profiler.trace
|
@profiler.trace
|
||||||
def volume_reset_state(request, volume_id, state):
|
def volume_reset_state(request, volume_id, state):
|
||||||
return cinderclient(request).volumes.reset_state(volume_id, state)
|
cinderclient(request).volumes.reset_state(volume_id, state)
|
||||||
|
|
||||||
|
|
||||||
@profiler.trace
|
@profiler.trace
|
||||||
@ -742,7 +742,7 @@ def volume_manage(request,
|
|||||||
metadata,
|
metadata,
|
||||||
bootable):
|
bootable):
|
||||||
source = {id_type: identifier}
|
source = {id_type: identifier}
|
||||||
return cinderclient(request).volumes.manage(
|
cinderclient(request).volumes.manage(
|
||||||
host=host,
|
host=host,
|
||||||
ref=source,
|
ref=source,
|
||||||
name=name,
|
name=name,
|
||||||
|
@ -18,11 +18,8 @@ from django.conf import settings
|
|||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.test.utils import override_settings
|
from django.test.utils import override_settings
|
||||||
from django.utils.http import urlunquote
|
from django.utils.http import urlunquote
|
||||||
import mock
|
|
||||||
|
|
||||||
from openstack_dashboard import api
|
from openstack_dashboard import api
|
||||||
from openstack_dashboard.api import cinder
|
|
||||||
from openstack_dashboard.api import keystone
|
|
||||||
from openstack_dashboard.dashboards.project.volumes \
|
from openstack_dashboard.dashboards.project.volumes \
|
||||||
import tables as volume_tables
|
import tables as volume_tables
|
||||||
from openstack_dashboard.test import helpers as test
|
from openstack_dashboard.test import helpers as test
|
||||||
@ -44,36 +41,35 @@ class VolumeTests(test.BaseAdminViewTests):
|
|||||||
del att['instance']
|
del att['instance']
|
||||||
super(VolumeTests, self).tearDown()
|
super(VolumeTests, self).tearDown()
|
||||||
|
|
||||||
@mock.patch.object(keystone, 'tenant_list')
|
@test.create_mocks({
|
||||||
@mock.patch.object(cinder, 'volume_snapshot_list')
|
api.nova: ['server_list'],
|
||||||
@mock.patch.object(cinder, 'volume_list_paged')
|
api.cinder: ['volume_snapshot_list', 'volume_list_paged'],
|
||||||
@mock.patch.object(api.nova, 'server_list')
|
api.keystone: ['tenant_list']})
|
||||||
def _test_index(self, instanceless_volumes, mock_server_list,
|
def _test_index(self, instanceless_volumes):
|
||||||
mock_volume_list, mock_snapshot_list, mock_tenant_list):
|
|
||||||
volumes = self.cinder_volumes.list()
|
volumes = self.cinder_volumes.list()
|
||||||
if instanceless_volumes:
|
if instanceless_volumes:
|
||||||
for volume in volumes:
|
for volume in volumes:
|
||||||
volume.attachments = []
|
volume.attachments = []
|
||||||
|
|
||||||
mock_volume_list.return_value = [volumes, False, False]
|
self.mock_volume_list_paged.return_value = [volumes, False, False]
|
||||||
mock_snapshot_list.return_value = []
|
self.mock_volume_snapshot_list.return_value = []
|
||||||
|
|
||||||
if not instanceless_volumes:
|
if not instanceless_volumes:
|
||||||
mock_server_list.return_value = [self.servers.list(), False]
|
self.mock_server_list.return_value = [self.servers.list(), False]
|
||||||
|
|
||||||
mock_tenant_list.return_value = [[self.tenants.list(), False]]
|
self.mock_tenant_list.return_value = [[self.tenants.list(), False]]
|
||||||
|
|
||||||
res = self.client.get(INDEX_URL)
|
res = self.client.get(INDEX_URL)
|
||||||
if not instanceless_volumes:
|
if not instanceless_volumes:
|
||||||
mock_server_list.assert_called_once_with(
|
self.mock_server_list.assert_called_once_with(
|
||||||
test.IsHttpRequest(), search_opts={'all_tenants': True})
|
test.IsHttpRequest(), search_opts={'all_tenants': True})
|
||||||
|
|
||||||
mock_volume_list.assert_called_once_with(
|
self.mock_volume_list_paged.assert_called_once_with(
|
||||||
test.IsHttpRequest(), sort_dir="desc", marker=None, paginate=True,
|
test.IsHttpRequest(), sort_dir="desc", marker=None, paginate=True,
|
||||||
search_opts={'all_tenants': True})
|
search_opts={'all_tenants': True})
|
||||||
mock_snapshot_list.assert_called_once_with(
|
self.mock_volume_snapshot_list.assert_called_once_with(
|
||||||
test.IsHttpRequest(), search_opts={'all_tenants': True})
|
test.IsHttpRequest(), search_opts={'all_tenants': True})
|
||||||
mock_tenant_list.assert_called_once()
|
self.mock_tenant_list.assert_called_once()
|
||||||
self.assertTemplateUsed(res, 'horizon/common/_data_table_view.html')
|
self.assertTemplateUsed(res, 'horizon/common/_data_table_view.html')
|
||||||
volumes = res.context['volumes_table'].data
|
volumes = res.context['volumes_table'].data
|
||||||
self.assertItemsEqual(volumes, self.cinder_volumes.list())
|
self.assertItemsEqual(volumes, self.cinder_volumes.list())
|
||||||
@ -84,33 +80,33 @@ class VolumeTests(test.BaseAdminViewTests):
|
|||||||
def test_index_with_attachments(self):
|
def test_index_with_attachments(self):
|
||||||
self._test_index(False)
|
self._test_index(False)
|
||||||
|
|
||||||
@mock.patch.object(keystone, 'tenant_list')
|
@test.create_mocks({
|
||||||
@mock.patch.object(cinder, 'volume_snapshot_list')
|
api.nova: ['server_list'],
|
||||||
@mock.patch.object(cinder, 'volume_list_paged')
|
api.cinder: ['volume_snapshot_list', 'volume_list_paged'],
|
||||||
@mock.patch.object(api.nova, 'server_list')
|
api.keystone: ['tenant_list']})
|
||||||
def _test_index_paginated(self, marker, sort_dir, volumes, url,
|
def _test_index_paginated(self, marker, sort_dir, volumes, url,
|
||||||
has_more, has_prev, mock_server_list,
|
has_more, has_prev):
|
||||||
mock_volume_list, mock_snapshot_list,
|
|
||||||
mock_tenant_list):
|
|
||||||
vol_snaps = self.cinder_volume_snapshots.list()
|
vol_snaps = self.cinder_volume_snapshots.list()
|
||||||
|
|
||||||
mock_volume_list.return_value = [volumes, has_more, has_prev]
|
self.mock_volume_list_paged.return_value = \
|
||||||
mock_snapshot_list.return_value = vol_snaps
|
[volumes, has_more, has_prev]
|
||||||
mock_server_list.return_value = [self.servers.list(), False]
|
self.mock_volume_snapshot_list.return_value = vol_snaps
|
||||||
mock_tenant_list.return_value = [self.tenants.list(), False]
|
self.mock_server_list.return_value = [self.servers.list(), False]
|
||||||
|
self.mock_tenant_list.return_value = [self.tenants.list(), False]
|
||||||
|
|
||||||
res = self.client.get(urlunquote(url))
|
res = self.client.get(urlunquote(url))
|
||||||
|
|
||||||
mock_server_list.assert_called_once_with(
|
self.mock_server_list.assert_called_once_with(
|
||||||
test.IsHttpRequest(), search_opts={'all_tenants': True})
|
test.IsHttpRequest(), search_opts={'all_tenants': True})
|
||||||
mock_volume_list.assert_called_once_with(test.IsHttpRequest(),
|
self.mock_volume_list_paged.assert_called_once_with(
|
||||||
sort_dir=sort_dir,
|
test.IsHttpRequest(),
|
||||||
marker=marker, paginate=True,
|
sort_dir=sort_dir,
|
||||||
search_opts={
|
marker=marker, paginate=True,
|
||||||
'all_tenants': True})
|
search_opts={
|
||||||
mock_snapshot_list.assert_called_once_with(
|
'all_tenants': True})
|
||||||
|
self.mock_volume_snapshot_list.assert_called_once_with(
|
||||||
test.IsHttpRequest(), search_opts={'all_tenants': True})
|
test.IsHttpRequest(), search_opts={'all_tenants': True})
|
||||||
mock_tenant_list.assert_called_once()
|
self.mock_tenant_list.assert_called_once()
|
||||||
|
|
||||||
self.assertTemplateUsed(res, 'horizon/common/_data_table_view.html')
|
self.assertTemplateUsed(res, 'horizon/common/_data_table_view.html')
|
||||||
self.assertEqual(res.status_code, 200)
|
self.assertEqual(res.status_code, 200)
|
||||||
@ -192,178 +188,181 @@ class VolumeTests(test.BaseAdminViewTests):
|
|||||||
volumes = res.context['volumes_table'].data
|
volumes = res.context['volumes_table'].data
|
||||||
self.assertItemsEqual(volumes, expected_volumes)
|
self.assertItemsEqual(volumes, expected_volumes)
|
||||||
|
|
||||||
@mock.patch.object(cinder, 'volume_get')
|
@test.create_mocks({api.cinder: ['volume_get', 'volume_reset_state']})
|
||||||
@mock.patch.object(cinder, 'volume_reset_state')
|
def test_update_volume_status(self):
|
||||||
def test_update_volume_status(self, mock_reset, mock_volume_get):
|
|
||||||
volume = self.volumes.first()
|
volume = self.volumes.first()
|
||||||
formData = {'status': 'error'}
|
form_data = {'status': 'error'}
|
||||||
|
|
||||||
mock_volume_get.return_value = volume
|
self.mock_volume_reset_state.return_value = None
|
||||||
|
self.mock_volume_get.return_value = volume
|
||||||
|
|
||||||
res = self.client.post(
|
res = self.client.post(
|
||||||
reverse('horizon:admin:volumes:update_status',
|
reverse('horizon:admin:volumes:update_status',
|
||||||
args=(volume.id,)),
|
args=(volume.id,)),
|
||||||
formData)
|
form_data)
|
||||||
|
|
||||||
mock_reset.assert_called_once_with(test.IsHttpRequest(),
|
self.mock_volume_reset_state.assert_called_once_with(
|
||||||
volume.id, formData['status'])
|
test.IsHttpRequest(), volume.id, form_data['status'])
|
||||||
mock_volume_get.assert_called_once_with(test.IsHttpRequest(),
|
self.mock_volume_get.assert_called_once_with(test.IsHttpRequest(),
|
||||||
volume.id)
|
volume.id)
|
||||||
self.assertNoFormErrors(res)
|
self.assertNoFormErrors(res)
|
||||||
|
|
||||||
@mock.patch.object(cinder, 'extension_supported')
|
@test.create_mocks({
|
||||||
@mock.patch.object(cinder, 'availability_zone_list')
|
api.cinder: ['extension_supported', 'availability_zone_list',
|
||||||
@mock.patch.object(cinder, 'volume_type_list')
|
'volume_type_list', 'volume_manage']})
|
||||||
@mock.patch.object(cinder, 'volume_manage')
|
def test_manage_volume(self):
|
||||||
def test_manage_volume(self, mock_manage, mock_type_list, mock_az_list,
|
|
||||||
mock_extension):
|
|
||||||
metadata = {'key': u'k1',
|
metadata = {'key': u'k1',
|
||||||
'value': u'v1'}
|
'value': u'v1'}
|
||||||
formData = {'host': 'host-1',
|
form_data = {'host': 'host-1',
|
||||||
'identifier': 'vol-1',
|
'identifier': 'vol-1',
|
||||||
'id_type': u'source-name',
|
'id_type': u'source-name',
|
||||||
'name': 'name-1',
|
'name': 'name-1',
|
||||||
'description': 'manage a volume',
|
'description': 'manage a volume',
|
||||||
'volume_type': 'vol_type_1',
|
'volume_type': 'vol_type_1',
|
||||||
'availability_zone': 'nova',
|
'availability_zone': 'nova',
|
||||||
'metadata': metadata['key'] + '=' + metadata['value'],
|
'metadata': metadata['key'] + '=' + metadata['value'],
|
||||||
'bootable': False}
|
'bootable': False}
|
||||||
|
|
||||||
mock_type_list.return_value = self.cinder_volume_types.list()
|
self.mock_extension_supported.return_value = None
|
||||||
mock_az_list.return_value = self.availability_zones.list()
|
self.mock_volume_type_list.return_value = \
|
||||||
mock_extension.return_value = True
|
self.cinder_volume_types.list()
|
||||||
|
self.mock_availability_zone_list.return_value = \
|
||||||
|
self.availability_zones.list()
|
||||||
|
self.mock_extension_supported.return_value = True
|
||||||
|
|
||||||
res = self.client.post(
|
res = self.client.post(
|
||||||
reverse('horizon:admin:volumes:manage'),
|
reverse('horizon:admin:volumes:manage'),
|
||||||
formData)
|
form_data)
|
||||||
|
|
||||||
mock_manage.assert_called_once_with(
|
self.mock_volume_manage.assert_called_once_with(
|
||||||
test.IsHttpRequest(),
|
test.IsHttpRequest(),
|
||||||
host=formData['host'],
|
host=form_data['host'],
|
||||||
identifier=formData['identifier'],
|
identifier=form_data['identifier'],
|
||||||
id_type=formData['id_type'],
|
id_type=form_data['id_type'],
|
||||||
name=formData['name'],
|
name=form_data['name'],
|
||||||
description=formData['description'],
|
description=form_data['description'],
|
||||||
volume_type=formData['volume_type'],
|
volume_type=form_data['volume_type'],
|
||||||
availability_zone=formData['availability_zone'],
|
availability_zone=form_data['availability_zone'],
|
||||||
metadata={metadata['key']: metadata['value']},
|
metadata={metadata['key']: metadata['value']},
|
||||||
bootable=formData['bootable'])
|
bootable=form_data['bootable'])
|
||||||
mock_type_list.assert_called_once()
|
self.mock_volume_type_list.assert_called_once()
|
||||||
mock_az_list.assert_called_once()
|
self.mock_availability_zone_list.assert_called_once()
|
||||||
mock_extension.assert_called_once_with(test.IsHttpRequest(),
|
self.mock_extension_supported.assert_called_once_with(
|
||||||
'AvailabilityZones')
|
test.IsHttpRequest(),
|
||||||
|
'AvailabilityZones')
|
||||||
self.assertNoFormErrors(res)
|
self.assertNoFormErrors(res)
|
||||||
|
|
||||||
@mock.patch.object(cinder, 'volume_get')
|
@test.create_mocks({api.cinder: ['volume_get', 'volume_unmanage']})
|
||||||
@mock.patch.object(cinder, 'volume_unmanage')
|
def test_unmanage_volume(self):
|
||||||
def test_unmanage_volume(self, mock_unmanage, mock_get):
|
|
||||||
# important - need to get the v2 cinder volume which has host data
|
# important - need to get the v2 cinder volume which has host data
|
||||||
volume_list = [x for x in self.cinder_volumes.list()
|
volume_list = [x for x in self.cinder_volumes.list()
|
||||||
if x.name == 'v2_volume']
|
if x.name == 'v2_volume']
|
||||||
volume = volume_list[0]
|
volume = volume_list[0]
|
||||||
formData = {'volume_name': volume.name,
|
form_data = {'volume_name': volume.name,
|
||||||
'host_name': 'host@backend-name#pool',
|
'host_name': 'host@backend-name#pool',
|
||||||
'volume_id': volume.id}
|
'volume_id': volume.id}
|
||||||
|
|
||||||
mock_get.return_value = volume
|
self.mock_volume_get.return_value = volume
|
||||||
mock_unmanage.return_value = volume
|
self.mock_volume_unmanage.return_value = volume
|
||||||
|
|
||||||
res = self.client.post(
|
res = self.client.post(
|
||||||
reverse('horizon:admin:volumes:unmanage',
|
reverse('horizon:admin:volumes:unmanage',
|
||||||
args=(volume.id,)),
|
args=(volume.id,)),
|
||||||
formData)
|
form_data)
|
||||||
|
|
||||||
mock_unmanage.assert_called_once_with(test.IsHttpRequest(), volume.id)
|
self.mock_volume_unmanage.assert_called_once_with(
|
||||||
mock_get.assert_called_once_with(test.IsHttpRequest(), volume.id)
|
test.IsHttpRequest(), volume.id)
|
||||||
|
self.mock_volume_get.assert_called_once_with(
|
||||||
|
test.IsHttpRequest(), volume.id)
|
||||||
self.assertNoFormErrors(res)
|
self.assertNoFormErrors(res)
|
||||||
|
|
||||||
@mock.patch.object(cinder, 'volume_get')
|
@test.create_mocks({api.cinder: ['volume_get', 'pool_list']})
|
||||||
@mock.patch.object(cinder, 'pool_list')
|
def test_volume_migrate_get(self):
|
||||||
def test_volume_migrate_get(self, mock_pool, mock_get):
|
|
||||||
volume = self.cinder_volumes.get(name='v2_volume')
|
volume = self.cinder_volumes.get(name='v2_volume')
|
||||||
|
|
||||||
mock_pool.return_value = self.cinder_pools.list()
|
self.mock_pool_list.return_value = self.cinder_pools.list()
|
||||||
mock_get.return_value = volume
|
self.mock_volume_get.return_value = volume
|
||||||
|
|
||||||
url = reverse('horizon:admin:volumes:migrate',
|
url = reverse('horizon:admin:volumes:migrate',
|
||||||
args=[volume.id])
|
args=[volume.id])
|
||||||
res = self.client.get(url)
|
res = self.client.get(url)
|
||||||
|
|
||||||
mock_get.assert_called_once_with(test.IsHttpRequest(), volume.id)
|
self.mock_volume_get.assert_called_once_with(
|
||||||
mock_pool.assert_called_once()
|
test.IsHttpRequest(), volume.id)
|
||||||
|
self.mock_pool_list.assert_called_once()
|
||||||
self.assertTemplateUsed(res,
|
self.assertTemplateUsed(res,
|
||||||
'admin/volumes/migrate_volume.html')
|
'admin/volumes/migrate_volume.html')
|
||||||
|
|
||||||
@mock.patch.object(cinder, 'volume_get')
|
@test.create_mocks({api.cinder: ['volume_get']})
|
||||||
def test_volume_migrate_get_volume_get_exception(self, mock_get):
|
def test_volume_migrate_get_volume_get_exception(self):
|
||||||
volume = self.cinder_volumes.get(name='v2_volume')
|
volume = self.cinder_volumes.get(name='v2_volume')
|
||||||
mock_get.side_effect = self.exceptions.cinder
|
self.mock_volume_get.side_effect = self.exceptions.cinder
|
||||||
|
|
||||||
url = reverse('horizon:admin:volumes:migrate',
|
url = reverse('horizon:admin:volumes:migrate',
|
||||||
args=[volume.id])
|
args=[volume.id])
|
||||||
res = self.client.get(url)
|
res = self.client.get(url)
|
||||||
|
|
||||||
mock_get.assert_called_once_with(test.IsHttpRequest(), volume.id)
|
self.mock_volume_get.assert_called_once_with(
|
||||||
|
test.IsHttpRequest(), volume.id)
|
||||||
self.assertRedirectsNoFollow(res, INDEX_URL)
|
self.assertRedirectsNoFollow(res, INDEX_URL)
|
||||||
|
|
||||||
@mock.patch.object(cinder, 'volume_get')
|
@test.create_mocks({api.cinder: ['volume_get', 'pool_list']})
|
||||||
@mock.patch.object(cinder, 'pool_list')
|
def test_volume_migrate_list_pool_get_exception(self):
|
||||||
def test_volume_migrate_list_pool_get_exception(self, mock_pool, mock_get):
|
|
||||||
volume = self.cinder_volumes.get(name='v2_volume')
|
volume = self.cinder_volumes.get(name='v2_volume')
|
||||||
|
|
||||||
mock_get.return_value = volume
|
self.mock_volume_get.return_value = volume
|
||||||
mock_pool.side_effect = self.exceptions.cinder
|
self.mock_pool_list.side_effect = self.exceptions.cinder
|
||||||
|
|
||||||
url = reverse('horizon:admin:volumes:migrate',
|
url = reverse('horizon:admin:volumes:migrate',
|
||||||
args=[volume.id])
|
args=[volume.id])
|
||||||
res = self.client.get(url)
|
res = self.client.get(url)
|
||||||
|
|
||||||
mock_get.assert_called_once_with(test.IsHttpRequest(), volume.id)
|
self.mock_volume_get.assert_called_once_with(
|
||||||
mock_pool.assert_called_once()
|
test.IsHttpRequest(), volume.id)
|
||||||
|
self.mock_pool_list.assert_called_once()
|
||||||
self.assertRedirectsNoFollow(res, INDEX_URL)
|
self.assertRedirectsNoFollow(res, INDEX_URL)
|
||||||
|
|
||||||
@mock.patch.object(cinder, 'volume_migrate')
|
@test.create_mocks({
|
||||||
@mock.patch.object(cinder, 'volume_get')
|
api.cinder: ['volume_migrate', 'volume_get', 'pool_list']})
|
||||||
@mock.patch.object(cinder, 'pool_list')
|
def test_volume_migrate_post(self):
|
||||||
def test_volume_migrate_post(self, mock_pool, mock_get, mock_migtate):
|
|
||||||
volume = self.cinder_volumes.get(name='v2_volume')
|
volume = self.cinder_volumes.get(name='v2_volume')
|
||||||
host = self.cinder_pools.first().name
|
host = self.cinder_pools.first().name
|
||||||
|
|
||||||
mock_get.return_value = volume
|
self.mock_volume_get.return_value = volume
|
||||||
mock_pool.return_value = self.cinder_pools.list()
|
self.mock_pool_list.return_value = self.cinder_pools.list()
|
||||||
mock_migtate.return_value = None
|
self.mock_volume_migrate.return_value = None
|
||||||
|
|
||||||
url = reverse('horizon:admin:volumes:migrate',
|
url = reverse('horizon:admin:volumes:migrate',
|
||||||
args=[volume.id])
|
args=[volume.id])
|
||||||
res = self.client.post(url, {'host': host, 'volume_id': volume.id})
|
res = self.client.post(url, {'host': host, 'volume_id': volume.id})
|
||||||
|
|
||||||
mock_get.assert_called_once_with(test.IsHttpRequest(), volume.id)
|
self.mock_volume_get.assert_called_once_with(
|
||||||
mock_pool.assert_called_once()
|
test.IsHttpRequest(), volume.id)
|
||||||
mock_migtate.assert_called_once_with(test.IsHttpRequest(),
|
self.mock_pool_list.assert_called_once()
|
||||||
volume.id, host, False)
|
self.mock_volume_migrate.assert_called_once_with(
|
||||||
|
test.IsHttpRequest(), volume.id, host, False)
|
||||||
self.assertNoFormErrors(res)
|
self.assertNoFormErrors(res)
|
||||||
self.assertRedirectsNoFollow(res, INDEX_URL)
|
self.assertRedirectsNoFollow(res, INDEX_URL)
|
||||||
|
|
||||||
@mock.patch.object(cinder, 'volume_migrate')
|
@test.create_mocks({
|
||||||
@mock.patch.object(cinder, 'volume_get')
|
api.cinder: ['volume_migrate', 'volume_get', 'pool_list']})
|
||||||
@mock.patch.object(cinder, 'pool_list')
|
def test_volume_migrate_post_api_exception(self):
|
||||||
def test_volume_migrate_post_api_exception(self, mock_pool, mock_get,
|
|
||||||
mock_migtate):
|
|
||||||
volume = self.cinder_volumes.get(name='v2_volume')
|
volume = self.cinder_volumes.get(name='v2_volume')
|
||||||
host = self.cinder_pools.first().name
|
host = self.cinder_pools.first().name
|
||||||
|
|
||||||
mock_get.return_value = volume
|
self.mock_volume_get.return_value = volume
|
||||||
mock_pool.return_value = self.cinder_pools.list()
|
self.mock_pool_list.return_value = self.cinder_pools.list()
|
||||||
mock_migtate.side_effect = self.exceptions.cinder
|
self.mock_volume_migrate.side_effect = self.exceptions.cinder
|
||||||
|
|
||||||
url = reverse('horizon:admin:volumes:migrate',
|
url = reverse('horizon:admin:volumes:migrate',
|
||||||
args=[volume.id])
|
args=[volume.id])
|
||||||
res = self.client.post(url, {'host': host, 'volume_id': volume.id})
|
res = self.client.post(url, {'host': host, 'volume_id': volume.id})
|
||||||
|
|
||||||
mock_get.assert_called_once_with(test.IsHttpRequest(), volume.id)
|
self.mock_volume_get.assert_called_once_with(
|
||||||
mock_pool.assert_called_once()
|
test.IsHttpRequest(), volume.id)
|
||||||
mock_migtate.assert_called_once_with(test.IsHttpRequest(), volume.id,
|
self.mock_pool_list.assert_called_once()
|
||||||
host, False)
|
self.mock_volume_migrate.assert_called_once_with(
|
||||||
|
test.IsHttpRequest(), volume.id, host, False)
|
||||||
self.assertRedirectsNoFollow(res, INDEX_URL)
|
self.assertRedirectsNoFollow(res, INDEX_URL)
|
||||||
|
|
||||||
def test_get_volume_status_choices_without_current(self):
|
def test_get_volume_status_choices_without_current(self):
|
||||||
@ -374,19 +373,24 @@ class VolumeTests(test.BaseAdminViewTests):
|
|||||||
self.assertNotIn(current_status,
|
self.assertNotIn(current_status,
|
||||||
[status[0] for status in status_choices])
|
[status[0] for status in status_choices])
|
||||||
|
|
||||||
@mock.patch.object(cinder, 'volume_get')
|
@test.create_mocks({api.cinder: ['volume_get']})
|
||||||
def test_update_volume_status_get(self, mock_get):
|
def test_update_volume_status_get(self):
|
||||||
volume = self.cinder_volumes.get(name='v2_volume')
|
volume = self.cinder_volumes.get(name='v2_volume')
|
||||||
mock_get.return_value = volume
|
self.mock_volume_get.return_value = volume
|
||||||
|
|
||||||
url = reverse('horizon:admin:volumes:update_status',
|
url = reverse('horizon:admin:volumes:update_status',
|
||||||
args=[volume.id])
|
args=[volume.id])
|
||||||
res = self.client.get(url)
|
res = self.client.get(url)
|
||||||
status_option = "<option value=\"%s\"></option>" % volume.status
|
status_option = "<option value=\"%s\"></option>" % volume.status
|
||||||
|
|
||||||
mock_get.assert_called_once_with(test.IsHttpRequest(), volume.id)
|
self.mock_volume_get.assert_called_once_with(
|
||||||
|
test.IsHttpRequest(), volume.id)
|
||||||
self.assertNotContains(res, status_option)
|
self.assertNotContains(res, status_option)
|
||||||
|
|
||||||
|
@test.create_mocks({
|
||||||
|
api.nova: ['server_get'],
|
||||||
|
api.cinder: ['tenant_absolute_limits', 'volume_get',
|
||||||
|
'volume_snapshot_list', 'message_list']})
|
||||||
def test_detail_view_snapshot_tab(self):
|
def test_detail_view_snapshot_tab(self):
|
||||||
volume = self.cinder_volumes.first()
|
volume = self.cinder_volumes.first()
|
||||||
server = self.servers.first()
|
server = self.servers.first()
|
||||||
@ -395,25 +399,16 @@ class VolumeTests(test.BaseAdminViewTests):
|
|||||||
if snapshot.volume_id == volume.id]
|
if snapshot.volume_id == volume.id]
|
||||||
volume.attachments = [{"server_id": server.id}]
|
volume.attachments = [{"server_id": server.id}]
|
||||||
volume_limits = self.cinder_limits['absolute']
|
volume_limits = self.cinder_limits['absolute']
|
||||||
with mock.patch.object(api.nova, 'server_get',
|
|
||||||
return_value=server) as mock_server_get, \
|
|
||||||
mock.patch.object(
|
|
||||||
cinder, 'tenant_absolute_limits',
|
|
||||||
return_value=volume_limits) as mock_limits, \
|
|
||||||
mock.patch.object(
|
|
||||||
cinder, 'volume_get',
|
|
||||||
return_value=volume) as mock_volume_get, \
|
|
||||||
mock.patch.object(
|
|
||||||
cinder, 'volume_snapshot_list',
|
|
||||||
return_value=this_volume_snapshots) \
|
|
||||||
as mock_snapshot_list, \
|
|
||||||
mock.patch.object(
|
|
||||||
cinder, 'message_list',
|
|
||||||
return_value=[]) as mock_message_list:
|
|
||||||
|
|
||||||
url = (reverse(DETAIL_URL, args=[volume.id]) + '?' +
|
self.mock_server_get.return_value = server
|
||||||
'='.join(['tab', 'volume_details__snapshots_tab']))
|
self.mock_tenant_absolute_limits.return_value = volume_limits
|
||||||
res = self.client.get(url)
|
self.mock_volume_get.return_value = volume
|
||||||
|
self.mock_volume_snapshot_list.return_value = this_volume_snapshots
|
||||||
|
self.mock_message_list.return_value = []
|
||||||
|
|
||||||
|
url = (reverse(DETAIL_URL, args=[volume.id]) + '?' +
|
||||||
|
'='.join(['tab', 'volume_details__snapshots_tab']))
|
||||||
|
res = self.client.get(url)
|
||||||
|
|
||||||
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
|
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
|
||||||
self.assertEqual(res.context['volume'].id, volume.id)
|
self.assertEqual(res.context['volume'].id, volume.id)
|
||||||
@ -421,15 +416,15 @@ class VolumeTests(test.BaseAdminViewTests):
|
|||||||
len(this_volume_snapshots))
|
len(this_volume_snapshots))
|
||||||
self.assertNoMessages()
|
self.assertNoMessages()
|
||||||
|
|
||||||
mock_server_get.assert_called_once_with(test.IsHttpRequest(),
|
self.mock_server_get.assert_called_once_with(test.IsHttpRequest(),
|
||||||
server.id)
|
server.id)
|
||||||
mock_volume_get.assert_called_once_with(test.IsHttpRequest(),
|
self.mock_tenant_absolute_limits.assert_called_once()
|
||||||
volume.id)
|
self.mock_volume_get.assert_called_once_with(test.IsHttpRequest(),
|
||||||
mock_snapshot_list.assert_called_once_with(
|
volume.id)
|
||||||
|
self.mock_volume_snapshot_list.assert_called_once_with(
|
||||||
test.IsHttpRequest(),
|
test.IsHttpRequest(),
|
||||||
search_opts={'volume_id': volume.id, 'all_tenants': True})
|
search_opts={'volume_id': volume.id, 'all_tenants': True})
|
||||||
mock_limits.assert_called_once()
|
self.mock_message_list.assert_called_once_with(
|
||||||
mock_message_list.assert_called_once_with(
|
|
||||||
test.IsHttpRequest(),
|
test.IsHttpRequest(),
|
||||||
{
|
{
|
||||||
'resource_uuid': volume.id,
|
'resource_uuid': volume.id,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user