blob: 6b7413c240320924b627ff7f907ccd901b1afd74 [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
Sean Dague1937d092013-05-17 16:36:38 -040016from tempest.api.identity import base
Ken'ichi Ohmichi7bd25752017-03-10 10:45:39 -080017from tempest.lib.common.utils import data_utils
Castulo J. Martineze3adee42016-07-14 10:40:08 -070018from tempest.lib.common.utils import test_utils
Ken'ichi Ohmichieeabdd22017-01-27 17:46:00 -080019from tempest.lib import decorators
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070020
21
Matthew Treinishdb2c5972014-01-31 22:18:59 +000022class TenantsTestJSON(base.BaseIdentityV2AdminTest):
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070023
Ken'ichi Ohmichieeabdd22017-01-27 17:46:00 -080024 @decorators.idempotent_id('16c6e05c-6112-4b0e-b83f-5e43f221b6b0')
Attila Fazekas40ec1232013-01-08 11:45:32 +010025 def test_tenant_list_delete(self):
Sean Dague46c4a2b2013-01-03 17:54:17 -050026 # Create several tenants and delete them
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070027 tenants = []
Sirushti Murugesan12dc9732016-07-13 22:49:17 +053028 for _ in range(3):
huangtianhuab0993eb2013-09-30 18:07:15 +080029 tenant_name = data_utils.rand_name(name='tenant-new')
ghanshyam7668fad2016-06-15 18:17:39 +090030 tenant = self.tenants_client.create_tenant(
31 name=tenant_name)['tenant']
Castulo J. Martineze3adee42016-07-14 10:40:08 -070032 # Add the tenant to the cleanup list
33 self.addCleanup(test_utils.call_and_ignore_notfound_exc,
34 self.tenants_client.delete_tenant, tenant['id'])
Attila Fazekas40ec1232013-01-08 11:45:32 +010035 tenants.append(tenant)
Sirushti Murugesan935f2cc2016-07-12 19:48:24 +053036 tenant_ids = [tn['id'] for tn in tenants]
Daniel Melladob04da902015-11-20 17:43:12 +010037 body = self.tenants_client.list_tenants()['tenants']
Matthew Treinishc795b9e2014-06-09 17:01:10 -040038 found = [t for t in body if t['id'] in tenant_ids]
Attila Fazekas40ec1232013-01-08 11:45:32 +010039 self.assertEqual(len(found), len(tenants), 'Tenants not created')
40
41 for tenant in tenants:
Daniel Melladob04da902015-11-20 17:43:12 +010042 self.tenants_client.delete_tenant(tenant['id'])
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070043
Daniel Melladob04da902015-11-20 17:43:12 +010044 body = self.tenants_client.list_tenants()['tenants']
Attila Fazekas40ec1232013-01-08 11:45:32 +010045 found = [tenant for tenant in body if tenant['id'] in tenant_ids]
46 self.assertFalse(any(found), 'Tenants failed to delete')
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070047
Ken'ichi Ohmichieeabdd22017-01-27 17:46:00 -080048 @decorators.idempotent_id('d25e9f24-1310-4d29-b61b-d91299c21d6d')
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070049 def test_tenant_create_with_description(self):
Sean Dague46c4a2b2013-01-03 17:54:17 -050050 # Create tenant with a description
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000051 tenant_name = data_utils.rand_name(name='tenant')
52 tenant_desc = data_utils.rand_name(name='desc')
ghanshyam7668fad2016-06-15 18:17:39 +090053 body = self.tenants_client.create_tenant(name=tenant_name,
Daniel Melladob04da902015-11-20 17:43:12 +010054 description=tenant_desc)
55 tenant = body['tenant']
Castulo J. Martineze3adee42016-07-14 10:40:08 -070056 # Add the tenant to the cleanup list
57 self.addCleanup(test_utils.call_and_ignore_notfound_exc,
58 self.tenants_client.delete_tenant, tenant['id'])
Daniel Melladob04da902015-11-20 17:43:12 +010059 tenant_id = tenant['id']
60 desc1 = tenant['description']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070061 self.assertEqual(desc1, tenant_desc, 'Description should have '
Zhongyue Luo79d8d362012-09-25 13:49:27 +080062 'been sent in response for create')
Daniel Melladob04da902015-11-20 17:43:12 +010063 body = self.tenants_client.show_tenant(tenant_id)['tenant']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070064 desc2 = body['description']
65 self.assertEqual(desc2, tenant_desc, 'Description does not appear'
Zhongyue Luo79d8d362012-09-25 13:49:27 +080066 'to be set')
Daniel Melladob04da902015-11-20 17:43:12 +010067 self.tenants_client.delete_tenant(tenant_id)
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070068
Ken'ichi Ohmichieeabdd22017-01-27 17:46:00 -080069 @decorators.idempotent_id('670bdddc-1cd7-41c7-b8e2-751cfb67df50')
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070070 def test_tenant_create_enabled(self):
Sean Dague46c4a2b2013-01-03 17:54:17 -050071 # Create a tenant that is enabled
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000072 tenant_name = data_utils.rand_name(name='tenant')
ghanshyam7668fad2016-06-15 18:17:39 +090073 body = self.tenants_client.create_tenant(name=tenant_name,
74 enabled=True)
Daniel Melladob04da902015-11-20 17:43:12 +010075 tenant = body['tenant']
Castulo J. Martineze3adee42016-07-14 10:40:08 -070076 # Add the tenant to the cleanup list
77 self.addCleanup(test_utils.call_and_ignore_notfound_exc,
78 self.tenants_client.delete_tenant, tenant['id'])
Daniel Melladob04da902015-11-20 17:43:12 +010079 tenant_id = tenant['id']
80 en1 = tenant['enabled']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070081 self.assertTrue(en1, 'Enable should be True in response')
Daniel Melladob04da902015-11-20 17:43:12 +010082 body = self.tenants_client.show_tenant(tenant_id)['tenant']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070083 en2 = body['enabled']
84 self.assertTrue(en2, 'Enable should be True in lookup')
Daniel Melladob04da902015-11-20 17:43:12 +010085 self.tenants_client.delete_tenant(tenant_id)
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070086
Ken'ichi Ohmichieeabdd22017-01-27 17:46:00 -080087 @decorators.idempotent_id('3be22093-b30f-499d-b772-38340e5e16fb')
chris fattarsi9ba7b0e2012-05-07 13:55:51 -070088 def test_tenant_create_not_enabled(self):
Sean Dague46c4a2b2013-01-03 17:54:17 -050089 # Create a tenant that is not enabled
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000090 tenant_name = data_utils.rand_name(name='tenant')
ghanshyam7668fad2016-06-15 18:17:39 +090091 body = self.tenants_client.create_tenant(name=tenant_name,
92 enabled=False)
Daniel Melladob04da902015-11-20 17:43:12 +010093 tenant = body['tenant']
Castulo J. Martineze3adee42016-07-14 10:40:08 -070094 # Add the tenant to the cleanup list
95 self.addCleanup(test_utils.call_and_ignore_notfound_exc,
96 self.tenants_client.delete_tenant, tenant['id'])
Daniel Melladob04da902015-11-20 17:43:12 +010097 tenant_id = tenant['id']
98 en1 = tenant['enabled']
Vincent Hou6b8a7b72012-08-25 01:24:33 +080099 self.assertEqual('false', str(en1).lower(),
100 'Enable should be False in response')
Daniel Melladob04da902015-11-20 17:43:12 +0100101 body = self.tenants_client.show_tenant(tenant_id)['tenant']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700102 en2 = body['enabled']
Vincent Hou6b8a7b72012-08-25 01:24:33 +0800103 self.assertEqual('false', str(en2).lower(),
104 'Enable should be False in lookup')
Daniel Melladob04da902015-11-20 17:43:12 +0100105 self.tenants_client.delete_tenant(tenant_id)
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700106
Ken'ichi Ohmichieeabdd22017-01-27 17:46:00 -0800107 @decorators.idempotent_id('781f2266-d128-47f3-8bdb-f70970add238')
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700108 def test_tenant_update_name(self):
Sean Dague46c4a2b2013-01-03 17:54:17 -0500109 # Update name attribute of a tenant
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000110 t_name1 = data_utils.rand_name(name='tenant')
ghanshyam7668fad2016-06-15 18:17:39 +0900111 body = self.tenants_client.create_tenant(name=t_name1)['tenant']
Attila Fazekas40ec1232013-01-08 11:45:32 +0100112 tenant = body
Castulo J. Martineze3adee42016-07-14 10:40:08 -0700113 # Add the tenant to the cleanup list
114 self.addCleanup(test_utils.call_and_ignore_notfound_exc,
115 self.tenants_client.delete_tenant, tenant['id'])
Attila Fazekas40ec1232013-01-08 11:45:32 +0100116
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700117 t_id = body['id']
118 resp1_name = body['name']
119
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000120 t_name2 = data_utils.rand_name(name='tenant2')
Daniel Melladob04da902015-11-20 17:43:12 +0100121 body = self.tenants_client.update_tenant(t_id, name=t_name2)['tenant']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700122 resp2_name = body['name']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700123 self.assertNotEqual(resp1_name, resp2_name)
124
Daniel Melladob04da902015-11-20 17:43:12 +0100125 body = self.tenants_client.show_tenant(t_id)['tenant']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700126 resp3_name = body['name']
127
128 self.assertNotEqual(resp1_name, resp3_name)
129 self.assertEqual(t_name1, resp1_name)
130 self.assertEqual(resp2_name, resp3_name)
131
Daniel Melladob04da902015-11-20 17:43:12 +0100132 self.tenants_client.delete_tenant(t_id)
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700133
Ken'ichi Ohmichieeabdd22017-01-27 17:46:00 -0800134 @decorators.idempotent_id('859fcfe1-3a03-41ef-86f9-b19a47d1cd87')
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700135 def test_tenant_update_desc(self):
Sean Dague46c4a2b2013-01-03 17:54:17 -0500136 # Update description attribute of a tenant
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000137 t_name = data_utils.rand_name(name='tenant')
138 t_desc = data_utils.rand_name(name='desc')
ghanshyam7668fad2016-06-15 18:17:39 +0900139 body = self.tenants_client.create_tenant(name=t_name,
140 description=t_desc)
Daniel Melladob04da902015-11-20 17:43:12 +0100141 tenant = body['tenant']
Castulo J. Martineze3adee42016-07-14 10:40:08 -0700142 # Add the tenant to the cleanup list
143 self.addCleanup(test_utils.call_and_ignore_notfound_exc,
144 self.tenants_client.delete_tenant, tenant['id'])
Attila Fazekas40ec1232013-01-08 11:45:32 +0100145
Daniel Melladob04da902015-11-20 17:43:12 +0100146 t_id = tenant['id']
147 resp1_desc = tenant['description']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700148
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000149 t_desc2 = data_utils.rand_name(name='desc2')
Daniel Melladob04da902015-11-20 17:43:12 +0100150 body = self.tenants_client.update_tenant(t_id, description=t_desc2)
151 updated_tenant = body['tenant']
152 resp2_desc = updated_tenant['description']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700153 self.assertNotEqual(resp1_desc, resp2_desc)
154
Daniel Melladob04da902015-11-20 17:43:12 +0100155 body = self.tenants_client.show_tenant(t_id)['tenant']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700156 resp3_desc = body['description']
157
158 self.assertNotEqual(resp1_desc, resp3_desc)
159 self.assertEqual(t_desc, resp1_desc)
160 self.assertEqual(resp2_desc, resp3_desc)
161
Daniel Melladob04da902015-11-20 17:43:12 +0100162 self.tenants_client.delete_tenant(t_id)
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700163
Ken'ichi Ohmichieeabdd22017-01-27 17:46:00 -0800164 @decorators.idempotent_id('8fc8981f-f12d-4c66-9972-2bdcf2bc2e1a')
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700165 def test_tenant_update_enable(self):
Sean Dague46c4a2b2013-01-03 17:54:17 -0500166 # Update the enabled attribute of a tenant
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000167 t_name = data_utils.rand_name(name='tenant')
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700168 t_en = False
ghanshyam7668fad2016-06-15 18:17:39 +0900169 body = self.tenants_client.create_tenant(name=t_name, enabled=t_en)
Daniel Melladob04da902015-11-20 17:43:12 +0100170 tenant = body['tenant']
Castulo J. Martineze3adee42016-07-14 10:40:08 -0700171 # Add the tenant to the cleanup list
172 self.addCleanup(test_utils.call_and_ignore_notfound_exc,
173 self.tenants_client.delete_tenant, tenant['id'])
Attila Fazekas40ec1232013-01-08 11:45:32 +0100174
Daniel Melladob04da902015-11-20 17:43:12 +0100175 t_id = tenant['id']
176 resp1_en = tenant['enabled']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700177
178 t_en2 = True
Daniel Melladob04da902015-11-20 17:43:12 +0100179 body = self.tenants_client.update_tenant(t_id, enabled=t_en2)
180 updated_tenant = body['tenant']
181 resp2_en = updated_tenant['enabled']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700182 self.assertNotEqual(resp1_en, resp2_en)
183
Daniel Melladob04da902015-11-20 17:43:12 +0100184 body = self.tenants_client.show_tenant(t_id)['tenant']
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700185 resp3_en = body['enabled']
186
187 self.assertNotEqual(resp1_en, resp3_en)
Vincent Hou6b8a7b72012-08-25 01:24:33 +0800188 self.assertEqual('false', str(resp1_en).lower())
chris fattarsi9ba7b0e2012-05-07 13:55:51 -0700189 self.assertEqual(resp2_en, resp3_en)
190
Daniel Melladob04da902015-11-20 17:43:12 +0100191 self.tenants_client.delete_tenant(t_id)