123 lines
4.6 KiB
Python
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)
|