blob: fbff88f4cef47a384cff4573db87c1da38b7885c [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
ivan-zhu1feeb382013-01-24 10:14:39 +080018import testtools
Jay Pipesf38eaac2012-06-21 13:37:35 -040019
Matthew Treinish481466b2012-12-20 17:16:01 -050020from tempest import clients
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070021from tempest.common.utils.data_utils import rand_name
22
23
Chris Yeoh01cb2792013-02-09 22:25:37 +103024class BaseIdAdminTest(testtools.testcase.WithAttributes,
25 testtools.TestCase):
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070026
27 @classmethod
28 def setUpClass(cls):
Attila Fazekas407b6db2013-01-19 12:48:36 +010029 os = clients.AdminManager(interface=cls._interface)
30 cls.client = os.identity_client
Vincent Hou6b8a7b72012-08-25 01:24:33 +080031 cls.token_client = os.token_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
James E. Blaire6d8ee12013-01-18 21:33:45 +000072class BaseIdentityAdminTestJSON(BaseIdAdminTest):
Vincent Hou6b8a7b72012-08-25 01:24:33 +080073 @classmethod
74 def setUpClass(cls):
James E. Blaire6d8ee12013-01-18 21:33:45 +000075 cls._interface = "json"
76 super(BaseIdentityAdminTestJSON, cls).setUpClass()
77
78BaseIdentityAdminTest = BaseIdentityAdminTestJSON
79
80
81class BaseIdentityAdminTestXML(BaseIdAdminTest):
82 @classmethod
83 def setUpClass(cls):
84 cls._interface = "xml"
85 super(BaseIdentityAdminTestXML, cls).setUpClass()
Vincent Hou6b8a7b72012-08-25 01:24:33 +080086
87
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070088class DataGenerator(object):
89
90 def __init__(self, client):
91 self.client = client
92 self.users = []
93 self.tenants = []
94 self.roles = []
95 self.role_name = None
96
97 def setup_test_user(self):
Sean Daguef237ccb2013-01-04 15:19:14 -050098 """Set up a test user."""
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070099 self.setup_test_tenant()
100 self.test_user = rand_name('test_user_')
101 self.test_password = rand_name('pass_')
102 self.test_email = self.test_user + '@testmail.tm'
103 resp, self.user = self.client.create_user(self.test_user,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800104 self.test_password,
105 self.tenant['id'],
106 self.test_email)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700107 self.users.append(self.user)
108
109 def setup_test_tenant(self):
Sean Daguef237ccb2013-01-04 15:19:14 -0500110 """Set up a test tenant."""
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700111 self.test_tenant = rand_name('test_tenant_')
112 self.test_description = rand_name('desc_')
113 resp, self.tenant = self.client.create_tenant(
Zhongyue Luoa1343de2013-01-04 16:21:35 +0800114 name=self.test_tenant,
115 description=self.test_description)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700116 self.tenants.append(self.tenant)
117
118 def setup_test_role(self):
Sean Daguef237ccb2013-01-04 15:19:14 -0500119 """Set up a test role."""
Rohit Karajgi69e80a02012-05-15 03:54:04 -0700120 self.test_role = rand_name('role')
121 resp, self.role = self.client.create_role(self.test_role)
122 self.roles.append(self.role)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700123
124 def teardown_all(self):
125 for user in self.users:
126 self.client.delete_user(user['id'])
127 for tenant in self.tenants:
128 self.client.delete_tenant(tenant['id'])
129 for role in self.roles:
130 self.client.delete_role(role['id'])