blob: 10d8bfad26f3abeae8e3f21e9fada08fbf8722b3 [file] [log] [blame]
ZhiQiang Fan39f97222013-09-20 04:49:44 +08001# Copyright 2012 OpenStack Foundation
Jay Pipes13b479b2012-06-11 14:52:27 -04002# 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.
Daryl Walleckced8eb82012-03-19 13:52:37 -050015
Adam Gandelman85f5bed2014-06-19 16:48:17 -070016import StringIO
17
Masayuki Igawabfa07602015-01-20 18:47:17 +090018from tempest_lib import exceptions as lib_exc
19
Sean Dague1937d092013-05-17 16:36:38 -040020from tempest.api.compute import base
Matthew Treinish481466b2012-12-20 17:16:01 -050021from tempest import clients
Masayuki Igawa259c1132013-10-31 17:48:44 +090022from tempest.common.utils import data_utils
Matthew Treinishb0a78fc2014-01-29 16:49:12 +000023from tempest import config
Daryl Walleckdc9e0c42012-04-02 16:51:26 -050024from tempest import exceptions
Giulio Fidente92f77192013-08-26 17:13:28 +020025from tempest.openstack.common import log as logging
Yuiko Takadae9999d62014-03-06 09:22:54 +000026from tempest import test
Daryl Walleckced8eb82012-03-19 13:52:37 -050027
Matthew Treinishb0a78fc2014-01-29 16:49:12 +000028CONF = config.CONF
29
Giulio Fidente92f77192013-08-26 17:13:28 +020030LOG = logging.getLogger(__name__)
31
Daryl Walleckced8eb82012-03-19 13:52:37 -050032
ivan-zhuf2b00502013-10-18 10:06:52 +080033class AuthorizationTestJSON(base.BaseV2ComputeTest):
Daryl Walleckced8eb82012-03-19 13:52:37 -050034 @classmethod
Andrea Frittoli50bb80d2014-09-15 12:34:27 +010035 def resource_setup(cls):
Adam Gandelman85f5bed2014-06-19 16:48:17 -070036 if not CONF.service_available.glance:
37 raise cls.skipException('Glance is not available.')
Salvatore Orlando5a337242014-01-15 22:49:22 +000038 # No network resources required for this test
39 cls.set_network_resources()
Andrea Frittoli50bb80d2014-09-15 12:34:27 +010040 super(AuthorizationTestJSON, cls).resource_setup()
Matthew Treinishf7fca6a2013-12-09 16:27:23 +000041 if not cls.multi_user:
Jay Pipesf38eaac2012-06-21 13:37:35 -040042 msg = "Need >1 user"
ivan-zhu1feeb382013-01-24 10:14:39 +080043 raise cls.skipException(msg)
Daryl Walleckced8eb82012-03-19 13:52:37 -050044 cls.client = cls.os.servers_client
45 cls.images_client = cls.os.images_client
Adam Gandelman85f5bed2014-06-19 16:48:17 -070046 cls.glance_client = cls.os.image_client
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +053047 cls.keypairs_client = cls.os.keypairs_client
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +053048 cls.security_client = cls.os.security_groups_client
Daryl Walleckced8eb82012-03-19 13:52:37 -050049
Andrea Frittoli8283b4e2014-07-17 13:28:58 +010050 creds = cls.isolated_creds.get_alt_creds()
51 cls.alt_manager = clients.Manager(credentials=creds)
Daryl Walleckced8eb82012-03-19 13:52:37 -050052
Jay Pipesf38eaac2012-06-21 13:37:35 -040053 cls.alt_client = cls.alt_manager.servers_client
54 cls.alt_images_client = cls.alt_manager.images_client
55 cls.alt_keypairs_client = cls.alt_manager.keypairs_client
56 cls.alt_security_client = cls.alt_manager.security_groups_client
Daryl Walleckced8eb82012-03-19 13:52:37 -050057
David Kranz0fb14292015-02-11 15:55:20 -050058 server = cls.create_test_server(wait_until='ACTIVE')
59 cls.server = cls.client.get_server(server['id'])
Jay Pipes3f981df2012-03-27 18:59:44 -040060
Masayuki Igawa259c1132013-10-31 17:48:44 +090061 name = data_utils.rand_name('image')
David Kranz34f18782015-01-06 13:43:55 -050062 body = cls.glance_client.create_image(name=name,
63 container_format='bare',
64 disk_format='raw',
65 is_public=False)
Adam Gandelman85f5bed2014-06-19 16:48:17 -070066 image_id = body['id']
67 image_file = StringIO.StringIO(('*' * 1024))
David Kranz34f18782015-01-06 13:43:55 -050068 body = cls.glance_client.update_image(image_id, data=image_file)
Adam Gandelman85f5bed2014-06-19 16:48:17 -070069 cls.glance_client.wait_for_image_status(image_id, 'active')
David Kranza5299eb2015-01-15 17:24:05 -050070 cls.image = cls.images_client.get_image(image_id)
Daryl Walleckced8eb82012-03-19 13:52:37 -050071
Masayuki Igawa259c1132013-10-31 17:48:44 +090072 cls.keypairname = data_utils.rand_name('keypair')
David Kranz173f0e02015-02-06 13:47:57 -050073 cls.keypairs_client.create_keypair(cls.keypairname)
Daryl Walleckced8eb82012-03-19 13:52:37 -050074
Masayuki Igawa259c1132013-10-31 17:48:44 +090075 name = data_utils.rand_name('security')
76 description = data_utils.rand_name('description')
David Kranz9964b4e2015-02-06 15:45:29 -050077 cls.security_group = cls.security_client.create_security_group(
nayna-pateleda1d122013-03-20 14:44:31 +000078 name, description)
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +053079
Jay Pipesf38eaac2012-06-21 13:37:35 -040080 parent_group_id = cls.security_group['id']
81 ip_protocol = 'tcp'
82 from_port = 22
83 to_port = 22
David Kranz9964b4e2015-02-06 15:45:29 -050084 cls.rule = cls.security_client.create_security_group_rule(
nayna-pateleda1d122013-03-20 14:44:31 +000085 parent_group_id, ip_protocol, from_port, to_port)
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +053086
Daryl Walleckced8eb82012-03-19 13:52:37 -050087 @classmethod
Andrea Frittoli50bb80d2014-09-15 12:34:27 +010088 def resource_cleanup(cls):
Matthew Treinishf7fca6a2013-12-09 16:27:23 +000089 if cls.multi_user:
Daryl Walleckced8eb82012-03-19 13:52:37 -050090 cls.images_client.delete_image(cls.image['id'])
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +053091 cls.keypairs_client.delete_keypair(cls.keypairname)
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +053092 cls.security_client.delete_security_group(cls.security_group['id'])
Andrea Frittoli50bb80d2014-09-15 12:34:27 +010093 super(AuthorizationTestJSON, cls).resource_cleanup()
Daryl Walleckced8eb82012-03-19 13:52:37 -050094
Yuiko Takadae9999d62014-03-06 09:22:54 +000095 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -040096 def test_get_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050097 # A GET request for a server on another user's account should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +090098 self.assertRaises(lib_exc.NotFound, self.alt_client.get_server,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +103099 self.server['id'])
Daryl Walleckced8eb82012-03-19 13:52:37 -0500100
Yuiko Takadae9999d62014-03-06 09:22:54 +0000101 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400102 def test_delete_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500103 # A DELETE request for another user's server should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900104 self.assertRaises(lib_exc.NotFound, self.alt_client.delete_server,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030105 self.server['id'])
Daryl Walleckced8eb82012-03-19 13:52:37 -0500106
Yuiko Takadae9999d62014-03-06 09:22:54 +0000107 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400108 def test_update_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500109 # An update server request for another user's server should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900110 self.assertRaises(lib_exc.NotFound, self.alt_client.update_server,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030111 self.server['id'], name='test')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500112
Yuiko Takadae9999d62014-03-06 09:22:54 +0000113 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400114 def test_list_server_addresses_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500115 # A list addresses request for another user's server should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900116 self.assertRaises(lib_exc.NotFound, self.alt_client.list_addresses,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030117 self.server['id'])
Daryl Walleckced8eb82012-03-19 13:52:37 -0500118
Yuiko Takadae9999d62014-03-06 09:22:54 +0000119 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400120 def test_list_server_addresses_by_network_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500121 # A list address/network request for another user's server should fail
Daryl Walleckced8eb82012-03-19 13:52:37 -0500122 server_id = self.server['id']
Masayuki Igawabfa07602015-01-20 18:47:17 +0900123 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030124 self.alt_client.list_addresses_by_network, server_id,
125 'public')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500126
Yuiko Takadae9999d62014-03-06 09:22:54 +0000127 @test.attr(type='gate')
sapan-kona37939762012-06-28 20:22:43 +0530128 def test_list_servers_with_alternate_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500129 # A list on servers from one tenant should not
130 # show on alternate tenant
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200131 # Listing servers from alternate tenant
sapan-kona37939762012-06-28 20:22:43 +0530132 alt_server_ids = []
133 resp, body = self.alt_client.list_servers()
134 alt_server_ids = [s['id'] for s in body['servers']]
135 self.assertNotIn(self.server['id'], alt_server_ids)
136
Yuiko Takadae9999d62014-03-06 09:22:54 +0000137 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400138 def test_change_password_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500139 # A change password request for another user's server should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900140 self.assertRaises(lib_exc.NotFound, self.alt_client.change_password,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030141 self.server['id'], 'newpass')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500142
Yuiko Takadae9999d62014-03-06 09:22:54 +0000143 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400144 def test_reboot_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500145 # A reboot request for another user's server should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900146 self.assertRaises(lib_exc.NotFound, self.alt_client.reboot,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030147 self.server['id'], 'HARD')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500148
Yuiko Takadae9999d62014-03-06 09:22:54 +0000149 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400150 def test_rebuild_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500151 # A rebuild request for another user's server should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900152 self.assertRaises(lib_exc.NotFound, self.alt_client.rebuild,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030153 self.server['id'], self.image_ref_alt)
Daryl Walleckced8eb82012-03-19 13:52:37 -0500154
Yuiko Takadae9999d62014-03-06 09:22:54 +0000155 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400156 def test_resize_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500157 # A resize request for another user's server should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900158 self.assertRaises(lib_exc.NotFound, self.alt_client.resize,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030159 self.server['id'], self.flavor_ref_alt)
Daryl Walleckced8eb82012-03-19 13:52:37 -0500160
Yuiko Takadae9999d62014-03-06 09:22:54 +0000161 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400162 def test_create_image_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500163 # A create image request for another user's server should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900164 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030165 self.alt_images_client.create_image,
166 self.server['id'], 'testImage')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500167
Yuiko Takadae9999d62014-03-06 09:22:54 +0000168 @test.attr(type='gate')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500169 def test_create_server_with_unauthorized_image(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500170 # Server creation with another user's image should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030171 self.assertRaises(exceptions.BadRequest, self.alt_client.create_server,
172 'test', self.image['id'], self.flavor_ref)
Daryl Walleckced8eb82012-03-19 13:52:37 -0500173
Yuiko Takadae9999d62014-03-06 09:22:54 +0000174 @test.attr(type='gate')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500175 def test_create_server_fails_when_tenant_incorrect(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500176 # A create server request should fail if the tenant id does not match
177 # the current user
Andrea Frittoli8bbdb162014-01-06 11:06:13 +0000178 # Change the base URL to impersonate another user
179 self.alt_client.auth_provider.set_alt_auth_data(
180 request_part='url',
181 auth_data=self.client.auth_provider.auth_data
182 )
183 self.assertRaises(exceptions.BadRequest,
184 self.alt_client.create_server, 'test',
185 self.image['id'], self.flavor_ref)
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530186
Yuiko Takadae9999d62014-03-06 09:22:54 +0000187 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400188 def test_create_keypair_in_analt_user_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500189 # A create keypair request should fail if the tenant id does not match
190 # the current user
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200191 # POST keypair with other user tenant
Masayuki Igawa259c1132013-10-31 17:48:44 +0900192 k_name = data_utils.rand_name('keypair-')
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530193 try:
194 # Change the base URL to impersonate another user
Andrea Frittoli8bbdb162014-01-06 11:06:13 +0000195 self.alt_keypairs_client.auth_provider.set_alt_auth_data(
196 request_part='url',
197 auth_data=self.keypairs_client.auth_provider.auth_data
198 )
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530199 resp = {}
200 resp['status'] = None
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030201 self.assertRaises(exceptions.BadRequest,
202 self.alt_keypairs_client.create_keypair, k_name)
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530203 finally:
Andrea Frittoli8bbdb162014-01-06 11:06:13 +0000204 # Next request the base_url is back to normal
Zhongyue Luoe471d6e2012-09-17 17:02:43 +0800205 if (resp['status'] is not None):
David Kranz173f0e02015-02-06 13:47:57 -0500206 self.alt_keypairs_client.delete_keypair(k_name)
Giulio Fidente92f77192013-08-26 17:13:28 +0200207 LOG.error("Create keypair request should not happen "
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800208 "if the tenant id does not match the current user")
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530209
Yuiko Takadae9999d62014-03-06 09:22:54 +0000210 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400211 def test_get_keypair_of_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500212 # A GET request for another user's keypair should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900213 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030214 self.alt_keypairs_client.get_keypair,
215 self.keypairname)
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530216
Yuiko Takadae9999d62014-03-06 09:22:54 +0000217 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400218 def test_delete_keypair_of_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500219 # A DELETE request for another user's keypair should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900220 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030221 self.alt_keypairs_client.delete_keypair,
222 self.keypairname)
rajalakshmi-ganesan32f8db62012-05-18 19:13:40 +0530223
Yuiko Takadae9999d62014-03-06 09:22:54 +0000224 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400225 def test_get_image_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500226 # A GET request for an image on another user's account should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900227 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030228 self.alt_images_client.get_image, self.image['id'])
rajalakshmi-ganesan32f8db62012-05-18 19:13:40 +0530229
Yuiko Takadae9999d62014-03-06 09:22:54 +0000230 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400231 def test_delete_image_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500232 # A DELETE request for another user's image should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900233 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030234 self.alt_images_client.delete_image,
235 self.image['id'])
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530236
Yuiko Takadae9999d62014-03-06 09:22:54 +0000237 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400238 def test_create_security_group_in_analt_user_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500239 # A create security group request should fail if the tenant id does not
240 # match the current user
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200241 # POST security group with other user tenant
Masayuki Igawa259c1132013-10-31 17:48:44 +0900242 s_name = data_utils.rand_name('security-')
243 s_description = data_utils.rand_name('security')
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530244 try:
245 # Change the base URL to impersonate another user
Andrea Frittoli8bbdb162014-01-06 11:06:13 +0000246 self.alt_security_client.auth_provider.set_alt_auth_data(
247 request_part='url',
248 auth_data=self.security_client.auth_provider.auth_data
249 )
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530250 resp = {}
251 resp['status'] = None
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030252 self.assertRaises(exceptions.BadRequest,
253 self.alt_security_client.create_security_group,
254 s_name, s_description)
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530255 finally:
Andrea Frittoli8bbdb162014-01-06 11:06:13 +0000256 # Next request the base_url is back to normal
Zhongyue Luoe471d6e2012-09-17 17:02:43 +0800257 if resp['status'] is not None:
Monty Taylorb2ca5ca2013-04-28 18:00:21 -0700258 self.alt_security_client.delete_security_group(resp['id'])
Giulio Fidente92f77192013-08-26 17:13:28 +0200259 LOG.error("Create Security Group request should not happen if"
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530260 "the tenant id does not match the current user")
261
Yuiko Takadae9999d62014-03-06 09:22:54 +0000262 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400263 def test_get_security_group_of_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500264 # A GET request for another user's security group should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900265 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030266 self.alt_security_client.get_security_group,
267 self.security_group['id'])
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530268
Yuiko Takadae9999d62014-03-06 09:22:54 +0000269 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400270 def test_delete_security_group_of_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500271 # A DELETE request for another user's security group should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900272 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030273 self.alt_security_client.delete_security_group,
274 self.security_group['id'])
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530275
Yuiko Takadae9999d62014-03-06 09:22:54 +0000276 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400277 def test_create_security_group_rule_in_analt_user_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500278 # A create security group rule request should fail if the tenant id
279 # does not match the current user
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200280 # POST security group rule with other user tenant
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530281 parent_group_id = self.security_group['id']
282 ip_protocol = 'icmp'
283 from_port = -1
284 to_port = -1
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530285 try:
286 # Change the base URL to impersonate another user
Andrea Frittoli8bbdb162014-01-06 11:06:13 +0000287 self.alt_security_client.auth_provider.set_alt_auth_data(
288 request_part='url',
289 auth_data=self.security_client.auth_provider.auth_data
290 )
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530291 resp = {}
292 resp['status'] = None
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030293 self.assertRaises(exceptions.BadRequest,
294 self.alt_security_client.
295 create_security_group_rule,
296 parent_group_id, ip_protocol, from_port,
297 to_port)
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530298 finally:
Andrea Frittoli8bbdb162014-01-06 11:06:13 +0000299 # Next request the base_url is back to normal
Zhongyue Luoe471d6e2012-09-17 17:02:43 +0800300 if resp['status'] is not None:
Monty Taylorb2ca5ca2013-04-28 18:00:21 -0700301 self.alt_security_client.delete_security_group_rule(resp['id'])
Giulio Fidente92f77192013-08-26 17:13:28 +0200302 LOG.error("Create security group rule request should not "
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530303 "happen if the tenant id does not match the"
304 " current user")
305
Yuiko Takadae9999d62014-03-06 09:22:54 +0000306 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400307 def test_delete_security_group_rule_of_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500308 # A DELETE request for another user's security group rule
309 # should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900310 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030311 self.alt_security_client.delete_security_group_rule,
312 self.rule['id'])
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530313
Yuiko Takadae9999d62014-03-06 09:22:54 +0000314 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400315 def test_set_metadata_of_alt_account_server_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500316 # A set metadata for another user's server should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530317 req_metadata = {'meta1': 'data1', 'meta2': 'data2'}
Masayuki Igawabfa07602015-01-20 18:47:17 +0900318 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030319 self.alt_client.set_server_metadata,
320 self.server['id'],
321 req_metadata)
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530322
Yuiko Takadae9999d62014-03-06 09:22:54 +0000323 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400324 def test_set_metadata_of_alt_account_image_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500325 # A set metadata for another user's image should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530326 req_metadata = {'meta1': 'value1', 'meta2': 'value2'}
Masayuki Igawabfa07602015-01-20 18:47:17 +0900327 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030328 self.alt_images_client.set_image_metadata,
329 self.image['id'], req_metadata)
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530330
Yuiko Takadae9999d62014-03-06 09:22:54 +0000331 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400332 def test_get_metadata_of_alt_account_server_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500333 # A get metadata for another user's server should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530334 req_metadata = {'meta1': 'data1'}
Zhongyue Luoe0884a32012-09-25 17:24:17 +0800335 self.client.set_server_metadata(self.server['id'], req_metadata)
hi2suresh31bb7cb2013-03-14 04:53:49 +0000336 self.addCleanup(self.client.delete_server_metadata_item,
337 self.server['id'], 'meta1')
Masayuki Igawabfa07602015-01-20 18:47:17 +0900338 self.assertRaises(lib_exc.NotFound,
hi2suresh31bb7cb2013-03-14 04:53:49 +0000339 self.alt_client.get_server_metadata_item,
340 self.server['id'], 'meta1')
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530341
Yuiko Takadae9999d62014-03-06 09:22:54 +0000342 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400343 def test_get_metadata_of_alt_account_image_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500344 # A get metadata for another user's image should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530345 req_metadata = {'meta1': 'value1'}
hi2sureshd0e24122013-03-15 03:06:53 +0000346 self.addCleanup(self.images_client.delete_image_metadata_item,
347 self.image['id'], 'meta1')
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530348 self.images_client.set_image_metadata(self.image['id'],
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800349 req_metadata)
Masayuki Igawabfa07602015-01-20 18:47:17 +0900350 self.assertRaises(lib_exc.NotFound,
hi2sureshd0e24122013-03-15 03:06:53 +0000351 self.alt_images_client.get_image_metadata_item,
352 self.image['id'], 'meta1')
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530353
Yuiko Takadae9999d62014-03-06 09:22:54 +0000354 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400355 def test_delete_metadata_of_alt_account_server_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500356 # A delete metadata for another user's server should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530357 req_metadata = {'meta1': 'data1'}
hi2sureshd0e24122013-03-15 03:06:53 +0000358 self.addCleanup(self.client.delete_server_metadata_item,
359 self.server['id'], 'meta1')
Zhongyue Luoe0884a32012-09-25 17:24:17 +0800360 self.client.set_server_metadata(self.server['id'], req_metadata)
Masayuki Igawabfa07602015-01-20 18:47:17 +0900361 self.assertRaises(lib_exc.NotFound,
hi2sureshd0e24122013-03-15 03:06:53 +0000362 self.alt_client.delete_server_metadata_item,
363 self.server['id'], 'meta1')
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530364
Yuiko Takadae9999d62014-03-06 09:22:54 +0000365 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400366 def test_delete_metadata_of_alt_account_image_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500367 # A delete metadata for another user's image should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530368 req_metadata = {'meta1': 'data1'}
hi2sureshd0e24122013-03-15 03:06:53 +0000369 self.addCleanup(self.images_client.delete_image_metadata_item,
370 self.image['id'], 'meta1')
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530371 self.images_client.set_image_metadata(self.image['id'],
372 req_metadata)
Masayuki Igawabfa07602015-01-20 18:47:17 +0900373 self.assertRaises(lib_exc.NotFound,
hi2sureshd0e24122013-03-15 03:06:53 +0000374 self.alt_images_client.delete_image_metadata_item,
375 self.image['id'], 'meta1')
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +0530376
Yuiko Takadae9999d62014-03-06 09:22:54 +0000377 @test.attr(type='gate')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400378 def test_get_console_output_of_alt_account_server_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500379 # A Get Console Output for another user's server should fail
Masayuki Igawabfa07602015-01-20 18:47:17 +0900380 self.assertRaises(lib_exc.NotFound,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030381 self.alt_client.get_console_output,
382 self.server['id'], 10)