blob: 7bd5c75a74c5aceaf966d407fe3578db357743cb [file] [log] [blame]
Jay Pipes13b479b2012-06-11 14:52:27 -04001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 OpenStack, LLC
4# All Rights Reserved.
5#
6# Licensed under the Apache License, Version 2.0 (the "License"); you may
7# not use this file except in compliance with the License. You may obtain
8# a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations
16# under the License.
Daryl Walleckced8eb82012-03-19 13:52:37 -050017
ivan-zhu1feeb382013-01-24 10:14:39 +080018import testtools
Daryl Walleckced8eb82012-03-19 13:52:37 -050019
Matthew Treinish481466b2012-12-20 17:16:01 -050020from tempest import clients
Matthew Treinisha83a16e2012-12-07 13:44:02 -050021from tempest.common.utils.data_utils import parse_image_id
22from tempest.common.utils.data_utils import rand_name
Daryl Walleckdc9e0c42012-04-02 16:51:26 -050023from tempest import exceptions
Jay Pipesf38eaac2012-06-21 13:37:35 -040024from tempest.tests import compute
Attila Fazekas19044d52013-02-16 07:35:06 +010025from tempest.tests.compute import base
Daryl Walleckced8eb82012-03-19 13:52:37 -050026
27
Attila Fazekas19044d52013-02-16 07:35:06 +010028class AuthorizationTest(base.BaseComputeTest):
29 _interface = 'json'
Daryl Walleckced8eb82012-03-19 13:52:37 -050030
31 @classmethod
32 def setUpClass(cls):
Jay Pipesf38eaac2012-06-21 13:37:35 -040033 if not compute.MULTI_USER:
34 msg = "Need >1 user"
ivan-zhu1feeb382013-01-24 10:14:39 +080035 raise cls.skipException(msg)
Jay Pipesf38eaac2012-06-21 13:37:35 -040036
37 super(AuthorizationTest, cls).setUpClass()
38
Daryl Walleckced8eb82012-03-19 13:52:37 -050039 cls.client = cls.os.servers_client
40 cls.images_client = cls.os.images_client
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +053041 cls.keypairs_client = cls.os.keypairs_client
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +053042 cls.security_client = cls.os.security_groups_client
Daryl Walleckced8eb82012-03-19 13:52:37 -050043
Jay Pipesf38eaac2012-06-21 13:37:35 -040044 if cls.config.compute.allow_tenant_isolation:
45 creds = cls._get_isolated_creds()
46 username, tenant_name, password = creds
Matthew Treinish481466b2012-12-20 17:16:01 -050047 cls.alt_manager = clients.Manager(username=username,
48 password=password,
49 tenant_name=tenant_name)
Jay Pipesf38eaac2012-06-21 13:37:35 -040050 else:
51 # Use the alt_XXX credentials in the config file
Matthew Treinish481466b2012-12-20 17:16:01 -050052 cls.alt_manager = clients.AltManager()
Daryl Walleckced8eb82012-03-19 13:52:37 -050053
Jay Pipesf38eaac2012-06-21 13:37:35 -040054 cls.alt_client = cls.alt_manager.servers_client
55 cls.alt_images_client = cls.alt_manager.images_client
56 cls.alt_keypairs_client = cls.alt_manager.keypairs_client
57 cls.alt_security_client = cls.alt_manager.security_groups_client
Daryl Walleckced8eb82012-03-19 13:52:37 -050058
Jay Pipesf38eaac2012-06-21 13:37:35 -040059 cls.alt_security_client._set_auth()
60 name = rand_name('server')
61 resp, server = cls.client.create_server(name, cls.image_ref,
62 cls.flavor_ref)
63 cls.client.wait_for_server_status(server['id'], 'ACTIVE')
64 resp, cls.server = cls.client.get_server(server['id'])
Jay Pipes3f981df2012-03-27 18:59:44 -040065
Jay Pipesf38eaac2012-06-21 13:37:35 -040066 name = rand_name('image')
67 resp, body = cls.client.create_image(server['id'], name)
68 image_id = parse_image_id(resp['location'])
69 cls.images_client.wait_for_image_resp_code(image_id, 200)
70 cls.images_client.wait_for_image_status(image_id, 'ACTIVE')
71 resp, cls.image = cls.images_client.get_image(image_id)
Daryl Walleckced8eb82012-03-19 13:52:37 -050072
Jay Pipesf38eaac2012-06-21 13:37:35 -040073 cls.keypairname = rand_name('keypair')
74 resp, keypair = \
75 cls.keypairs_client.create_keypair(cls.keypairname)
Daryl Walleckced8eb82012-03-19 13:52:37 -050076
Jay Pipesf38eaac2012-06-21 13:37:35 -040077 name = rand_name('security')
78 description = rand_name('description')
79 resp, cls.security_group = \
80 cls.security_client.create_security_group(name, description)
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +053081
Jay Pipesf38eaac2012-06-21 13:37:35 -040082 parent_group_id = cls.security_group['id']
83 ip_protocol = 'tcp'
84 from_port = 22
85 to_port = 22
86 resp, cls.rule =\
Zhongyue Luoe6321ef2012-09-17 16:45:50 +080087 cls.security_client.create_security_group_rule(
Jay Pipesf38eaac2012-06-21 13:37:35 -040088 parent_group_id,
89 ip_protocol, from_port,
90 to_port)
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +053091
Daryl Walleckced8eb82012-03-19 13:52:37 -050092 @classmethod
93 def tearDownClass(cls):
Jay Pipesf38eaac2012-06-21 13:37:35 -040094 if compute.MULTI_USER:
Daryl Walleckced8eb82012-03-19 13:52:37 -050095 cls.client.delete_server(cls.server['id'])
96 cls.images_client.delete_image(cls.image['id'])
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +053097 cls.keypairs_client.delete_keypair(cls.keypairname)
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +053098 cls.security_client.delete_security_group(cls.security_group['id'])
Jay Pipesf38eaac2012-06-21 13:37:35 -040099 super(AuthorizationTest, cls).tearDownClass()
Daryl Walleckced8eb82012-03-19 13:52:37 -0500100
Jay Pipesf38eaac2012-06-21 13:37:35 -0400101 def test_get_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500102 # A GET request for a server on another user's account should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030103 self.assertRaises(exceptions.NotFound, self.alt_client.get_server,
104 self.server['id'])
Daryl Walleckced8eb82012-03-19 13:52:37 -0500105
Jay Pipesf38eaac2012-06-21 13:37:35 -0400106 def test_delete_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500107 # A DELETE request for another user's server should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030108 self.assertRaises(exceptions.NotFound, self.alt_client.delete_server,
109 self.server['id'])
Daryl Walleckced8eb82012-03-19 13:52:37 -0500110
Jay Pipesf38eaac2012-06-21 13:37:35 -0400111 def test_update_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500112 # An update server request for another user's server should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030113 self.assertRaises(exceptions.NotFound, self.alt_client.update_server,
114 self.server['id'], name='test')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500115
Jay Pipesf38eaac2012-06-21 13:37:35 -0400116 def test_list_server_addresses_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500117 # A list addresses request for another user's server should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030118 self.assertRaises(exceptions.NotFound, self.alt_client.list_addresses,
119 self.server['id'])
Daryl Walleckced8eb82012-03-19 13:52:37 -0500120
Jay Pipesf38eaac2012-06-21 13:37:35 -0400121 def test_list_server_addresses_by_network_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500122 # A list address/network request for another user's server should fail
Daryl Walleckced8eb82012-03-19 13:52:37 -0500123 server_id = self.server['id']
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030124 self.assertRaises(exceptions.NotFound,
125 self.alt_client.list_addresses_by_network, server_id,
126 'public')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500127
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
sapan-kona37939762012-06-28 20:22:43 +0530131 #Listing servers from alternate tenant
132 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
Jay Pipesf38eaac2012-06-21 13:37:35 -0400137 def test_change_password_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500138 # A change password request for another user's server should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030139 self.assertRaises(exceptions.NotFound, self.alt_client.change_password,
140 self.server['id'], 'newpass')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500141
Jay Pipesf38eaac2012-06-21 13:37:35 -0400142 def test_reboot_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500143 # A reboot request for another user's server should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030144 self.assertRaises(exceptions.NotFound, self.alt_client.reboot,
145 self.server['id'], 'HARD')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500146
Jay Pipesf38eaac2012-06-21 13:37:35 -0400147 def test_rebuild_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500148 # A rebuild request for another user's server should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030149 self.assertRaises(exceptions.NotFound, self.alt_client.rebuild,
150 self.server['id'], self.image_ref_alt)
Daryl Walleckced8eb82012-03-19 13:52:37 -0500151
Jay Pipesf38eaac2012-06-21 13:37:35 -0400152 def test_resize_server_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500153 # A resize request for another user's server should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030154 self.assertRaises(exceptions.NotFound, self.alt_client.resize,
155 self.server['id'], self.flavor_ref_alt)
Daryl Walleckced8eb82012-03-19 13:52:37 -0500156
Jay Pipesf38eaac2012-06-21 13:37:35 -0400157 def test_create_image_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500158 # A create image request for another user's server should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030159 self.assertRaises(exceptions.NotFound,
160 self.alt_images_client.create_image,
161 self.server['id'], 'testImage')
Daryl Walleckced8eb82012-03-19 13:52:37 -0500162
Daryl Walleckced8eb82012-03-19 13:52:37 -0500163 def test_create_server_with_unauthorized_image(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500164 # Server creation with another user's image should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030165 self.assertRaises(exceptions.BadRequest, self.alt_client.create_server,
166 'test', self.image['id'], self.flavor_ref)
Daryl Walleckced8eb82012-03-19 13:52:37 -0500167
Daryl Walleckced8eb82012-03-19 13:52:37 -0500168 def test_create_server_fails_when_tenant_incorrect(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500169 # A create server request should fail if the tenant id does not match
170 # the current user
Jay Pipesf38eaac2012-06-21 13:37:35 -0400171 saved_base_url = self.alt_client.base_url
Jay Pipesff10d552012-04-06 14:18:50 -0400172 try:
Jay Pipesff10d552012-04-06 14:18:50 -0400173 # Change the base URL to impersonate another user
Jay Pipesf38eaac2012-06-21 13:37:35 -0400174 self.alt_client.base_url = self.client.base_url
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030175 self.assertRaises(exceptions.BadRequest,
176 self.alt_client.create_server, 'test',
177 self.image['id'], self.flavor_ref)
Jay Pipesff10d552012-04-06 14:18:50 -0400178 finally:
179 # Reset the base_url...
Jay Pipesf38eaac2012-06-21 13:37:35 -0400180 self.alt_client.base_url = saved_base_url
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530181
Jay Pipesf38eaac2012-06-21 13:37:35 -0400182 def test_create_keypair_in_analt_user_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500183 # A create keypair request should fail if the tenant id does not match
184 # the current user
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530185 #POST keypair with other user tenant
186 k_name = rand_name('keypair-')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400187 self.alt_keypairs_client._set_auth()
188 self.saved_base_url = self.alt_keypairs_client.base_url
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530189 try:
190 # Change the base URL to impersonate another user
Jay Pipesf38eaac2012-06-21 13:37:35 -0400191 self.alt_keypairs_client.base_url = self.keypairs_client.base_url
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530192 resp = {}
193 resp['status'] = None
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030194 self.assertRaises(exceptions.BadRequest,
195 self.alt_keypairs_client.create_keypair, k_name)
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530196 finally:
197 # Reset the base_url...
Jay Pipesf38eaac2012-06-21 13:37:35 -0400198 self.alt_keypairs_client.base_url = self.saved_base_url
Zhongyue Luoe471d6e2012-09-17 17:02:43 +0800199 if (resp['status'] is not None):
Jay Pipesf38eaac2012-06-21 13:37:35 -0400200 resp, _ = self.alt_keypairs_client.delete_keypair(k_name)
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800201 self.fail("Create keypair request should not happen "
202 "if the tenant id does not match the current user")
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530203
Jay Pipesf38eaac2012-06-21 13:37:35 -0400204 def test_get_keypair_of_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500205 # A GET request for another user's keypair should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030206 self.assertRaises(exceptions.NotFound,
207 self.alt_keypairs_client.get_keypair,
208 self.keypairname)
rajalakshmi-ganesanb74a11a2012-05-16 10:37:58 +0530209
ivan-zhu1feeb382013-01-24 10:14:39 +0800210 @testtools.skip("Skipped until the Bug #1086980 is resolved")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400211 def test_delete_keypair_of_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500212 # A DELETE request for another user's keypair should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030213 self.assertRaises(exceptions.NotFound,
214 self.alt_keypairs_client.delete_keypair,
215 self.keypairname)
rajalakshmi-ganesan32f8db62012-05-18 19:13:40 +0530216
Jay Pipesf38eaac2012-06-21 13:37:35 -0400217 def test_get_image_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500218 # A GET request for an image on another user's account should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030219 self.assertRaises(exceptions.NotFound,
220 self.alt_images_client.get_image, self.image['id'])
rajalakshmi-ganesan32f8db62012-05-18 19:13:40 +0530221
Jay Pipesf38eaac2012-06-21 13:37:35 -0400222 def test_delete_image_for_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500223 # A DELETE request for another user's image should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030224 self.assertRaises(exceptions.NotFound,
225 self.alt_images_client.delete_image,
226 self.image['id'])
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530227
Jay Pipesf38eaac2012-06-21 13:37:35 -0400228 def test_create_security_group_in_analt_user_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500229 # A create security group request should fail if the tenant id does not
230 # match the current user
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530231 #POST security group with other user tenant
232 s_name = rand_name('security-')
233 s_description = rand_name('security')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400234 self.saved_base_url = self.alt_security_client.base_url
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530235 try:
236 # Change the base URL to impersonate another user
Jay Pipesf38eaac2012-06-21 13:37:35 -0400237 self.alt_security_client.base_url = self.security_client.base_url
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530238 resp = {}
239 resp['status'] = None
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030240 self.assertRaises(exceptions.BadRequest,
241 self.alt_security_client.create_security_group,
242 s_name, s_description)
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530243 finally:
244 # Reset the base_url...
Jay Pipesf38eaac2012-06-21 13:37:35 -0400245 self.alt_security_client.base_url = self.saved_base_url
Zhongyue Luoe471d6e2012-09-17 17:02:43 +0800246 if resp['status'] is not None:
Attila Fazekas19044d52013-02-16 07:35:06 +0100247 #TODO(afazekas): body not defined
Jay Pipesf38eaac2012-06-21 13:37:35 -0400248 self.alt_security_client.delete_security_group(body['id'])
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530249 self.fail("Create Security Group request should not happen if"
250 "the tenant id does not match the current user")
251
Jay Pipesf38eaac2012-06-21 13:37:35 -0400252 def test_get_security_group_of_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500253 # A GET request for another user's security group should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030254 self.assertRaises(exceptions.NotFound,
255 self.alt_security_client.get_security_group,
256 self.security_group['id'])
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530257
Jay Pipesf38eaac2012-06-21 13:37:35 -0400258 def test_delete_security_group_of_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500259 # A DELETE request for another user's security group should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030260 self.assertRaises(exceptions.NotFound,
261 self.alt_security_client.delete_security_group,
262 self.security_group['id'])
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530263
Jay Pipesf38eaac2012-06-21 13:37:35 -0400264 def test_create_security_group_rule_in_analt_user_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500265 # A create security group rule request should fail if the tenant id
266 # does not match the current user
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530267 #POST security group rule with other user tenant
268 parent_group_id = self.security_group['id']
269 ip_protocol = 'icmp'
270 from_port = -1
271 to_port = -1
Jay Pipesf38eaac2012-06-21 13:37:35 -0400272 self.saved_base_url = self.alt_security_client.base_url
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530273 try:
274 # Change the base URL to impersonate another user
Jay Pipesf38eaac2012-06-21 13:37:35 -0400275 self.alt_security_client.base_url = self.security_client.base_url
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530276 resp = {}
277 resp['status'] = None
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030278 self.assertRaises(exceptions.BadRequest,
279 self.alt_security_client.
280 create_security_group_rule,
281 parent_group_id, ip_protocol, from_port,
282 to_port)
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530283 finally:
284 # Reset the base_url...
Jay Pipesf38eaac2012-06-21 13:37:35 -0400285 self.alt_security_client.base_url = self.saved_base_url
Zhongyue Luoe471d6e2012-09-17 17:02:43 +0800286 if resp['status'] is not None:
Zhongyue Luoe6321ef2012-09-17 16:45:50 +0800287 self.alt_security_client.delete_security_group_rule(
Attila Fazekas19044d52013-02-16 07:35:06 +0100288 body['id']) # BUG
rajalakshmi-ganesan184daad2012-05-18 14:47:38 +0530289 self.fail("Create security group rule request should not "
290 "happen if the tenant id does not match the"
291 " current user")
292
Jay Pipesf38eaac2012-06-21 13:37:35 -0400293 def test_delete_security_group_rule_of_alt_account_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500294 # A DELETE request for another user's security group rule
295 # should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030296 self.assertRaises(exceptions.NotFound,
297 self.alt_security_client.delete_security_group_rule,
298 self.rule['id'])
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530299
Jay Pipesf38eaac2012-06-21 13:37:35 -0400300 def test_set_metadata_of_alt_account_server_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500301 # A set metadata for another user's server should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530302 req_metadata = {'meta1': 'data1', 'meta2': 'data2'}
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030303 self.assertRaises(exceptions.NotFound,
304 self.alt_client.set_server_metadata,
305 self.server['id'],
306 req_metadata)
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530307
Jay Pipesf38eaac2012-06-21 13:37:35 -0400308 def test_set_metadata_of_alt_account_image_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500309 # A set metadata for another user's image should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530310 req_metadata = {'meta1': 'value1', 'meta2': 'value2'}
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030311 self.assertRaises(exceptions.NotFound,
312 self.alt_images_client.set_image_metadata,
313 self.image['id'], req_metadata)
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530314
Jay Pipesf38eaac2012-06-21 13:37:35 -0400315 def test_get_metadata_of_alt_account_server_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500316 # A get metadata for another user's server should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530317 req_metadata = {'meta1': 'data1'}
Zhongyue Luoe0884a32012-09-25 17:24:17 +0800318 self.client.set_server_metadata(self.server['id'], req_metadata)
hi2suresh31bb7cb2013-03-14 04:53:49 +0000319 self.addCleanup(self.client.delete_server_metadata_item,
320 self.server['id'], 'meta1')
321 self.assertRaises(exceptions.NotFound,
322 self.alt_client.get_server_metadata_item,
323 self.server['id'], 'meta1')
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530324
Jay Pipesf38eaac2012-06-21 13:37:35 -0400325 def test_get_metadata_of_alt_account_image_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500326 # A get metadata for another user's image should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530327 req_metadata = {'meta1': 'value1'}
328 self.images_client.set_image_metadata(self.image['id'],
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800329 req_metadata)
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530330 try:
331 resp, meta = \
Jay Pipesf38eaac2012-06-21 13:37:35 -0400332 self.alt_images_client.get_image_metadata_item(self.image['id'],
Zhongyue Luoe0884a32012-09-25 17:24:17 +0800333 'meta1')
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530334 except exceptions.NotFound:
335 pass
336 finally:
Zhongyue Luoe6321ef2012-09-17 16:45:50 +0800337 resp, body = self.images_client.delete_image_metadata_item(
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530338 self.image['id'], 'meta1')
339
Jay Pipesf38eaac2012-06-21 13:37:35 -0400340 def test_delete_metadata_of_alt_account_server_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500341 # A delete metadata for another user's server should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530342 req_metadata = {'meta1': 'data1'}
Zhongyue Luoe0884a32012-09-25 17:24:17 +0800343 self.client.set_server_metadata(self.server['id'], req_metadata)
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530344 try:
345 resp, body = \
Zhongyue Luoe6321ef2012-09-17 16:45:50 +0800346 self.alt_client.delete_server_metadata_item(self.server['id'],
347 'meta1')
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530348 except exceptions.NotFound:
349 pass
350 finally:
351 resp, body = \
352 self.client.delete_server_metadata_item(self.server['id'], 'meta1')
353
Jay Pipesf38eaac2012-06-21 13:37:35 -0400354 def test_delete_metadata_of_alt_account_image_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500355 # A delete metadata for another user's image should fail
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530356 req_metadata = {'meta1': 'data1'}
357 self.images_client.set_image_metadata(self.image['id'],
358 req_metadata)
359 try:
360 resp, body = \
Zhongyue Luoe6321ef2012-09-17 16:45:50 +0800361 self.alt_images_client.delete_image_metadata_item(self.image['id'],
362 'meta1')
rajalakshmi-ganesan929a32a2012-05-29 18:00:25 +0530363 except exceptions.NotFound:
364 pass
365 finally:
366 resp, body = \
367 self.images_client.delete_image_metadata_item(self.image['id'],
Zhongyue Luoe0884a32012-09-25 17:24:17 +0800368 'meta1')
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +0530369
Jay Pipesf38eaac2012-06-21 13:37:35 -0400370 def test_get_console_output_of_alt_account_server_fails(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500371 # A Get Console Output for another user's server should fail
Chris Yeoh8b4eaa52013-02-06 18:03:10 +1030372 self.assertRaises(exceptions.NotFound,
373 self.alt_client.get_console_output,
374 self.server['id'], 10)