blob: 09fdd22498fea44d5e74601720c747c557ed146b [file] [log] [blame]
Jay Pipesf38eaac2012-06-21 13:37:35 -04001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
ZhiQiang Fan39f97222013-09-20 04:49:44 +08003# Copyright 2012 OpenStack Foundation
Jay Pipesf38eaac2012-06-21 13:37:35 -04004# 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 Fazekasf86fa312013-07-30 19:56:39 +020028 super(BaseIdentityAdminTest, cls).setUpClass()
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
rajalakshmi-ganesanab426722013-02-08 15:49:15 +053032 cls.endpoints_client = os.endpoints_client
rajalakshmi-ganesan7312bb52013-01-29 20:03:42 +053033 cls.v3_client = os.identity_v3_client
harika-vakadia92dd742013-02-19 20:41:22 +053034 cls.service_client = os.service_client
harika-vakadi40e10112013-02-08 14:38:09 +053035 cls.policy_client = os.policy_client
nayna-patelb35f7232013-06-28 07:08:44 +000036 cls.v3_token = os.token_v3_client
nayna-patel914b4712013-07-16 08:29:05 +000037 cls.creds_client = os.credentials_client
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070038
39 if not cls.client.has_admin_extensions():
ivan-zhu1feeb382013-01-24 10:14:39 +080040 raise cls.skipException("Admin extensions disabled")
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070041
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070042 cls.data = DataGenerator(cls.client)
43
Attila Fazekascadcb1f2013-01-21 23:10:53 +010044 os = clients.Manager(interface=cls._interface)
Attila Fazekas407b6db2013-01-19 12:48:36 +010045 cls.non_admin_client = os.identity_client
Jay Pipesf38eaac2012-06-21 13:37:35 -040046
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070047 @classmethod
48 def tearDownClass(cls):
49 cls.data.teardown_all()
Attila Fazekasf86fa312013-07-30 19:56:39 +020050 super(BaseIdentityAdminTest, cls).tearDownClass()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070051
52 def disable_user(self, user_name):
53 user = self.get_user_by_name(user_name)
54 self.client.enable_disable_user(user['id'], False)
55
56 def disable_tenant(self, tenant_name):
57 tenant = self.get_tenant_by_name(tenant_name)
Giampaolo Lauriaafd71582013-01-15 13:44:59 -050058 self.client.update_tenant(tenant['id'], enabled=False)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070059
60 def get_user_by_name(self, name):
61 _, users = self.client.get_users()
62 user = [u for u in users if u['name'] == name]
63 if len(user) > 0:
64 return user[0]
65
66 def get_tenant_by_name(self, name):
Rohit Karajgi69e80a02012-05-15 03:54:04 -070067 _, tenants = self.client.list_tenants()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070068 tenant = [t for t in tenants if t['name'] == name]
69 if len(tenant) > 0:
70 return tenant[0]
71
72 def get_role_by_name(self, name):
Rohit Karajgi69e80a02012-05-15 03:54:04 -070073 _, roles = self.client.list_roles()
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070074 role = [r for r in roles if r['name'] == name]
75 if len(role) > 0:
76 return role[0]
77
78
79class DataGenerator(object):
80
81 def __init__(self, client):
82 self.client = client
83 self.users = []
84 self.tenants = []
85 self.roles = []
86 self.role_name = None
87
88 def setup_test_user(self):
Sean Daguef237ccb2013-01-04 15:19:14 -050089 """Set up a test user."""
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070090 self.setup_test_tenant()
91 self.test_user = rand_name('test_user_')
92 self.test_password = rand_name('pass_')
93 self.test_email = self.test_user + '@testmail.tm'
94 resp, self.user = self.client.create_user(self.test_user,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080095 self.test_password,
96 self.tenant['id'],
97 self.test_email)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070098 self.users.append(self.user)
99
100 def setup_test_tenant(self):
Sean Daguef237ccb2013-01-04 15:19:14 -0500101 """Set up a test tenant."""
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700102 self.test_tenant = rand_name('test_tenant_')
103 self.test_description = rand_name('desc_')
104 resp, self.tenant = self.client.create_tenant(
Zhongyue Luoa1343de2013-01-04 16:21:35 +0800105 name=self.test_tenant,
106 description=self.test_description)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700107 self.tenants.append(self.tenant)
108
109 def setup_test_role(self):
Sean Daguef237ccb2013-01-04 15:19:14 -0500110 """Set up a test role."""
Rohit Karajgi69e80a02012-05-15 03:54:04 -0700111 self.test_role = rand_name('role')
112 resp, self.role = self.client.create_role(self.test_role)
113 self.roles.append(self.role)
Rohit Karajgi6b1e1542012-05-14 05:55:54 -0700114
115 def teardown_all(self):
116 for user in self.users:
117 self.client.delete_user(user['id'])
118 for tenant in self.tenants:
119 self.client.delete_tenant(tenant['id'])
120 for role in self.roles:
121 self.client.delete_role(role['id'])