manila-ui/manila_ui/tests/dashboards/admin/share_types/tests.py

89 lines
3.3 KiB
Python

# Copyright (c) 2014 NetApp, Inc.
# Copyright (c) 2015 Mirantis, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from django.urls import reverse
from openstack_dashboard.api import keystone as api_keystone
from openstack_dashboard.api import neutron as api_neutron
from unittest import mock
from manila_ui.api import manila as api_manila
from manila_ui.dashboards.admin import utils
from manila_ui.tests.dashboards.project import test_data
from manila_ui.tests import helpers as test
from manila_ui.tests.test_data import keystone_data
INDEX_URL = reverse('horizon:admin:share_types:index')
class ShareTypeTests(test.BaseAdminViewTests):
def setUp(self):
super(self.__class__, self).setUp()
self.share_type = test_data.share_type
self.url = reverse('horizon:admin:share_types:update_type',
args=[self.share_type.id])
self.mock_object(
api_manila, "share_type_get",
mock.Mock(return_value=self.share_type))
self.mock_object(
api_keystone, "tenant_list",
mock.Mock(return_value=(keystone_data.projects, None)))
self.mock_object(
api_neutron, "is_service_enabled", mock.Mock(return_value=[True]))
# Reset taken list of projects to avoid test interference
utils.PROJECTS = {}
def test_create_share_type(self):
url = reverse('horizon:admin:share_types:create_type')
data = {
'is_public': True,
'name': 'my_share_type',
'spec_driver_handles_share_servers': 'False'
}
form_data = data.copy()
form_data['spec_driver_handles_share_servers'] = 'false'
self.mock_object(api_manila, "share_type_create")
res = self.client.post(url, data)
api_manila.share_type_create.assert_called_once_with(
mock.ANY, form_data['name'],
form_data['spec_driver_handles_share_servers'],
is_public=form_data['is_public'])
self.assertRedirectsNoFollow(res, INDEX_URL)
def test_update_share_type_get(self):
res = self.client.get(self.url)
api_manila.share_type_get.assert_called_once_with(
mock.ANY, self.share_type.id)
self.assertNoMessages()
self.assertTemplateUsed(res, 'admin/share_types/update.html')
def test_update_share_type_post(self):
data = {
'extra_specs': 'driver_handles_share_servers=True'
}
form_data = {
'extra_specs': {'driver_handles_share_servers': 'True'},
}
self.mock_object(api_manila, "share_type_set_extra_specs")
res = self.client.post(self.url, data)
api_manila.share_type_set_extra_specs.assert_called_once_with(
mock.ANY, self.share_type.id, form_data['extra_specs'])
self.assertRedirectsNoFollow(res, INDEX_URL)