blob: d5ba944a83b9062a34af370dfd39f36557357f4c [file] [log] [blame]
Rohit Karajgi6b1e1542012-05-14 05:55:54 -07001import unittest2 as unittest
2import nose
3import tempest.config
4from tempest import openstack
5from tempest.common.utils.data_utils import rand_name
6
7
8class BaseAdminTest(unittest.TestCase):
9 """Base class for Identity Admin Tests"""
10
11 @classmethod
12 def setUpClass(cls):
13 cls.config = tempest.config.TempestConfig()
14 cls.admin_username = cls.config.compute_admin.username
15 cls.admin_password = cls.config.compute_admin.password
16 cls.admin_tenant = cls.config.compute_admin.tenant_name
17
18 if not(cls.admin_username and cls.admin_password and cls.admin_tenant):
19 raise nose.SkipTest("Missing Admin credentials in configuration")
20
21 cls.admin_os = openstack.AdminManager()
22 cls.client = cls.admin_os.admin_client
23 cls.token_client = cls.admin_os.token_client
24
25 if not cls.client.has_admin_extensions():
26 raise nose.SkipTest("Admin extensions disabled")
27
28 cls.os = openstack.Manager()
29 cls.non_admin_client = cls.os.admin_client
30 cls.data = DataGenerator(cls.client)
31
32 @classmethod
33 def tearDownClass(cls):
34 cls.data.teardown_all()
35
36 def disable_user(self, user_name):
37 user = self.get_user_by_name(user_name)
38 self.client.enable_disable_user(user['id'], False)
39
40 def disable_tenant(self, tenant_name):
41 tenant = self.get_tenant_by_name(tenant_name)
42 self.client.update_tenant(tenant['id'], tenant['description'], False)
43
44 def get_user_by_name(self, name):
45 _, users = self.client.get_users()
46 user = [u for u in users if u['name'] == name]
47 if len(user) > 0:
48 return user[0]
49
50 def get_tenant_by_name(self, name):
Rohit Karajgi69e80a02012-05-15 03:54:04 -070051 _, tenants = self.client.list_tenants()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070052 tenant = [t for t in tenants if t['name'] == name]
53 if len(tenant) > 0:
54 return tenant[0]
55
56 def get_role_by_name(self, name):
Rohit Karajgi69e80a02012-05-15 03:54:04 -070057 _, roles = self.client.list_roles()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070058 role = [r for r in roles if r['name'] == name]
59 if len(role) > 0:
60 return role[0]
61
62
63class DataGenerator(object):
64
65 def __init__(self, client):
66 self.client = client
67 self.users = []
68 self.tenants = []
69 self.roles = []
70 self.role_name = None
71
72 def setup_test_user(self):
73 """Set up a test user"""
74 self.setup_test_tenant()
75 self.test_user = rand_name('test_user_')
76 self.test_password = rand_name('pass_')
77 self.test_email = self.test_user + '@testmail.tm'
78 resp, self.user = self.client.create_user(self.test_user,
79 self.test_password,
80 self.tenant['id'],
81 self.test_email)
82 self.users.append(self.user)
83
84 def setup_test_tenant(self):
85 """Set up a test tenant"""
86 self.test_tenant = rand_name('test_tenant_')
87 self.test_description = rand_name('desc_')
88 resp, self.tenant = self.client.create_tenant(
89 name=self.test_tenant,
90 description=self.test_description)
91 self.tenants.append(self.tenant)
92
93 def setup_test_role(self):
94 """Set up a test role"""
Rohit Karajgi69e80a02012-05-15 03:54:04 -070095 self.test_role = rand_name('role')
96 resp, self.role = self.client.create_role(self.test_role)
97 self.roles.append(self.role)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070098
99 def teardown_all(self):
100 for user in self.users:
101 self.client.delete_user(user['id'])
102 for tenant in self.tenants:
103 self.client.delete_tenant(tenant['id'])
104 for role in self.roles:
105 self.client.delete_role(role['id'])