blob: 41cf840a6c4a8fd0eafc06d8486f8f05edae9a8c [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
Matthew Treinish01472ff2015-02-20 17:26:52 -050016from tempest_lib.common.utils import data_utils
17
Nayna Patele6331362013-08-12 06:59:48 +000018from tempest.api.identity import base
YuikoTakada414526b2014-02-12 19:09:43 +000019from tempest import test
Nayna Patele6331362013-08-12 06:59:48 +000020
21
Matthew Treinishdb2c5972014-01-31 22:18:59 +000022class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
Nayna Patele6331362013-08-12 06:59:48 +000023
Chris Hoge7579c1a2015-02-26 14:12:15 -080024 @test.idempotent_id('0ecf465c-0dc4-4532-ab53-91ffeb74d12d')
Nayna Patele6331362013-08-12 06:59:48 +000025 def test_project_create_with_description(self):
26 # Create project with a description
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000027 project_name = data_utils.rand_name('project')
28 project_desc = data_utils.rand_name('desc')
David Kranzd8ccb792014-12-29 11:32:05 -050029 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +000030 project_name, description=project_desc)
Matthew Treinishdb2c5972014-01-31 22:18:59 +000031 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000032 project_id = project['id']
33 desc1 = project['description']
Nayna Patele6331362013-08-12 06:59:48 +000034 self.assertEqual(desc1, project_desc, 'Description should have '
35 'been sent in response for create')
David Kranzd8ccb792014-12-29 11:32:05 -050036 body = self.client.get_project(project_id)
Nayna Patele6331362013-08-12 06:59:48 +000037 desc2 = body['description']
38 self.assertEqual(desc2, project_desc, 'Description does not appear'
39 'to be set')
40
Chris Hoge7579c1a2015-02-26 14:12:15 -080041 @test.idempotent_id('5f50fe07-8166-430b-a882-3b2ee0abe26f')
nayna-patel153e9dd2014-05-16 09:00:05 +000042 def test_project_create_with_domain(self):
43 # Create project with a domain
44 self.data.setup_test_domain()
45 project_name = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -050046 project = self.client.create_project(
nayna-patel153e9dd2014-05-16 09:00:05 +000047 project_name, domain_id=self.data.domain['id'])
48 self.data.projects.append(project)
49 project_id = project['id']
50 self.assertEqual(project_name, project['name'])
51 self.assertEqual(self.data.domain['id'], project['domain_id'])
David Kranzd8ccb792014-12-29 11:32:05 -050052 body = self.client.get_project(project_id)
nayna-patel153e9dd2014-05-16 09:00:05 +000053 self.assertEqual(project_name, body['name'])
54 self.assertEqual(self.data.domain['id'], body['domain_id'])
55
Chris Hoge7579c1a2015-02-26 14:12:15 -080056 @test.idempotent_id('1f66dc76-50cc-4741-a200-af984509e480')
Nayna Patele6331362013-08-12 06:59:48 +000057 def test_project_create_enabled(self):
58 # Create a project that is enabled
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000059 project_name = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -050060 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +000061 project_name, enabled=True)
Matthew Treinishdb2c5972014-01-31 22:18:59 +000062 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000063 project_id = project['id']
Nayna Patele6331362013-08-12 06:59:48 +000064 en1 = project['enabled']
Nayna Patele6331362013-08-12 06:59:48 +000065 self.assertTrue(en1, 'Enable should be True in response')
David Kranzd8ccb792014-12-29 11:32:05 -050066 body = self.client.get_project(project_id)
Nayna Patele6331362013-08-12 06:59:48 +000067 en2 = body['enabled']
68 self.assertTrue(en2, 'Enable should be True in lookup')
69
Chris Hoge7579c1a2015-02-26 14:12:15 -080070 @test.idempotent_id('78f96a9c-e0e0-4ee6-a3ba-fbf6dfd03207')
Nayna Patele6331362013-08-12 06:59:48 +000071 def test_project_create_not_enabled(self):
72 # Create a project that is not enabled
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000073 project_name = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -050074 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +000075 project_name, enabled=False)
Matthew Treinishdb2c5972014-01-31 22:18:59 +000076 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000077 en1 = project['enabled']
Nayna Patele6331362013-08-12 06:59:48 +000078 self.assertEqual('false', str(en1).lower(),
79 'Enable should be False in response')
David Kranzd8ccb792014-12-29 11:32:05 -050080 body = self.client.get_project(project['id'])
Nayna Patele6331362013-08-12 06:59:48 +000081 en2 = body['enabled']
82 self.assertEqual('false', str(en2).lower(),
83 'Enable should be False in lookup')
84
Chris Hoge7579c1a2015-02-26 14:12:15 -080085 @test.idempotent_id('f608f368-048c-496b-ad63-d286c26dab6b')
Nayna Patele6331362013-08-12 06:59:48 +000086 def test_project_update_name(self):
87 # Update name attribute of a project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000088 p_name1 = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -050089 project = self.client.create_project(p_name1)
Matthew Treinishdb2c5972014-01-31 22:18:59 +000090 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000091
92 resp1_name = project['name']
93
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000094 p_name2 = data_utils.rand_name('project2')
David Kranzd8ccb792014-12-29 11:32:05 -050095 body = self.client.update_project(project['id'], name=p_name2)
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
David Kranzd8ccb792014-12-29 11:32:05 -050099 body = self.client.get_project(project['id'])
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')
David Kranzd8ccb792014-12-29 11:32:05 -0500111 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +0000112 p_name, description=p_desc)
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')
David Kranzd8ccb792014-12-29 11:32:05 -0500117 body = self.client.update_project(
Nayna Patele6331362013-08-12 06:59:48 +0000118 project['id'], description=p_desc2)
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
David Kranzd8ccb792014-12-29 11:32:05 -0500122 body = self.client.get_project(project['id'])
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
David Kranzd8ccb792014-12-29 11:32:05 -0500134 project = self.client.create_project(p_name, enabled=p_en)
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000135 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000136
137 resp1_en = project['enabled']
138
139 p_en2 = True
David Kranzd8ccb792014-12-29 11:32:05 -0500140 body = self.client.update_project(
Nayna Patele6331362013-08-12 06:59:48 +0000141 project['id'], enabled=p_en2)
Nayna Patele6331362013-08-12 06:59:48 +0000142 resp2_en = body['enabled']
Nayna Patele6331362013-08-12 06:59:48 +0000143 self.assertNotEqual(resp1_en, resp2_en)
144
David Kranzd8ccb792014-12-29 11:32:05 -0500145 body = self.client.get_project(project['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000146 resp3_en = body['enabled']
147
148 self.assertNotEqual(resp1_en, resp3_en)
149 self.assertEqual('false', str(resp1_en).lower())
150 self.assertEqual(resp2_en, resp3_en)
151
Chris Hoge7579c1a2015-02-26 14:12:15 -0800152 @test.idempotent_id('59398d4a-5dc5-4f86-9a4c-c26cc804d6c6')
Nayna Patele6331362013-08-12 06:59:48 +0000153 def test_associate_user_to_project(self):
Matthew Treinish57160582014-06-09 17:13:48 -0400154 # Associate a user to a project
155 # Create a Project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000156 p_name = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -0500157 project = self.client.create_project(p_name)
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000158 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000159
Matthew Treinish57160582014-06-09 17:13:48 -0400160 # Create a User
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000161 u_name = data_utils.rand_name('user')
Nayna Patele6331362013-08-12 06:59:48 +0000162 u_desc = u_name + 'description'
163 u_email = u_name + '@testmail.tm'
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000164 u_password = data_utils.rand_name('pass')
David Kranzd8ccb792014-12-29 11:32:05 -0500165 user = self.client.create_user(
Nayna Patele6331362013-08-12 06:59:48 +0000166 u_name, description=u_desc, password=u_password,
167 email=u_email, project_id=project['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000168 # Delete the User at the end of this method
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000169 self.addCleanup(self.client.delete_user, user['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000170
171 # Get User To validate the user details
David Kranzd8ccb792014-12-29 11:32:05 -0500172 new_user_get = self.client.get_user(user['id'])
Matthew Treinish57160582014-06-09 17:13:48 -0400173 # Assert response body of GET
Nayna Patele6331362013-08-12 06:59:48 +0000174 self.assertEqual(u_name, new_user_get['name'])
175 self.assertEqual(u_desc, new_user_get['description'])
176 self.assertEqual(project['id'],
177 new_user_get['project_id'])
178 self.assertEqual(u_email, new_user_get['email'])