blob: 17712f33d31d547756dfdc7f2139aacc6ed5cc66 [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')
David Kranzd8ccb792014-12-29 11:32:05 -050028 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +000029 project_name, description=project_desc)
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')
David Kranzd8ccb792014-12-29 11:32:05 -050035 body = self.client.get_project(project_id)
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')
David Kranzd8ccb792014-12-29 11:32:05 -050045 project = self.client.create_project(
nayna-patel153e9dd2014-05-16 09:00:05 +000046 project_name, domain_id=self.data.domain['id'])
47 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'])
David Kranzd8ccb792014-12-29 11:32:05 -050051 body = self.client.get_project(project_id)
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')
David Kranzd8ccb792014-12-29 11:32:05 -050059 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +000060 project_name, enabled=True)
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')
David Kranzd8ccb792014-12-29 11:32:05 -050065 body = self.client.get_project(project_id)
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')
David Kranzd8ccb792014-12-29 11:32:05 -050073 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +000074 project_name, enabled=False)
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')
David Kranzd8ccb792014-12-29 11:32:05 -050079 body = self.client.get_project(project['id'])
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')
David Kranzd8ccb792014-12-29 11:32:05 -050088 project = self.client.create_project(p_name1)
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')
David Kranzd8ccb792014-12-29 11:32:05 -050094 body = self.client.update_project(project['id'], name=p_name2)
Nayna Patele6331362013-08-12 06:59:48 +000095 resp2_name = body['name']
Nayna Patele6331362013-08-12 06:59:48 +000096 self.assertNotEqual(resp1_name, resp2_name)
97
David Kranzd8ccb792014-12-29 11:32:05 -050098 body = self.client.get_project(project['id'])
Nayna Patele6331362013-08-12 06:59:48 +000099 resp3_name = body['name']
100
101 self.assertNotEqual(resp1_name, resp3_name)
102 self.assertEqual(p_name1, resp1_name)
103 self.assertEqual(resp2_name, resp3_name)
104
Chris Hoge7579c1a2015-02-26 14:12:15 -0800105 @test.idempotent_id('f138b715-255e-4a7d-871d-351e1ef2e153')
Nayna Patele6331362013-08-12 06:59:48 +0000106 def test_project_update_desc(self):
107 # Update description attribute of a project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000108 p_name = data_utils.rand_name('project')
109 p_desc = data_utils.rand_name('desc')
David Kranzd8ccb792014-12-29 11:32:05 -0500110 project = self.client.create_project(
Nayna Patele6331362013-08-12 06:59:48 +0000111 p_name, description=p_desc)
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000112 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000113 resp1_desc = project['description']
114
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000115 p_desc2 = data_utils.rand_name('desc2')
David Kranzd8ccb792014-12-29 11:32:05 -0500116 body = self.client.update_project(
Nayna Patele6331362013-08-12 06:59:48 +0000117 project['id'], description=p_desc2)
Nayna Patele6331362013-08-12 06:59:48 +0000118 resp2_desc = body['description']
Nayna Patele6331362013-08-12 06:59:48 +0000119 self.assertNotEqual(resp1_desc, resp2_desc)
120
David Kranzd8ccb792014-12-29 11:32:05 -0500121 body = self.client.get_project(project['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000122 resp3_desc = body['description']
123
124 self.assertNotEqual(resp1_desc, resp3_desc)
125 self.assertEqual(p_desc, resp1_desc)
126 self.assertEqual(resp2_desc, resp3_desc)
127
Chris Hoge7579c1a2015-02-26 14:12:15 -0800128 @test.idempotent_id('b6b25683-c97f-474d-a595-55d410b68100')
Nayna Patele6331362013-08-12 06:59:48 +0000129 def test_project_update_enable(self):
130 # Update the enabled attribute of a project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000131 p_name = data_utils.rand_name('project')
Nayna Patele6331362013-08-12 06:59:48 +0000132 p_en = False
David Kranzd8ccb792014-12-29 11:32:05 -0500133 project = self.client.create_project(p_name, enabled=p_en)
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000134 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000135
136 resp1_en = project['enabled']
137
138 p_en2 = True
David Kranzd8ccb792014-12-29 11:32:05 -0500139 body = self.client.update_project(
Nayna Patele6331362013-08-12 06:59:48 +0000140 project['id'], enabled=p_en2)
Nayna Patele6331362013-08-12 06:59:48 +0000141 resp2_en = body['enabled']
Nayna Patele6331362013-08-12 06:59:48 +0000142 self.assertNotEqual(resp1_en, resp2_en)
143
David Kranzd8ccb792014-12-29 11:32:05 -0500144 body = self.client.get_project(project['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000145 resp3_en = body['enabled']
146
147 self.assertNotEqual(resp1_en, resp3_en)
148 self.assertEqual('false', str(resp1_en).lower())
149 self.assertEqual(resp2_en, resp3_en)
150
Chris Hoge7579c1a2015-02-26 14:12:15 -0800151 @test.idempotent_id('59398d4a-5dc5-4f86-9a4c-c26cc804d6c6')
Nayna Patele6331362013-08-12 06:59:48 +0000152 def test_associate_user_to_project(self):
Matthew Treinish57160582014-06-09 17:13:48 -0400153 # Associate a user to a project
154 # Create a Project
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000155 p_name = data_utils.rand_name('project')
David Kranzd8ccb792014-12-29 11:32:05 -0500156 project = self.client.create_project(p_name)
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000157 self.data.projects.append(project)
Nayna Patele6331362013-08-12 06:59:48 +0000158
Matthew Treinish57160582014-06-09 17:13:48 -0400159 # Create a User
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000160 u_name = data_utils.rand_name('user')
Nayna Patele6331362013-08-12 06:59:48 +0000161 u_desc = u_name + 'description'
162 u_email = u_name + '@testmail.tm'
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +0000163 u_password = data_utils.rand_name('pass')
David Kranzd8ccb792014-12-29 11:32:05 -0500164 user = self.client.create_user(
Nayna Patele6331362013-08-12 06:59:48 +0000165 u_name, description=u_desc, password=u_password,
166 email=u_email, project_id=project['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000167 # Delete the User at the end of this method
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000168 self.addCleanup(self.client.delete_user, user['id'])
Nayna Patele6331362013-08-12 06:59:48 +0000169
170 # Get User To validate the user details
David Kranzd8ccb792014-12-29 11:32:05 -0500171 new_user_get = self.client.get_user(user['id'])
Matthew Treinish57160582014-06-09 17:13:48 -0400172 # Assert response body of GET
Nayna Patele6331362013-08-12 06:59:48 +0000173 self.assertEqual(u_name, new_user_get['name'])
174 self.assertEqual(u_desc, new_user_get['description'])
175 self.assertEqual(project['id'],
176 new_user_get['project_id'])
177 self.assertEqual(u_email, new_user_get['email'])