blob: 64b8993f2a73cadde0714361d310bac9a829e8ce [file] [log] [blame]
Jay Pipesf38eaac2012-06-21 13:37:35 -04001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 OpenStack, LLC
4# All Rights Reserved.
5#
6# Licensed under the Apache License, Version 2.0 (the "License"); you may
7# not use this file except in compliance with the License. You may obtain
8# a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations
16# under the License.
17
Jay Pipesf38eaac2012-06-21 13:37:35 -040018
Matthew Treinish481466b2012-12-20 17:16:01 -050019from tempest import clients
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070020from tempest.common.utils.data_utils import rand_name
Attila Fazekasdc216422013-01-29 15:12:14 +010021import tempest.test
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070022
23
Attila Fazekas0d0c6162013-02-24 09:14:23 +010024class BaseIdentityAdminTest(tempest.test.BaseTestCase):
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070025
26 @classmethod
27 def setUpClass(cls):
Attila Fazekas407b6db2013-01-19 12:48:36 +010028 os = clients.AdminManager(interface=cls._interface)
29 cls.client = os.identity_client
Vincent Hou6b8a7b72012-08-25 01:24:33 +080030 cls.token_client = os.token_client
rajalakshmi-ganesanab426722013-02-08 15:49:15 +053031 cls.endpoints_client = os.endpoints_client
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070032
33 if not cls.client.has_admin_extensions():
ivan-zhu1feeb382013-01-24 10:14:39 +080034 raise cls.skipException("Admin extensions disabled")
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070035
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070036 cls.data = DataGenerator(cls.client)
37
Attila Fazekascadcb1f2013-01-21 23:10:53 +010038 os = clients.Manager(interface=cls._interface)
Attila Fazekas407b6db2013-01-19 12:48:36 +010039 cls.non_admin_client = os.identity_client
Jay Pipesf38eaac2012-06-21 13:37:35 -040040
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070041 @classmethod
42 def tearDownClass(cls):
43 cls.data.teardown_all()
44
45 def disable_user(self, user_name):
46 user = self.get_user_by_name(user_name)
47 self.client.enable_disable_user(user['id'], False)
48
49 def disable_tenant(self, tenant_name):
50 tenant = self.get_tenant_by_name(tenant_name)
Giampaolo Lauriaafd71582013-01-15 13:44:59 -050051 self.client.update_tenant(tenant['id'], enabled=False)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070052
53 def get_user_by_name(self, name):
54 _, users = self.client.get_users()
55 user = [u for u in users if u['name'] == name]
56 if len(user) > 0:
57 return user[0]
58
59 def get_tenant_by_name(self, name):
Rohit Karajgi69e80a02012-05-15 03:54:04 -070060 _, tenants = self.client.list_tenants()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070061 tenant = [t for t in tenants if t['name'] == name]
62 if len(tenant) > 0:
63 return tenant[0]
64
65 def get_role_by_name(self, name):
Rohit Karajgi69e80a02012-05-15 03:54:04 -070066 _, roles = self.client.list_roles()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070067 role = [r for r in roles if r['name'] == name]
68 if len(role) > 0:
69 return role[0]
70
71
72class DataGenerator(object):
73
74 def __init__(self, client):
75 self.client = client
76 self.users = []
77 self.tenants = []
78 self.roles = []
79 self.role_name = None
80
81 def setup_test_user(self):
Sean Daguef237ccb2013-01-04 15:19:14 -050082 """Set up a test user."""
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070083 self.setup_test_tenant()
84 self.test_user = rand_name('test_user_')
85 self.test_password = rand_name('pass_')
86 self.test_email = self.test_user + '@testmail.tm'
87 resp, self.user = self.client.create_user(self.test_user,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080088 self.test_password,
89 self.tenant['id'],
90 self.test_email)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070091 self.users.append(self.user)
92
93 def setup_test_tenant(self):
Sean Daguef237ccb2013-01-04 15:19:14 -050094 """Set up a test tenant."""
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070095 self.test_tenant = rand_name('test_tenant_')
96 self.test_description = rand_name('desc_')
97 resp, self.tenant = self.client.create_tenant(
Zhongyue Luoa1343de2013-01-04 16:21:35 +080098 name=self.test_tenant,
99 description=self.test_description)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700100 self.tenants.append(self.tenant)
101
102 def setup_test_role(self):
Sean Daguef237ccb2013-01-04 15:19:14 -0500103 """Set up a test role."""
Rohit Karajgi69e80a02012-05-15 03:54:04 -0700104 self.test_role = rand_name('role')
105 resp, self.role = self.client.create_role(self.test_role)
106 self.roles.append(self.role)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700107
108 def teardown_all(self):
109 for user in self.users:
110 self.client.delete_user(user['id'])
111 for tenant in self.tenants:
112 self.client.delete_tenant(tenant['id'])
113 for role in self.roles:
114 self.client.delete_role(role['id'])