Adding tests for generating parameters

Adding tests for generating passwords and certificates.

Change-Id: I0fb09e4004b1c5f0cb2aa0366965abaa1e470f62
This commit is contained in:
Ladislav Smola 2014-10-03 13:37:44 +02:00
parent 075cb20375
commit 7008d86283
2 changed files with 182 additions and 64 deletions

View File

@ -12,8 +12,9 @@
# under the License. # under the License.
from __future__ import absolute_import from __future__ import absolute_import
import contextlib
from mock import patch # noqa from mock import patch, call # noqa
from tuskar_ui import api from tuskar_ui import api
from tuskar_ui.test import helpers as test from tuskar_ui.test import helpers as test
@ -128,3 +129,153 @@ class TuskarAPITests(test.APITestCase):
ret_val = param.role ret_val = param.role
self.assertIsInstance(ret_val, api.tuskar.Role) self.assertIsInstance(ret_val, api.tuskar.Role)
self.assertEqual(ret_val.name, 'Controller') 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'}})

View File

@ -53,119 +53,86 @@ def data(TEST):
'name': 'Controller-1::count', 'name': 'Controller-1::count',
'label': 'Controller Node Count', 'label': 'Controller Node Count',
'description': 'Controller node count', 'description': 'Controller node count',
'hidden': 'false', 'hidden': False,
'value': 1, 'value': 1,
}, { }, {
'name': 'Compute-1::count', 'name': 'Compute-1::count',
'label': 'Compute Node Count', 'label': 'Compute Node Count',
'description': 'Compute node count', 'description': 'Compute node count',
'hidden': 'false', 'hidden': False,
'value': 42, 'value': 42,
}, { }, {
'name': 'Block Storage-1::count', 'name': 'Block Storage-1::count',
'label': 'Block Sorage Node Count', 'label': 'Block Sorage Node Count',
'description': 'Block storage node count', 'description': 'Block storage node count',
'hidden': 'false', 'hidden': False,
'value': 5, 'value': 5,
}, { }, {
'name': 'Controller-1::Flavor', 'name': 'Controller-1::Flavor',
'label': 'Controller Flavor', 'label': 'Controller Flavor',
'description': 'Controller flavor', 'description': 'Controller flavor',
'hidden': 'false', 'hidden': False,
'value': 'flavor-1', 'value': 'flavor-1',
}, { }, {
'name': 'Compute-1::Flavor', 'name': 'Compute-1::Flavor',
'label': 'Compute Flavor', 'label': 'Compute Flavor',
'description': 'Compute flavor', 'description': 'Compute flavor',
'hidden': 'false', 'hidden': False,
'value': 'flavor-1', 'value': 'flavor-1',
}, { }, {
'name': 'Block Storage-1::Flavor', 'name': 'Block Storage-1::Flavor',
'label': 'Block Storage Flavor', 'label': 'Block Storage Flavor',
'description': 'Block storage flavor', 'description': 'Block storage flavor',
'hidden': 'false', 'hidden': False,
'value': 'flavor-2', 'value': 'flavor-2',
}, { }, {
'name': 'Controller-1::Image', 'name': 'Controller-1::Image',
'label': 'Controller Image ID', 'label': 'Controller Image ID',
'description': 'Controller image ID', 'description': 'Controller image ID',
'hidden': 'false', 'hidden': False,
'value': '2', 'value': '2',
}, { }, {
'name': 'Compute-1::Image', 'name': 'Compute-1::Image',
'label': 'Compute Image ID', 'label': 'Compute Image ID',
'description': 'Compute image ID', 'description': 'Compute image ID',
'hidden': 'false', 'hidden': False,
'value': '1', 'value': '1',
}, { }, {
'name': 'Block Storage-1::Image', 'name': 'Block Storage-1::Image',
'label': 'Block Storage Image ID', 'label': 'Block Storage Image ID',
'description': 'Block storage image ID', 'description': 'Block storage image ID',
'hidden': 'false', 'hidden': False,
'value': '4', 'value': '4',
}, { }, {
'name': 'controller_NovaInterfaces', 'name': 'Controller-1::KeystoneCACertificate',
'parameter_group': 'Nova', 'label': 'Keystone CA CertificateAdmin',
'type': 'String', 'description': 'Keystone CA CertificateAdmin',
'description': '', 'hidden': True,
'no_echo': 'false', 'value': 'unset',
'default': 'eth0',
}, { }, {
'name': 'controller_NeutronInterfaces', 'name': 'Controller-1::AdminPassword',
'parameter_group': 'Neutron',
'type': 'String',
'description': '',
'no_echo': 'false',
'default': 'eth0',
}, {
'name': 'compute_KeystoneHost',
'parameter_group': 'Keystone',
'type': 'String',
'description': '',
'no_echo': 'false',
'default': '',
'label': 'Keystone Host',
'value': ''
}, {
'name': 'object_storage_SwiftHashSuffix',
'parameter_group': 'Swift',
'label': 'Swift Object Storage Hash Suffix',
'type': 'String',
'description': '',
'no_echo': 'true',
'default': '',
'value': ''
}, {
'name': 'block_storage_NeutronNetworkType',
'parameter_group': 'Neutron',
'type': 'String',
'description': '',
'no_echo': 'false',
'default': 'gre',
}, {
'name': 'AdminPassword',
'label': 'Admin Password', 'label': 'Admin Password',
'description': 'Admin password', 'description': 'Admin password',
'hidden': 'false', 'hidden': True,
'value': '5ba3a69c95c668daf84c2f103ebec82d273a4897', 'value': 'unset',
}, { }, {
'name': 'AdminToken', 'name': 'Controller-1::AdminToken',
'label': 'Admin Token', 'label': 'Admin Token',
'description': 'Admin Token', 'description': 'Admin Token',
'hidden': 'false', 'hidden': True,
'value': 'aa61677c0a270880e99293c148cefee4000b2259', 'value': '',
}, { }, {
'name': 'GlancePassword', 'name': 'Controller-1::SnmpdReadonlyUserPassword',
'label': 'Glance Password', 'label': 'Snmpd password',
'description': 'Glance Password', 'description': 'Snmpd password',
'hidden': 'false', 'hidden': True,
'value': '16b4aaa3e056d07f796a93afb6010487b7b617e7', 'value': '',
}, { }, {
'name': 'NovaPassword', 'name': 'Compute-1::SnmpdReadonlyUserPassword',
'label': 'Nova Password', 'label': 'Snmpd password',
'description': 'Nova Password', 'description': 'Snmpd password',
'hidden': 'false', 'hidden': True,
'value': '67d8090ff40c0c400b08ff558233091402afc9c5', 'value': 'unset',
}], }],
}) })
TEST.tuskarclient_plans.add(plan_1) TEST.tuskarclient_plans.add(plan_1)