blob: db5550918e081b64a247e73d3eea38118e6c25f8 [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
rajalakshmi-ganesan7312bb52013-01-29 20:03:42 +053032 cls.v3_client = os.identity_v3_client
harika-vakadia92dd742013-02-19 20:41:22 +053033 cls.service_client = os.service_client
harika-vakadi40e10112013-02-08 14:38:09 +053034 cls.policy_client = os.policy_client
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070035
36 if not cls.client.has_admin_extensions():
ivan-zhu1feeb382013-01-24 10:14:39 +080037 raise cls.skipException("Admin extensions disabled")
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070038
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070039 cls.data = DataGenerator(cls.client)
40
Attila Fazekascadcb1f2013-01-21 23:10:53 +010041 os = clients.Manager(interface=cls._interface)
Attila Fazekas407b6db2013-01-19 12:48:36 +010042 cls.non_admin_client = os.identity_client
Jay Pipesf38eaac2012-06-21 13:37:35 -040043
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070044 @classmethod
45 def tearDownClass(cls):
46 cls.data.teardown_all()
47
48 def disable_user(self, user_name):
49 user = self.get_user_by_name(user_name)
50 self.client.enable_disable_user(user['id'], False)
51
52 def disable_tenant(self, tenant_name):
53 tenant = self.get_tenant_by_name(tenant_name)
Giampaolo Lauriaafd71582013-01-15 13:44:59 -050054 self.client.update_tenant(tenant['id'], enabled=False)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070055
56 def get_user_by_name(self, name):
57 _, users = self.client.get_users()
58 user = [u for u in users if u['name'] == name]
59 if len(user) > 0:
60 return user[0]
61
62 def get_tenant_by_name(self, name):
Rohit Karajgi69e80a02012-05-15 03:54:04 -070063 _, tenants = self.client.list_tenants()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070064 tenant = [t for t in tenants if t['name'] == name]
65 if len(tenant) > 0:
66 return tenant[0]
67
68 def get_role_by_name(self, name):
Rohit Karajgi69e80a02012-05-15 03:54:04 -070069 _, roles = self.client.list_roles()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070070 role = [r for r in roles if r['name'] == name]
71 if len(role) > 0:
72 return role[0]
73
74
75class DataGenerator(object):
76
77 def __init__(self, client):
78 self.client = client
79 self.users = []
80 self.tenants = []
81 self.roles = []
82 self.role_name = None
83
84 def setup_test_user(self):
Sean Daguef237ccb2013-01-04 15:19:14 -050085 """Set up a test user."""
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070086 self.setup_test_tenant()
87 self.test_user = rand_name('test_user_')
88 self.test_password = rand_name('pass_')
89 self.test_email = self.test_user + '@testmail.tm'
90 resp, self.user = self.client.create_user(self.test_user,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080091 self.test_password,
92 self.tenant['id'],
93 self.test_email)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070094 self.users.append(self.user)
95
96 def setup_test_tenant(self):
Sean Daguef237ccb2013-01-04 15:19:14 -050097 """Set up a test tenant."""
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070098 self.test_tenant = rand_name('test_tenant_')
99 self.test_description = rand_name('desc_')
100 resp, self.tenant = self.client.create_tenant(
Zhongyue Luoa1343de2013-01-04 16:21:35 +0800101 name=self.test_tenant,
102 description=self.test_description)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700103 self.tenants.append(self.tenant)
104
105 def setup_test_role(self):
Sean Daguef237ccb2013-01-04 15:19:14 -0500106 """Set up a test role."""
Rohit Karajgi69e80a02012-05-15 03:54:04 -0700107 self.test_role = rand_name('role')
108 resp, self.role = self.client.create_role(self.test_role)
109 self.roles.append(self.role)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700110
111 def teardown_all(self):
112 for user in self.users:
113 self.client.delete_user(user['id'])
114 for tenant in self.tenants:
115 self.client.delete_tenant(tenant['id'])
116 for role in self.roles:
117 self.client.delete_role(role['id'])