blob: 5f8b3d198838c5c4622723c4e25d7107dc5f1096 [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
YuikoTakada414526b2014-02-12 19:09:43 +000024 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080025 @test.idempotent_id('0ecf465c-0dc4-4532-ab53-91ffeb74d12d')
Nayna Patele6331362013-08-12 06:59:48 +000026 def test_project_create_with_description(self):
27 # Create project with a description
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000028 project_name = data_utils.rand_name('project')
29 project_desc = data_utils.rand_name('desc')
David Kranzd8ccb792014-12-29 11:32:05 -050030 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +000031 project_name, description=project_desc)
Matthew Treinishdb2c5972014-01-31 22:18:59 +000032 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000033 project_id = project['id']
34 desc1 = project['description']
Nayna Patele6331362013-08-12 06:59:48 +000035 self.assertEqual(desc1, project_desc, 'Description should have '
36 'been sent in response for create')
David Kranzd8ccb792014-12-29 11:32:05 -050037 body = self.client.get_project(project_id)
Nayna Patele6331362013-08-12 06:59:48 +000038 desc2 = body['description']
39 self.assertEqual(desc2, project_desc, 'Description does not appear'
40 'to be set')
41
YuikoTakada414526b2014-02-12 19:09:43 +000042 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080043 @test.idempotent_id('5f50fe07-8166-430b-a882-3b2ee0abe26f')
nayna-patel153e9dd2014-05-16 09:00:05 +000044 def test_project_create_with_domain(self):
45 # Create project with a domain
46 self.data.setup_test_domain()
47 project_name = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -050048 project = self.client.create_project(
nayna-patel153e9dd2014-05-16 09:00:05 +000049 project_name, domain_id=self.data.domain['id'])
50 self.data.projects.append(project)
51 project_id = project['id']
52 self.assertEqual(project_name, project['name'])
53 self.assertEqual(self.data.domain['id'], project['domain_id'])
David Kranzd8ccb792014-12-29 11:32:05 -050054 body = self.client.get_project(project_id)
nayna-patel153e9dd2014-05-16 09:00:05 +000055 self.assertEqual(project_name, body['name'])
56 self.assertEqual(self.data.domain['id'], body['domain_id'])
57
58 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080059 @test.idempotent_id('1f66dc76-50cc-4741-a200-af984509e480')
Nayna Patele6331362013-08-12 06:59:48 +000060 def test_project_create_enabled(self):
61 # Create a project that is enabled
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000062 project_name = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -050063 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +000064 project_name, enabled=True)
Matthew Treinishdb2c5972014-01-31 22:18:59 +000065 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000066 project_id = project['id']
Nayna Patele6331362013-08-12 06:59:48 +000067 en1 = project['enabled']
Nayna Patele6331362013-08-12 06:59:48 +000068 self.assertTrue(en1, 'Enable should be True in response')
David Kranzd8ccb792014-12-29 11:32:05 -050069 body = self.client.get_project(project_id)
Nayna Patele6331362013-08-12 06:59:48 +000070 en2 = body['enabled']
71 self.assertTrue(en2, 'Enable should be True in lookup')
72
YuikoTakada414526b2014-02-12 19:09:43 +000073 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080074 @test.idempotent_id('78f96a9c-e0e0-4ee6-a3ba-fbf6dfd03207')
Nayna Patele6331362013-08-12 06:59:48 +000075 def test_project_create_not_enabled(self):
76 # Create a project that is not enabled
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000077 project_name = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -050078 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +000079 project_name, enabled=False)
Matthew Treinishdb2c5972014-01-31 22:18:59 +000080 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000081 en1 = project['enabled']
Nayna Patele6331362013-08-12 06:59:48 +000082 self.assertEqual('false', str(en1).lower(),
83 'Enable should be False in response')
David Kranzd8ccb792014-12-29 11:32:05 -050084 body = self.client.get_project(project['id'])
Nayna Patele6331362013-08-12 06:59:48 +000085 en2 = body['enabled']
86 self.assertEqual('false', str(en2).lower(),
87 'Enable should be False in lookup')
88
YuikoTakada414526b2014-02-12 19:09:43 +000089 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080090 @test.idempotent_id('f608f368-048c-496b-ad63-d286c26dab6b')
Nayna Patele6331362013-08-12 06:59:48 +000091 def test_project_update_name(self):
92 # Update name attribute of a project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000093 p_name1 = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -050094 project = self.client.create_project(p_name1)
Matthew Treinishdb2c5972014-01-31 22:18:59 +000095 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +000096
97 resp1_name = project['name']
98
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000099 p_name2 = data_utils.rand_name('project2')
David Kranzd8ccb792014-12-29 11:32:05 -0500100 body = self.client.update_project(project['id'], name=p_name2)
Nayna Patele6331362013-08-12 06:59:48 +0000101 resp2_name = body['name']
Nayna Patele6331362013-08-12 06:59:48 +0000102 self.assertNotEqual(resp1_name, resp2_name)
103
David Kranzd8ccb792014-12-29 11:32:05 -0500104 body = self.client.get_project(project['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000105 resp3_name = body['name']
106
107 self.assertNotEqual(resp1_name, resp3_name)
108 self.assertEqual(p_name1, resp1_name)
109 self.assertEqual(resp2_name, resp3_name)
110
YuikoTakada414526b2014-02-12 19:09:43 +0000111 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -0800112 @test.idempotent_id('f138b715-255e-4a7d-871d-351e1ef2e153')
Nayna Patele6331362013-08-12 06:59:48 +0000113 def test_project_update_desc(self):
114 # Update description attribute of a project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000115 p_name = data_utils.rand_name('project')
116 p_desc = data_utils.rand_name('desc')
David Kranzd8ccb792014-12-29 11:32:05 -0500117 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +0000118 p_name, description=p_desc)
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000119 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000120 resp1_desc = project['description']
121
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000122 p_desc2 = data_utils.rand_name('desc2')
David Kranzd8ccb792014-12-29 11:32:05 -0500123 body = self.client.update_project(
Nayna Patele6331362013-08-12 06:59:48 +0000124 project['id'], description=p_desc2)
Nayna Patele6331362013-08-12 06:59:48 +0000125 resp2_desc = body['description']
Nayna Patele6331362013-08-12 06:59:48 +0000126 self.assertNotEqual(resp1_desc, resp2_desc)
127
David Kranzd8ccb792014-12-29 11:32:05 -0500128 body = self.client.get_project(project['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000129 resp3_desc = body['description']
130
131 self.assertNotEqual(resp1_desc, resp3_desc)
132 self.assertEqual(p_desc, resp1_desc)
133 self.assertEqual(resp2_desc, resp3_desc)
134
YuikoTakada414526b2014-02-12 19:09:43 +0000135 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -0800136 @test.idempotent_id('b6b25683-c97f-474d-a595-55d410b68100')
Nayna Patele6331362013-08-12 06:59:48 +0000137 def test_project_update_enable(self):
138 # Update the enabled attribute of a project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000139 p_name = data_utils.rand_name('project')
Nayna Patele6331362013-08-12 06:59:48 +0000140 p_en = False
David Kranzd8ccb792014-12-29 11:32:05 -0500141 project = self.client.create_project(p_name, enabled=p_en)
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000142 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000143
144 resp1_en = project['enabled']
145
146 p_en2 = True
David Kranzd8ccb792014-12-29 11:32:05 -0500147 body = self.client.update_project(
Nayna Patele6331362013-08-12 06:59:48 +0000148 project['id'], enabled=p_en2)
Nayna Patele6331362013-08-12 06:59:48 +0000149 resp2_en = body['enabled']
Nayna Patele6331362013-08-12 06:59:48 +0000150 self.assertNotEqual(resp1_en, resp2_en)
151
David Kranzd8ccb792014-12-29 11:32:05 -0500152 body = self.client.get_project(project['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000153 resp3_en = body['enabled']
154
155 self.assertNotEqual(resp1_en, resp3_en)
156 self.assertEqual('false', str(resp1_en).lower())
157 self.assertEqual(resp2_en, resp3_en)
158
YuikoTakada414526b2014-02-12 19:09:43 +0000159 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -0800160 @test.idempotent_id('59398d4a-5dc5-4f86-9a4c-c26cc804d6c6')
Nayna Patele6331362013-08-12 06:59:48 +0000161 def test_associate_user_to_project(self):
Matthew Treinish57160582014-06-09 17:13:48 -0400162 # Associate a user to a project
163 # Create a Project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000164 p_name = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -0500165 project = self.client.create_project(p_name)
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000166 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000167
Matthew Treinish57160582014-06-09 17:13:48 -0400168 # Create a User
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000169 u_name = data_utils.rand_name('user')
Nayna Patele6331362013-08-12 06:59:48 +0000170 u_desc = u_name + 'description'
171 u_email = u_name + '@testmail.tm'
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000172 u_password = data_utils.rand_name('pass')
David Kranzd8ccb792014-12-29 11:32:05 -0500173 user = self.client.create_user(
Nayna Patele6331362013-08-12 06:59:48 +0000174 u_name, description=u_desc, password=u_password,
175 email=u_email, project_id=project['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000176 # Delete the User at the end of this method
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000177 self.addCleanup(self.client.delete_user, user['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000178
179 # Get User To validate the user details
David Kranzd8ccb792014-12-29 11:32:05 -0500180 new_user_get = self.client.get_user(user['id'])
Matthew Treinish57160582014-06-09 17:13:48 -0400181 # Assert response body of GET
Nayna Patele6331362013-08-12 06:59:48 +0000182 self.assertEqual(u_name, new_user_get['name'])
183 self.assertEqual(u_desc, new_user_get['description'])
184 self.assertEqual(project['id'],
185 new_user_get['project_id'])
186 self.assertEqual(u_email, new_user_get['email'])