blob: f397a5b0bb024f68b65a0155ba9892e498f13ec8 [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
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070018import nose
Jay Pipesf38eaac2012-06-21 13:37:35 -040019import unittest2 as unittest
20
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070021from tempest.common.utils.data_utils import rand_name
Vincent Hou6b8a7b72012-08-25 01:24:33 +080022from tempest import openstack
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070023
24
Vincent Hou6b8a7b72012-08-25 01:24:33 +080025class BaseIdAdminTest(unittest.TestCase):
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070026
27 @classmethod
28 def setUpClass(cls):
Vincent Hou6b8a7b72012-08-25 01:24:33 +080029 os = openstack.IdentityManager(interface=cls._interface)
30 cls.client = os.admin_client
31 cls.token_client = os.token_client
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070032
33 if not cls.client.has_admin_extensions():
34 raise nose.SkipTest("Admin extensions disabled")
35
Rohit Karajgi6b1e1542012-05-14 05:55:54 -070036 cls.data = DataGenerator(cls.client)
37
Vincent Hou6b8a7b72012-08-25 01:24:33 +080038 os = openstack.IdentityNaManager(interface=cls._interface)
39 cls.non_admin_client = os.admin_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)
51 self.client.update_tenant(tenant['id'], tenant['description'], False)
52
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
Vincent Hou6b8a7b72012-08-25 01:24:33 +080072class BaseIdentityAdminTestJSON(BaseIdAdminTest):
73 @classmethod
74 def setUpClass(cls):
75 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()
86
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):
98 """Set up a test user"""
99 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,
104 self.test_password,
105 self.tenant['id'],
106 self.test_email)
107 self.users.append(self.user)
108
109 def setup_test_tenant(self):
110 """Set up a test tenant"""
111 self.test_tenant = rand_name('test_tenant_')
112 self.test_description = rand_name('desc_')
113 resp, self.tenant = self.client.create_tenant(
114 name=self.test_tenant,
115 description=self.test_description)
116 self.tenants.append(self.tenant)
117
118 def setup_test_role(self):
119 """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'])