Charmed-Kubernetes/nrpe/mod/charmhelpers/tests/contrib/openstack/test_keystone_utils.py

123 lines
4.6 KiB
Python

#!/usr/bin/env python
import unittest
from mock import patch, PropertyMock
import charmhelpers.contrib.openstack.keystone as keystone
TO_PATCH = [
'apt_install',
"log",
"ERROR",
"IdentityServiceContext",
]
class KeystoneTests(unittest.TestCase):
def setUp(self):
for m in TO_PATCH:
setattr(self, m, self._patch(m))
def _patch(self, method):
_m = patch('charmhelpers.contrib.openstack.keystone.' + method)
mock = _m.start()
self.addCleanup(_m.stop)
return mock
def test_get_keystone_manager(self):
manager = keystone.get_keystone_manager(
'test-endpoint', 2, token="12345"
)
self.assertTrue(isinstance(manager, keystone.KeystoneManager2))
manager = keystone.get_keystone_manager(
'test-endpoint', 3, token="12345")
self.assertTrue(isinstance(manager, keystone.KeystoneManager3))
self.assertRaises(ValueError, keystone.get_keystone_manager,
'test-endpoint', 4, token="12345")
def test_resolve_sevice_id_v2(self):
class ServiceList(list):
def __iter__(self):
class Service(object):
_info = {
'type': 'metering',
'name': "ceilometer",
'id': "uuid-uuid",
}
yield Service()
manager = keystone.get_keystone_manager('test-endpoint', 2,
token="1234")
manager.api.services.list = PropertyMock(return_value=ServiceList())
self.assertTrue(manager.service_exists(service_name="ceilometer",
service_type="metering"))
self.assertFalse(manager.service_exists(service_name="barbican"))
self.assertFalse(manager.service_exists(service_name="barbican",
service_type="openstack"))
def test_resolve_sevice_id_v3(self):
class ServiceList(list):
def __iter__(self):
class Service(object):
_info = {
'type': 'metering',
'name': "ceilometer",
'id': "uuid-uuid",
}
yield Service()
manager = keystone.get_keystone_manager('test-endpoint', 3,
token="12345")
manager.api.services.list = PropertyMock(return_value=ServiceList())
self.assertTrue(manager.service_exists(service_name="ceilometer",
service_type="metering"))
self.assertFalse(manager.service_exists(service_name="barbican"))
self.assertFalse(manager.service_exists(service_name="barbican",
service_type="openstack"))
def test_get_api_suffix(self):
self.assertEquals(keystone.get_api_suffix(2), "v2.0")
self.assertEquals(keystone.get_api_suffix(3), "v3")
def test_format_endpoint(self):
self.assertEquals(keystone.format_endpoint(
"http", "10.0.0.5", "5000", 2), "http://10.0.0.5:5000/v2.0/")
def test_get_keystone_manager_from_identity_service_context(self):
class FakeIdentityServiceV2(object):
def __call__(self, *args, **kwargs):
return {
"service_protocol": "https",
"service_host": "10.5.0.5",
"service_port": "5000",
"api_version": "2.0",
"admin_user": "amdin",
"admin_password": "admin",
"admin_tenant_name": "admin_tenant"
}
self.IdentityServiceContext.return_value = FakeIdentityServiceV2()
manager = keystone.get_keystone_manager_from_identity_service_context()
self.assertIsInstance(manager, keystone.KeystoneManager2)
class FakeIdentityServiceV3(object):
def __call__(self, *args, **kwargs):
return {
"service_protocol": "https",
"service_host": "10.5.0.5",
"service_port": "5000",
"api_version": "3",
"admin_user": "amdin",
"admin_password": "admin",
"admin_tenant_name": "admin_tenant"
}
self.IdentityServiceContext.return_value = FakeIdentityServiceV3()
manager = keystone.get_keystone_manager_from_identity_service_context()
self.assertIsInstance(manager, keystone.KeystoneManager3)