from mock import patch, call, MagicMock from test_utils import CharmTestCase from copy import deepcopy from collections import OrderedDict import os os.environ['JUJU_UNIT_NAME'] = 'keystone' with patch('charmhelpers.core.hookenv.config') as config: import keystone_utils as utils import keystone_context from charmhelpers.contrib.openstack import context TO_PATCH = [ 'config', 'os_release', 'log', ] class TestKeystoneUtils(CharmTestCase): def setUp(self): super(TestKeystoneUtils, self).setUp(utils, TO_PATCH) self.config.side_effect = self.test_config.get self.ctxt = MagicMock() self.rsc_map = { '/etc/keystone/keystone.conf': { 'services': ['keystone'], 'contexts': [self.ctxt], }, '/etc/apache2/sites-available/openstack_https_frontend': { 'services': ['apache2'], 'contexts': [self.ctxt], }, '/etc/apache2/sites-available/openstack_https_frontend.conf': { 'services': ['apache2'], 'contexts': [self.ctxt], } } @patch('charmhelpers.contrib.openstack.templating.OSConfigRenderer') @patch('os.path.exists') @patch.object(utils, 'resource_map') def test_register_configs_apache(self, resource_map, exists, renderer): exists.return_value = False self.os_release.return_value = 'havana' fake_renderer = MagicMock() fake_renderer.register = MagicMock() renderer.return_value = fake_renderer resource_map.return_value = self.rsc_map utils.register_configs() renderer.assert_called_with( openstack_release='havana', templates_dir='templates/') ex_reg = [ call('/etc/keystone/keystone.conf', [self.ctxt]), call('/etc/apache2/sites-available/openstack_https_frontend', [self.ctxt]), call('/etc/apache2/sites-available/openstack_https_frontend.conf', [self.ctxt]), ] self.assertEquals(fake_renderer.register.call_args_list, ex_reg) def test_determine_ports(self): self.test_config.set('admin-port','80') self.test_config.set('service-port','81') result = utils.determine_ports() self.assertEquals(result, ['80', '81']) def test_determine_packages(self): result = utils.determine_packages() ex = utils.BASE_PACKAGES + ['keystone', 'haproxy', 'apache2'] self.assertEquals(set(ex), set(result))