tuskar-ui/tuskar_ui/test/api_tests/tuskar_tests.py
Ladislav Smola 7008d86283 Adding tests for generating parameters
Adding tests for generating passwords and certificates.

Change-Id: I0fb09e4004b1c5f0cb2aa0366965abaa1e470f62
2014-10-03 14:58:52 +02:00

282 lines
11 KiB
Python

#
# 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 __future__ import absolute_import
import contextlib
from mock import patch, call # noqa
from tuskar_ui import api
from tuskar_ui.test import helpers as test
class TuskarAPITests(test.APITestCase):
def test_plan_create(self):
plan = self.tuskarclient_plans.first()
with patch('tuskarclient.v2.plans.PlanManager.create',
return_value=plan):
ret_val = api.tuskar.Plan.create(self.request, {}, {})
self.assertIsInstance(ret_val, api.tuskar.Plan)
def test_plan_list(self):
plans = self.tuskarclient_plans.list()
with patch('tuskarclient.v2.plans.PlanManager.list',
return_value=plans):
ret_val = api.tuskar.Plan.list(self.request)
for plan in ret_val:
self.assertIsInstance(plan, api.tuskar.Plan)
self.assertEqual(1, len(ret_val))
def test_plan_get(self):
plan = self.tuskarclient_plans.first()
with patch('tuskarclient.v2.plans.PlanManager.get',
return_value=plan):
ret_val = api.tuskar.Plan.get(self.request, plan.uuid)
self.assertIsInstance(ret_val, api.tuskar.Plan)
def test_plan_get_the_plan(self):
plan = self.tuskarclient_plans.first()
with patch('tuskarclient.v2.plans.PlanManager.list',
return_value=[plan]):
with patch('tuskarclient.v2.plans.PlanManager.create',
return_value=plan):
ret_val = api.tuskar.Plan.get_the_plan(self.request)
self.assertIsInstance(ret_val, api.tuskar.Plan)
def test_plan_delete(self):
plan = self.tuskarclient_plans.first()
with patch('tuskarclient.v2.plans.PlanManager.delete',
return_value=None):
api.tuskar.Plan.delete(self.request, plan.uuid)
def test_plan_role_list(self):
with patch('tuskarclient.v2.plans.PlanManager.get',
return_value=[]):
plan = api.tuskar.Plan(self.tuskarclient_plans.first(),
self.request)
with patch('tuskarclient.v2.roles.RoleManager.list',
return_value=self.tuskarclient_roles.list()):
ret_val = plan.role_list
self.assertEqual(4, len(ret_val))
for r in ret_val:
self.assertIsInstance(r, api.tuskar.Role)
def test_role_list(self):
roles = self.tuskarclient_roles.list()
with patch('tuskarclient.v2.roles.RoleManager.list',
return_value=roles):
ret_val = api.tuskar.Role.list(self.request)
for r in ret_val:
self.assertIsInstance(r, api.tuskar.Role)
self.assertEqual(4, len(ret_val))
def test_role_get(self):
roles = self.tuskarclient_roles.list()
with patch('tuskarclient.v2.roles.RoleManager.list',
return_value=roles):
ret_val = api.tuskar.Role.get(self.request,
roles[0].uuid)
self.assertIsInstance(ret_val, api.tuskar.Role)
def test_role_get_by_image(self):
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
image = self.glanceclient_images.first()
roles = self.tuskarclient_roles.list()
with patch('tuskarclient.v2.roles.RoleManager.list',
return_value=roles):
ret_val = api.tuskar.Role.get_by_image(
self.request, plan, image)
self.assertIsInstance(ret_val, api.tuskar.Role)
self.assertEqual(ret_val.name, 'Controller')
def test_parameter_stripped_name(self):
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
param = plan.parameter('Controller-1::count')
ret_val = param.stripped_name
self.assertEqual(ret_val, 'count')
def test_parameter_role(self):
plan = api.tuskar.Plan(self.tuskarclient_plans.first(),
request=self.request)
param = plan.parameter('Controller-1::count')
roles = self.tuskarclient_roles.list()
with patch('tuskarclient.v2.roles.RoleManager.list',
return_value=roles):
ret_val = param.role
self.assertIsInstance(ret_val, api.tuskar.Role)
self.assertEqual(ret_val.name, 'Controller')
def test_list_generated_parameters(self):
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
with contextlib.nested(
patch('tuskar_ui.api.tuskar.Plan.parameter_list',
return_value=plan.parameters),
) as (mock_parameter_list, ):
ret_val = plan.list_generated_parameters()
self.assertEqual(
ret_val,
{'Controller-1::KeystoneCACertificate': {
'description': 'Keystone CA CertificateAdmin',
'hidden': True,
'name': 'Controller-1::KeystoneCACertificate',
'value': 'unset',
'label': 'Keystone CA CertificateAdmin'},
'Controller-1::SnmpdReadonlyUserPassword': {
'description': 'Snmpd password',
'hidden': True,
'name': 'Controller-1::SnmpdReadonlyUserPassword',
'value': '',
'label': 'Snmpd password'},
'Controller-1::AdminPassword': {
'description': 'Admin password',
'hidden': True,
'name': 'Controller-1::AdminPassword',
'value': 'unset',
'label': 'Admin Password'},
'Controller-1::AdminToken': {
'description': 'Admin Token',
'hidden': True,
'name': 'Controller-1::AdminToken',
'value': '',
'label': 'Admin Token'},
'Compute-1::SnmpdReadonlyUserPassword': {
'description': 'Snmpd password',
'hidden': True,
'name': 'Compute-1::SnmpdReadonlyUserPassword',
'value': 'unset',
'label': 'Snmpd password'}})
mock_parameter_list.assert_called_once_with()
def test_list_generated_parameters_without_prefix(self):
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
with contextlib.nested(
patch('tuskar_ui.api.tuskar.Plan.parameter_list',
return_value=plan.parameters),
) as (mock_parameter_list, ):
ret_val = plan.list_generated_parameters(with_prefix=False)
self.assertEqual(
ret_val,
{'SnmpdReadonlyUserPassword': {
'description': 'Snmpd password',
'hidden': True,
'name': 'Compute-1::SnmpdReadonlyUserPassword',
'value': 'unset',
'label': 'Snmpd password'},
'KeystoneCACertificate': {
'description': 'Keystone CA CertificateAdmin',
'hidden': True,
'name': 'Controller-1::KeystoneCACertificate',
'value': 'unset',
'label': 'Keystone CA CertificateAdmin'},
'AdminToken': {
'description': 'Admin Token',
'hidden': True,
'name': 'Controller-1::AdminToken',
'value': '',
'label': 'Admin Token'},
'AdminPassword': {
'description': 'Admin password',
'hidden': True,
'name': 'Controller-1::AdminPassword',
'value': 'unset',
'label': 'Admin Password'}})
mock_parameter_list.assert_called_once_with()
def test_make_keystone_certificates(self):
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
with contextlib.nested(
patch('os_cloud_config.keystone_pki.create_ca_pair',
return_value=('ca_key_pem', 'ca_cert_pem')),
patch('os_cloud_config.keystone_pki.create_signing_pair',
return_value=('signing_key_pem', 'signing_cert_pem'))
) as (mock_create_ca_pair, mock_create_signing_pair):
ret_val = plan._make_keystone_certificates(
{'KeystoneSigningCertificate': {}})
self.assertEqual(
ret_val,
{'KeystoneCACertificate': 'ca_cert_pem',
'KeystoneSigningCertificate': 'signing_cert_pem',
'KeystoneSigningKey': 'signing_key_pem'})
mock_create_ca_pair.assert_called_once_with()
mock_create_signing_pair.assert_called_once_with(
'ca_key_pem', 'ca_cert_pem')
def test_make_generated_parameters(self):
plan = api.tuskar.Plan(self.tuskarclient_plans.first())
with contextlib.nested(
patch('tuskar_ui.api.tuskar.Plan.parameter_list',
return_value=plan.parameters),
patch('tuskar_ui.api.tuskar.Plan._make_keystone_certificates',
return_value={'KeystoneCACertificate': 'ca_cert_pem'}),
patch('tuskar_ui.api.tuskar.password_generator',
return_value='generated_password')
) as (mock_parameter_list, mock_make_keystone_certificates,
mock_password_generator):
ret_val = plan.make_generated_parameters()
self.assertEqual(
ret_val,
{'Controller-1::KeystoneCACertificate': 'ca_cert_pem',
'Controller-1::SnmpdReadonlyUserPassword': 'generated_password',
'Controller-1::AdminPassword': 'generated_password',
'Controller-1::AdminToken': 'generated_password',
'Compute-1::SnmpdReadonlyUserPassword': 'generated_password'})
mock_parameter_list.assert_has_calls([
call(), call()])
mock_make_keystone_certificates.assert_called_once_with({
'SnmpdReadonlyUserPassword': {
'description': 'Snmpd password',
'hidden': True,
'name': 'Compute-1::SnmpdReadonlyUserPassword',
'value': 'unset',
'label': 'Snmpd password'},
'KeystoneCACertificate': {
'description': 'Keystone CA CertificateAdmin',
'hidden': True, 'name':
'Controller-1::KeystoneCACertificate',
'value': 'unset',
'label': 'Keystone CA CertificateAdmin'},
'AdminToken': {
'description': 'Admin Token',
'hidden': True,
'name': 'Controller-1::AdminToken',
'value': '', 'label': 'Admin Token'},
'AdminPassword': {
'description': 'Admin password',
'hidden': True,
'name': 'Controller-1::AdminPassword',
'value': 'unset',
'label': 'Admin Password'}})