blob: 5890eab28dc7a52057498668549b277be0260880 [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
Masayuki Igawa259c1132013-10-31 17:48:44 +090017from 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 _interface = 'json'
23
YuikoTakada414526b2014-02-12 19:09:43 +000024 @test.attr(type='gate')
Nayna Patele6331362013-08-12 06:59:48 +000025 def test_project_create_with_description(self):
26 # Create project with a description
Masayuki Igawa259c1132013-10-31 17:48:44 +090027 project_name = data_utils.rand_name('project-')
28 project_desc = data_utils.rand_name('desc-')
David Kranze9d2f422014-07-02 13:57:41 -040029 _, 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 Kranze9d2f422014-07-02 13:57:41 -040036 _, 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
YuikoTakada414526b2014-02-12 19:09:43 +000041 @test.attr(type='gate')
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')
46 resp, project = self.client.create_project(
47 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'])
52 _, body = self.client.get_project(project_id)
53 self.assertEqual(project_name, body['name'])
54 self.assertEqual(self.data.domain['id'], body['domain_id'])
55
56 @test.attr(type='gate')
Nayna Patele6331362013-08-12 06:59:48 +000057 def test_project_create_enabled(self):
58 # Create a project that is enabled
Masayuki Igawa259c1132013-10-31 17:48:44 +090059 project_name = data_utils.rand_name('project-')
David Kranze9d2f422014-07-02 13:57:41 -040060 _, 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 Kranze9d2f422014-07-02 13:57:41 -040066 _, 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
YuikoTakada414526b2014-02-12 19:09:43 +000070 @test.attr(type='gate')
Nayna Patele6331362013-08-12 06:59:48 +000071 def test_project_create_not_enabled(self):
72 # Create a project that is not enabled
Masayuki Igawa259c1132013-10-31 17:48:44 +090073 project_name = data_utils.rand_name('project-')
David Kranze9d2f422014-07-02 13:57:41 -040074 _, 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 Kranze9d2f422014-07-02 13:57:41 -040080 _, 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
YuikoTakada414526b2014-02-12 19:09:43 +000085 @test.attr(type='gate')
Nayna Patele6331362013-08-12 06:59:48 +000086 def test_project_update_name(self):
87 # Update name attribute of a project
Masayuki Igawa259c1132013-10-31 17:48:44 +090088 p_name1 = data_utils.rand_name('project-')
David Kranze9d2f422014-07-02 13:57:41 -040089 _, 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
Masayuki Igawa259c1132013-10-31 17:48:44 +090094 p_name2 = data_utils.rand_name('project2-')
David Kranze9d2f422014-07-02 13:57:41 -040095 _, 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 Kranze9d2f422014-07-02 13:57:41 -040099 _, 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
YuikoTakada414526b2014-02-12 19:09:43 +0000106 @test.attr(type='gate')
Nayna Patele6331362013-08-12 06:59:48 +0000107 def test_project_update_desc(self):
108 # Update description attribute of a project
Masayuki Igawa259c1132013-10-31 17:48:44 +0900109 p_name = data_utils.rand_name('project-')
110 p_desc = data_utils.rand_name('desc-')
David Kranze9d2f422014-07-02 13:57:41 -0400111 _, 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
Masayuki Igawa259c1132013-10-31 17:48:44 +0900116 p_desc2 = data_utils.rand_name('desc2-')
David Kranze9d2f422014-07-02 13:57:41 -0400117 _, 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 Kranze9d2f422014-07-02 13:57:41 -0400122 _, 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
YuikoTakada414526b2014-02-12 19:09:43 +0000129 @test.attr(type='gate')
Nayna Patele6331362013-08-12 06:59:48 +0000130 def test_project_update_enable(self):
131 # Update the enabled attribute of a project
Masayuki Igawa259c1132013-10-31 17:48:44 +0900132 p_name = data_utils.rand_name('project-')
Nayna Patele6331362013-08-12 06:59:48 +0000133 p_en = False
David Kranze9d2f422014-07-02 13:57:41 -0400134 _, 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 Kranze9d2f422014-07-02 13:57:41 -0400140 _, 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 Kranze9d2f422014-07-02 13:57:41 -0400145 _, 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
YuikoTakada414526b2014-02-12 19:09:43 +0000152 @test.attr(type='gate')
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
Masayuki Igawa259c1132013-10-31 17:48:44 +0900156 p_name = data_utils.rand_name('project-')
David Kranze9d2f422014-07-02 13:57:41 -0400157 _, 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
Masayuki Igawa259c1132013-10-31 17:48:44 +0900161 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'
Masayuki Igawa259c1132013-10-31 17:48:44 +0900164 u_password = data_utils.rand_name('pass-')
David Kranze9d2f422014-07-02 13:57:41 -0400165 _, 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 Kranze9d2f422014-07-02 13:57:41 -0400172 _, 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'])
179
Nayna Patele6331362013-08-12 06:59:48 +0000180
181class ProjectsTestXML(ProjectsTestJSON):
182 _interface = 'xml'