blob: 8eb7d3336a79e93b39e04fb9e6bfb205ed01bbc2 [file] [log] [blame]
ZhiQiang Fan39f97222013-09-20 04:49:44 +08001# Copyright 2012 OpenStack Foundation
Jay Pipesf38eaac2012-06-21 13:37:35 -04002# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
Jay Pipesf38eaac2012-06-21 13:37:35 -040016
Andrea Frittoli422fbdf2014-03-20 10:05:18 +000017from tempest import auth
Matthew Treinish481466b2012-12-20 17:16:01 -050018from tempest import clients
Masayuki Igawa259c1132013-10-31 17:48:44 +090019from tempest.common.utils import data_utils
Matthew Treinishdb2c5972014-01-31 22:18:59 +000020from tempest import config
Attila Fazekasdc216422013-01-29 15:12:14 +010021import tempest.test
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070022
Matthew Treinishdb2c5972014-01-31 22:18:59 +000023CONF = config.CONF
24
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070025
Attila Fazekas0d0c6162013-02-24 09:14:23 +010026class BaseIdentityAdminTest(tempest.test.BaseTestCase):
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070027
28 @classmethod
29 def setUpClass(cls):
Attila Fazekasf86fa312013-07-30 19:56:39 +020030 super(BaseIdentityAdminTest, cls).setUpClass()
Matthew Treinishdb2c5972014-01-31 22:18:59 +000031 cls.os_adm = clients.AdminManager(interface=cls._interface)
32 cls.os = clients.Manager(interface=cls._interface)
Jay Pipesf38eaac2012-06-21 13:37:35 -040033
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070034 @classmethod
Matthew Treinishdb2c5972014-01-31 22:18:59 +000035 def disable_user(cls, user_name):
36 user = cls.get_user_by_name(user_name)
37 cls.client.enable_disable_user(user['id'], False)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070038
Matthew Treinishdb2c5972014-01-31 22:18:59 +000039 @classmethod
40 def disable_tenant(cls, tenant_name):
41 tenant = cls.get_tenant_by_name(tenant_name)
42 cls.client.update_tenant(tenant['id'], enabled=False)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070043
Matthew Treinishdb2c5972014-01-31 22:18:59 +000044 @classmethod
45 def get_user_by_name(cls, name):
46 _, users = cls.client.get_users()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070047 user = [u for u in users if u['name'] == name]
48 if len(user) > 0:
49 return user[0]
50
Matthew Treinishdb2c5972014-01-31 22:18:59 +000051 @classmethod
52 def get_tenant_by_name(cls, name):
53 try:
54 _, tenants = cls.client.list_tenants()
55 except AttributeError:
56 _, tenants = cls.client.list_projects()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070057 tenant = [t for t in tenants if t['name'] == name]
58 if len(tenant) > 0:
59 return tenant[0]
60
Matthew Treinishdb2c5972014-01-31 22:18:59 +000061 @classmethod
62 def get_role_by_name(cls, name):
63 _, roles = cls.client.list_roles()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070064 role = [r for r in roles if r['name'] == name]
65 if len(role) > 0:
66 return role[0]
67
68
Matthew Treinishdb2c5972014-01-31 22:18:59 +000069class BaseIdentityV2AdminTest(BaseIdentityAdminTest):
70
71 @classmethod
72 def setUpClass(cls):
73 if not CONF.identity_feature_enabled.api_v2:
74 raise cls.skipException("Identity api v2 is not enabled")
75 super(BaseIdentityV2AdminTest, cls).setUpClass()
76 cls.client = cls.os_adm.identity_client
77 cls.token_client = cls.os_adm.token_client
78 if not cls.client.has_admin_extensions():
79 raise cls.skipException("Admin extensions disabled")
80 cls.data = DataGenerator(cls.client)
81 cls.non_admin_client = cls.os.identity_client
82
83 @classmethod
84 def tearDownClass(cls):
85 cls.data.teardown_all()
86 super(BaseIdentityV2AdminTest, cls).tearDownClass()
87
88
89class BaseIdentityV3AdminTest(BaseIdentityAdminTest):
90
91 @classmethod
92 def setUpClass(cls):
93 if not CONF.identity_feature_enabled.api_v3:
94 raise cls.skipException("Identity api v3 is not enabled")
95 super(BaseIdentityV3AdminTest, cls).setUpClass()
96 cls.client = cls.os_adm.identity_v3_client
97 cls.token = cls.os_adm.token_v3_client
98 cls.endpoints_client = cls.os_adm.endpoints_client
ravikumar-venkatesan3052e942014-05-12 18:25:17 +000099 cls.region_client = cls.os_adm.region_client
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000100 cls.data = DataGenerator(cls.client)
101 cls.non_admin_client = cls.os.identity_v3_client
102 cls.service_client = cls.os_adm.service_client
103 cls.policy_client = cls.os_adm.policy_client
104 cls.creds_client = cls.os_adm.credentials_client
105 cls.non_admin_client = cls.os.identity_v3_client
106
107 @classmethod
108 def tearDownClass(cls):
109 cls.data.teardown_all()
110 super(BaseIdentityV3AdminTest, cls).tearDownClass()
111
112
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700113class DataGenerator(object):
114
115 def __init__(self, client):
116 self.client = client
117 self.users = []
118 self.tenants = []
119 self.roles = []
120 self.role_name = None
Nayna Patele6331362013-08-12 06:59:48 +0000121 self.v3_users = []
122 self.projects = []
123 self.v3_roles = []
nayna-patel2db83b32014-05-15 11:41:03 +0000124 self.domains = []
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700125
Andrea Frittoli422fbdf2014-03-20 10:05:18 +0000126 @property
127 def test_credentials(self):
128 return auth.get_credentials(username=self.test_user,
129 user_id=self.user['id'],
130 password=self.test_password,
131 tenant_name=self.test_tenant,
132 tenant_id=self.tenant['id'])
133
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700134 def setup_test_user(self):
Sean Daguef237ccb2013-01-04 15:19:14 -0500135 """Set up a test user."""
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700136 self.setup_test_tenant()
Masayuki Igawa259c1132013-10-31 17:48:44 +0900137 self.test_user = data_utils.rand_name('test_user_')
138 self.test_password = data_utils.rand_name('pass_')
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700139 self.test_email = self.test_user + '@testmail.tm'
David Kranze9d2f422014-07-02 13:57:41 -0400140 _, self.user = self.client.create_user(self.test_user,
141 self.test_password,
142 self.tenant['id'],
143 self.test_email)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700144 self.users.append(self.user)
145
146 def setup_test_tenant(self):
Sean Daguef237ccb2013-01-04 15:19:14 -0500147 """Set up a test tenant."""
Masayuki Igawa259c1132013-10-31 17:48:44 +0900148 self.test_tenant = data_utils.rand_name('test_tenant_')
149 self.test_description = data_utils.rand_name('desc_')
David Kranze9d2f422014-07-02 13:57:41 -0400150 _, self.tenant = self.client.create_tenant(
Zhongyue Luoa1343de2013-01-04 16:21:35 +0800151 name=self.test_tenant,
152 description=self.test_description)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700153 self.tenants.append(self.tenant)
154
155 def setup_test_role(self):
Sean Daguef237ccb2013-01-04 15:19:14 -0500156 """Set up a test role."""
Masayuki Igawa259c1132013-10-31 17:48:44 +0900157 self.test_role = data_utils.rand_name('role')
David Kranze9d2f422014-07-02 13:57:41 -0400158 _, self.role = self.client.create_role(self.test_role)
Rohit Karajgi69e80a02012-05-15 03:54:04 -0700159 self.roles.append(self.role)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700160
Nayna Patele6331362013-08-12 06:59:48 +0000161 def setup_test_v3_user(self):
162 """Set up a test v3 user."""
163 self.setup_test_project()
Masayuki Igawa259c1132013-10-31 17:48:44 +0900164 self.test_user = data_utils.rand_name('test_user_')
165 self.test_password = data_utils.rand_name('pass_')
Nayna Patele6331362013-08-12 06:59:48 +0000166 self.test_email = self.test_user + '@testmail.tm'
David Kranze9d2f422014-07-02 13:57:41 -0400167 _, self.v3_user = self.client.create_user(
wanglianminb1ddea72014-02-25 17:17:30 +0800168 self.test_user,
169 password=self.test_password,
170 project_id=self.project['id'],
171 email=self.test_email)
Nayna Patele6331362013-08-12 06:59:48 +0000172 self.v3_users.append(self.v3_user)
173
174 def setup_test_project(self):
175 """Set up a test project."""
Masayuki Igawa259c1132013-10-31 17:48:44 +0900176 self.test_project = data_utils.rand_name('test_project_')
177 self.test_description = data_utils.rand_name('desc_')
David Kranze9d2f422014-07-02 13:57:41 -0400178 _, self.project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +0000179 name=self.test_project,
180 description=self.test_description)
181 self.projects.append(self.project)
182
183 def setup_test_v3_role(self):
184 """Set up a test v3 role."""
Masayuki Igawa259c1132013-10-31 17:48:44 +0900185 self.test_role = data_utils.rand_name('role')
David Kranze9d2f422014-07-02 13:57:41 -0400186 _, self.v3_role = self.client.create_role(self.test_role)
Nayna Patele6331362013-08-12 06:59:48 +0000187 self.v3_roles.append(self.v3_role)
188
nayna-patel2db83b32014-05-15 11:41:03 +0000189 def setup_test_domain(self):
190 """Set up a test domain."""
191 self.test_domain = data_utils.rand_name('test_domain')
192 self.test_description = data_utils.rand_name('desc')
193 _, self.domain = self.client.create_domain(
194 name=self.test_domain,
195 description=self.test_description)
196 self.domains.append(self.domain)
197
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700198 def teardown_all(self):
199 for user in self.users:
200 self.client.delete_user(user['id'])
201 for tenant in self.tenants:
202 self.client.delete_tenant(tenant['id'])
203 for role in self.roles:
204 self.client.delete_role(role['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000205 for v3_user in self.v3_users:
206 self.client.delete_user(v3_user['id'])
207 for v3_project in self.projects:
208 self.client.delete_project(v3_project['id'])
209 for v3_role in self.v3_roles:
210 self.client.delete_role(v3_role['id'])
nayna-patel2db83b32014-05-15 11:41:03 +0000211 for domain in self.domains:
212 self.client.update_domain(domain['id'], enabled=False)
213 self.client.delete_domain(domain['id'])