blob: 607bebe3e654a9a7bda05fb75cd7d608f9bbdd67 [file] [log] [blame]
Nayna Patele6331362013-08-12 06:59:48 +00001# Copyright 2013 OpenStack, LLC
2# 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
16from tempest.api.identity import base
Fei Long Wangd39431f2015-05-14 11:30:48 +120017from tempest.common.utils import data_utils
YuikoTakada414526b2014-02-12 19:09:43 +000018from tempest import test
Nayna Patele6331362013-08-12 06:59:48 +000019
20
Matthew Treinishdb2c5972014-01-31 22:18:59 +000021class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
Nayna Patele6331362013-08-12 06:59:48 +000022
Chris Hoge7579c1a2015-02-26 14:12:15 -080023 @test.idempotent_id('0ecf465c-0dc4-4532-ab53-91ffeb74d12d')
Nayna Patele6331362013-08-12 06:59:48 +000024 def test_project_create_with_description(self):
25 # Create project with a description
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000026 project_name = data_utils.rand_name('project')
27 project_desc = data_utils.rand_name('desc')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060028 project = self.projects_client.create_project(
John Warren56317e02015-08-12 20:48:32 +000029 project_name, description=project_desc)['project']
Matthew Treinishdb2c5972014-01-31 22:18:59 +000030 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000031 project_id = project['id']
32 desc1 = project['description']
Nayna Patele6331362013-08-12 06:59:48 +000033 self.assertEqual(desc1, project_desc, 'Description should have '
34 'been sent in response for create')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060035 body = self.projects_client.show_project(project_id)['project']
Nayna Patele6331362013-08-12 06:59:48 +000036 desc2 = body['description']
37 self.assertEqual(desc2, project_desc, 'Description does not appear'
38 'to be set')
39
Chris Hoge7579c1a2015-02-26 14:12:15 -080040 @test.idempotent_id('5f50fe07-8166-430b-a882-3b2ee0abe26f')
nayna-patel153e9dd2014-05-16 09:00:05 +000041 def test_project_create_with_domain(self):
42 # Create project with a domain
43 self.data.setup_test_domain()
44 project_name = data_utils.rand_name('project')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060045 project = self.projects_client.create_project(
John Warren56317e02015-08-12 20:48:32 +000046 project_name, domain_id=self.data.domain['id'])['project']
nayna-patel153e9dd2014-05-16 09:00:05 +000047 self.data.projects.append(project)
48 project_id = project['id']
49 self.assertEqual(project_name, project['name'])
50 self.assertEqual(self.data.domain['id'], project['domain_id'])
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060051 body = self.projects_client.show_project(project_id)['project']
nayna-patel153e9dd2014-05-16 09:00:05 +000052 self.assertEqual(project_name, body['name'])
53 self.assertEqual(self.data.domain['id'], body['domain_id'])
54
Chris Hoge7579c1a2015-02-26 14:12:15 -080055 @test.idempotent_id('1f66dc76-50cc-4741-a200-af984509e480')
Nayna Patele6331362013-08-12 06:59:48 +000056 def test_project_create_enabled(self):
57 # Create a project that is enabled
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000058 project_name = data_utils.rand_name('project')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060059 project = self.projects_client.create_project(
John Warren56317e02015-08-12 20:48:32 +000060 project_name, enabled=True)['project']
Matthew Treinishdb2c5972014-01-31 22:18:59 +000061 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000062 project_id = project['id']
Nayna Patele6331362013-08-12 06:59:48 +000063 en1 = project['enabled']
Nayna Patele6331362013-08-12 06:59:48 +000064 self.assertTrue(en1, 'Enable should be True in response')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060065 body = self.projects_client.show_project(project_id)['project']
Nayna Patele6331362013-08-12 06:59:48 +000066 en2 = body['enabled']
67 self.assertTrue(en2, 'Enable should be True in lookup')
68
Chris Hoge7579c1a2015-02-26 14:12:15 -080069 @test.idempotent_id('78f96a9c-e0e0-4ee6-a3ba-fbf6dfd03207')
Nayna Patele6331362013-08-12 06:59:48 +000070 def test_project_create_not_enabled(self):
71 # Create a project that is not enabled
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000072 project_name = data_utils.rand_name('project')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060073 project = self.projects_client.create_project(
John Warren56317e02015-08-12 20:48:32 +000074 project_name, enabled=False)['project']
Matthew Treinishdb2c5972014-01-31 22:18:59 +000075 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000076 en1 = project['enabled']
Nayna Patele6331362013-08-12 06:59:48 +000077 self.assertEqual('false', str(en1).lower(),
78 'Enable should be False in response')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060079 body = self.projects_client.show_project(project['id'])['project']
Nayna Patele6331362013-08-12 06:59:48 +000080 en2 = body['enabled']
81 self.assertEqual('false', str(en2).lower(),
82 'Enable should be False in lookup')
83
Chris Hoge7579c1a2015-02-26 14:12:15 -080084 @test.idempotent_id('f608f368-048c-496b-ad63-d286c26dab6b')
Nayna Patele6331362013-08-12 06:59:48 +000085 def test_project_update_name(self):
86 # Update name attribute of a project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000087 p_name1 = data_utils.rand_name('project')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060088 project = self.projects_client.create_project(p_name1)['project']
Matthew Treinishdb2c5972014-01-31 22:18:59 +000089 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000090
91 resp1_name = project['name']
92
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000093 p_name2 = data_utils.rand_name('project2')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060094 body = self.projects_client.update_project(project['id'],
95 name=p_name2)['project']
Nayna Patele6331362013-08-12 06:59:48 +000096 resp2_name = body['name']
Nayna Patele6331362013-08-12 06:59:48 +000097 self.assertNotEqual(resp1_name, resp2_name)
98
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -060099 body = self.projects_client.show_project(project['id'])['project']
Nayna Patele6331362013-08-12 06:59:48 +0000100 resp3_name = body['name']
101
102 self.assertNotEqual(resp1_name, resp3_name)
103 self.assertEqual(p_name1, resp1_name)
104 self.assertEqual(resp2_name, resp3_name)
105
Chris Hoge7579c1a2015-02-26 14:12:15 -0800106 @test.idempotent_id('f138b715-255e-4a7d-871d-351e1ef2e153')
Nayna Patele6331362013-08-12 06:59:48 +0000107 def test_project_update_desc(self):
108 # Update description attribute of a project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000109 p_name = data_utils.rand_name('project')
110 p_desc = data_utils.rand_name('desc')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -0600111 project = self.projects_client.create_project(
John Warren56317e02015-08-12 20:48:32 +0000112 p_name, description=p_desc)['project']
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000113 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000114 resp1_desc = project['description']
115
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000116 p_desc2 = data_utils.rand_name('desc2')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -0600117 body = self.projects_client.update_project(
John Warren56317e02015-08-12 20:48:32 +0000118 project['id'], description=p_desc2)['project']
Nayna Patele6331362013-08-12 06:59:48 +0000119 resp2_desc = body['description']
Nayna Patele6331362013-08-12 06:59:48 +0000120 self.assertNotEqual(resp1_desc, resp2_desc)
121
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -0600122 body = self.projects_client.show_project(project['id'])['project']
Nayna Patele6331362013-08-12 06:59:48 +0000123 resp3_desc = body['description']
124
125 self.assertNotEqual(resp1_desc, resp3_desc)
126 self.assertEqual(p_desc, resp1_desc)
127 self.assertEqual(resp2_desc, resp3_desc)
128
Chris Hoge7579c1a2015-02-26 14:12:15 -0800129 @test.idempotent_id('b6b25683-c97f-474d-a595-55d410b68100')
Nayna Patele6331362013-08-12 06:59:48 +0000130 def test_project_update_enable(self):
131 # Update the enabled attribute of a project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000132 p_name = data_utils.rand_name('project')
Nayna Patele6331362013-08-12 06:59:48 +0000133 p_en = False
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -0600134 project = self.projects_client.create_project(p_name,
135 enabled=p_en)['project']
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000136 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000137
138 resp1_en = project['enabled']
139
140 p_en2 = True
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -0600141 body = self.projects_client.update_project(project['id'],
142 enabled=p_en2)['project']
Nayna Patele6331362013-08-12 06:59:48 +0000143 resp2_en = body['enabled']
Nayna Patele6331362013-08-12 06:59:48 +0000144 self.assertNotEqual(resp1_en, resp2_en)
145
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -0600146 body = self.projects_client.show_project(project['id'])['project']
Nayna Patele6331362013-08-12 06:59:48 +0000147 resp3_en = body['enabled']
148
149 self.assertNotEqual(resp1_en, resp3_en)
150 self.assertEqual('false', str(resp1_en).lower())
151 self.assertEqual(resp2_en, resp3_en)
152
Chris Hoge7579c1a2015-02-26 14:12:15 -0800153 @test.idempotent_id('59398d4a-5dc5-4f86-9a4c-c26cc804d6c6')
Nayna Patele6331362013-08-12 06:59:48 +0000154 def test_associate_user_to_project(self):
Matthew Treinish57160582014-06-09 17:13:48 -0400155 # Associate a user to a project
156 # Create a Project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000157 p_name = data_utils.rand_name('project')
Yaroslav Lobankov47a93ab2016-02-07 16:32:49 -0600158 project = self.projects_client.create_project(p_name)['project']
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000159 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000160
Matthew Treinish57160582014-06-09 17:13:48 -0400161 # Create a User
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000162 u_name = data_utils.rand_name('user')
Nayna Patele6331362013-08-12 06:59:48 +0000163 u_desc = u_name + 'description'
164 u_email = u_name + '@testmail.tm'
Zack Feldsteind8c5f7a2015-12-14 10:44:07 -0600165 u_password = data_utils.rand_password()
Daniel Mellado7aea5342016-02-09 09:10:12 +0000166 user = self.users_client.create_user(
Nayna Patele6331362013-08-12 06:59:48 +0000167 u_name, description=u_desc, password=u_password,
John Warren56317e02015-08-12 20:48:32 +0000168 email=u_email, project_id=project['id'])['user']
Nayna Patele6331362013-08-12 06:59:48 +0000169 # Delete the User at the end of this method
Daniel Mellado7aea5342016-02-09 09:10:12 +0000170 self.addCleanup(self.users_client.delete_user, user['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000171
172 # Get User To validate the user details
Daniel Mellado7aea5342016-02-09 09:10:12 +0000173 new_user_get = self.users_client.show_user(user['id'])['user']
Matthew Treinish57160582014-06-09 17:13:48 -0400174 # Assert response body of GET
Nayna Patele6331362013-08-12 06:59:48 +0000175 self.assertEqual(u_name, new_user_get['name'])
176 self.assertEqual(u_desc, new_user_get['description'])
177 self.assertEqual(project['id'],
178 new_user_get['project_id'])
179 self.assertEqual(u_email, new_user_get['email'])