Jiri Tomasek b93f81011f Simplified service config updates
Change-Id: Ied0a73435b04701f28092535924bf52edb2bb1b3
2015-05-27 13:52:03 +02:00

131 lines
5.1 KiB
Python

# -*- coding: utf8 -*-
#
# 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.
import contextlib
from django.core import urlresolvers
from mock import patch, call, ANY # noqa
from openstack_dashboard.test.test_data import utils
from tuskar_ui import api
from tuskar_ui.test import helpers as test
from tuskar_ui.test.test_data import tuskar_data
INDEX_URL = urlresolvers.reverse(
'horizon:infrastructure:parameters:index')
SIMPLE_SERVICE_CONFIG_URL = urlresolvers.reverse(
'horizon:infrastructure:parameters:simple_service_configuration')
ADVANCED_SERVICE_CONFIG_URL = urlresolvers.reverse(
'horizon:infrastructure:parameters:advanced_service_configuration')
TEST_DATA = utils.TestDataContainer()
tuskar_data.data(TEST_DATA)
class ParametersTest(test.BaseAdminViewTests):
def test_index(self):
plans = [api.tuskar.Plan(plan)
for plan in self.tuskarclient_plans.list()]
roles = [api.tuskar.Role(role)
for role in self.tuskarclient_roles.list()]
with contextlib.nested(
patch('tuskar_ui.api.tuskar.Plan.list',
return_value=plans),
patch('tuskar_ui.api.tuskar.Role.list',
return_value=roles),
):
res = self.client.get(INDEX_URL)
self.assertTemplateUsed(res, 'infrastructure/parameters/index.html')
def test_simple_service_config_get(self):
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
role = api.tuskar.Role(self.tuskarclient_roles.first())
with contextlib.nested(
patch('tuskar_ui.api.tuskar.Plan.get_the_plan',
return_value=plan),
patch('tuskar_ui.api.tuskar.Plan.get_role_by_name',
return_value=role),
):
res = self.client.get(SIMPLE_SERVICE_CONFIG_URL)
self.assertTemplateUsed(
res, 'infrastructure/parameters/simple_service_config.html')
def test_advanced_service_config_post(self):
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
roles = [api.tuskar.Role(role)
for role in self.tuskarclient_roles.list()]
parameters = [api.tuskar.Parameter(p, plan=self)
for p in plan.parameters]
data = {p.name: unicode(p.value) for p in parameters}
with contextlib.nested(
patch('tuskar_ui.api.tuskar.Plan.get_the_plan',
return_value=plan),
patch('tuskar_ui.api.tuskar.Plan.role_list',
return_value=roles),
patch('tuskar_ui.api.tuskar.Plan.parameter_list',
return_value=parameters),
patch('tuskar_ui.api.tuskar.Plan.patch',
return_value=plan),
) as (get_the_plan, role_list, parameter_list, plan_patch):
res = self.client.post(ADVANCED_SERVICE_CONFIG_URL, data)
self.assertRedirectsNoFollow(res, INDEX_URL)
plan_patch.assert_called_once_with(ANY, plan.uuid, data)
def test_simple_service_config_post(self):
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
roles = [api.tuskar.Role(role) for role in
self.tuskarclient_roles.list()]
plan.role_list = roles
data = {
'virt_type': 'qemu',
'snmp_password': 'password',
'cinder_iscsi_helper': 'lioadm',
'cloud_name': 'cloud_name',
'neutron_public_interface': 'eth0',
'extra_config': '{}'
}
with contextlib.nested(
patch('tuskar_ui.api.tuskar.Plan.get_the_plan',
return_value=plan),
patch('tuskar_ui.api.tuskar.Plan.patch',
return_value=plan),
patch('tuskar_ui.api.tuskar.Plan.get_role_by_name',
return_value=roles[0]),
) as (get_the_plan, plan_patch, get_role_by_name):
res = self.client.post(SIMPLE_SERVICE_CONFIG_URL, data)
self.assertRedirectsNoFollow(res, INDEX_URL)
plan_patch.assert_called_once_with(ANY, plan.uuid, {
'Controller-1::CloudName': u'cloud_name',
'Controller-1::SnmpdReadonlyUserPassword': u'password',
'Controller-1::NeutronPublicInterface': u'eth0',
'Controller-1::CinderISCSIHelper': u'lioadm',
'Controller-1::NovaComputeLibvirtType': u'qemu',
'Compute-1::SnmpdReadonlyUserPassword': u'password',
'Controller-1::NtpServer': u'',
'Controller-1::ExtraConfig': u'{}',
'Compute-1::ExtraConfig': u'{}',
'Block Storage-1::ExtraConfig': u'{}',
'Object Storage-1::ExtraConfig': u'{}'})