blob: e8796c263f27ef9143f7ed757299c728abf38393 [file] [log] [blame]
import unittest2 as unittest
import nose
import tempest.config
from tempest import openstack
from tempest.common.utils.data_utils import rand_name
class BaseAdminTest(unittest.TestCase):
"""Base class for Identity Admin Tests"""
@classmethod
def setUpClass(cls):
cls.config = tempest.config.TempestConfig()
cls.admin_username = cls.config.compute_admin.username
cls.admin_password = cls.config.compute_admin.password
cls.admin_tenant = cls.config.compute_admin.tenant_name
if not(cls.admin_username and cls.admin_password and cls.admin_tenant):
raise nose.SkipTest("Missing Admin credentials in configuration")
cls.admin_os = openstack.AdminManager()
cls.client = cls.admin_os.admin_client
cls.token_client = cls.admin_os.token_client
if not cls.client.has_admin_extensions():
raise nose.SkipTest("Admin extensions disabled")
cls.os = openstack.Manager()
cls.non_admin_client = cls.os.admin_client
cls.data = DataGenerator(cls.client)
@classmethod
def tearDownClass(cls):
cls.data.teardown_all()
def disable_user(self, user_name):
user = self.get_user_by_name(user_name)
self.client.enable_disable_user(user['id'], False)
def disable_tenant(self, tenant_name):
tenant = self.get_tenant_by_name(tenant_name)
self.client.update_tenant(tenant['id'], tenant['description'], False)
def get_user_by_name(self, name):
_, users = self.client.get_users()
user = [u for u in users if u['name'] == name]
if len(user) > 0:
return user[0]
def get_tenant_by_name(self, name):
_, tenants = self.client.get_tenants()
tenant = [t for t in tenants if t['name'] == name]
if len(tenant) > 0:
return tenant[0]
def get_role_by_name(self, name):
_, roles = self.client.get_roles()
role = [r for r in roles if r['name'] == name]
if len(role) > 0:
return role[0]
class DataGenerator(object):
def __init__(self, client):
self.client = client
self.users = []
self.tenants = []
self.roles = []
self.role_name = None
def setup_test_user(self):
"""Set up a test user"""
self.setup_test_tenant()
self.test_user = rand_name('test_user_')
self.test_password = rand_name('pass_')
self.test_email = self.test_user + '@testmail.tm'
resp, self.user = self.client.create_user(self.test_user,
self.test_password,
self.tenant['id'],
self.test_email)
self.users.append(self.user)
def setup_test_tenant(self):
"""Set up a test tenant"""
self.test_tenant = rand_name('test_tenant_')
self.test_description = rand_name('desc_')
resp, self.tenant = self.client.create_tenant(
name=self.test_tenant,
description=self.test_description)
self.tenants.append(self.tenant)
def setup_test_role(self):
"""Set up a test role"""
self.role_name = rand_name('role')
resp, role = self.client.create_role(self.role_name)
self.roles.append(role)
def teardown_all(self):
for user in self.users:
self.client.delete_user(user['id'])
for tenant in self.tenants:
self.client.delete_tenant(tenant['id'])
for role in self.roles:
self.client.delete_role(role['id'])