Jay Pipes | 13b479b | 2012-06-11 14:52:27 -0400 | [diff] [blame] | 1 | # 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. |
| 17 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 18 | import sys |
Jay Pipes | 13b479b | 2012-06-11 14:52:27 -0400 | [diff] [blame] | 19 | |
Matthew Treinish | 481466b | 2012-12-20 17:16:01 -0500 | [diff] [blame] | 20 | from tempest import clients |
Matthew Treinish | a83a16e | 2012-12-07 13:44:02 -0500 | [diff] [blame] | 21 | from tempest.common.utils.data_utils import rand_name |
Daryl Walleck | ed8bef3 | 2011-12-05 23:02:08 -0600 | [diff] [blame] | 22 | from tempest import exceptions |
Chris Yeoh | 9465b0b | 2013-02-09 22:19:15 +1030 | [diff] [blame] | 23 | from tempest.test import attr |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 24 | from tempest.tests.compute import base |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 25 | |
| 26 | |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 27 | class ServersNegativeTest(base.BaseComputeTest): |
| 28 | _interface = 'json' |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 29 | |
| 30 | @classmethod |
| 31 | def setUpClass(cls): |
ivan-zhu | 1feeb38 | 2013-01-24 10:14:39 +0800 | [diff] [blame] | 32 | raise cls.skipException("Until Bug 1046870 is fixed") |
Jay Pipes | f38eaac | 2012-06-21 13:37:35 -0400 | [diff] [blame] | 33 | super(ServersNegativeTest, cls).setUpClass() |
Daryl Walleck | c725196 | 2012-03-12 17:26:54 -0500 | [diff] [blame] | 34 | cls.client = cls.servers_client |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 35 | cls.img_client = cls.images_client |
Matthew Treinish | 481466b | 2012-12-20 17:16:01 -0500 | [diff] [blame] | 36 | cls.alt_os = clients.AltManager() |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 37 | cls.alt_client = cls.alt_os.servers_client |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 38 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 39 | @attr(type='negative') |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 40 | def test_server_name_blank(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 41 | # Create a server with name parameter empty |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 42 | |
| 43 | self.assertRaises(exceptions.BadRequest, |
| 44 | self.create_server_with_extras, |
| 45 | '', self.image_ref, self.flavor_ref) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 46 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 47 | @attr(type='negative') |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 48 | def test_personality_file_contents_not_encoded(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 49 | # Use an unencoded file when creating a server with personality |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 50 | |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 51 | file_contents = 'This is a test file.' |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 52 | person = [{'path': '/etc/testfile.txt', |
| 53 | 'contents': file_contents}] |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 54 | |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 55 | self.assertRaises(exceptions.BadRequest, |
| 56 | self.create_server_with_extras, |
| 57 | 'fail', self.image_ref, self.flavor_ref, |
| 58 | personality=person) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 59 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 60 | @attr(type='negative') |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 61 | def test_create_with_invalid_image(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 62 | # Create a server with an unknown image |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 63 | |
| 64 | self.assertRaises(exceptions.BadRequest, |
| 65 | self.create_server_with_extras, |
| 66 | 'fail', -1, self.flavor_ref) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 67 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 68 | @attr(type='negative') |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 69 | def test_create_with_invalid_flavor(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 70 | # Create a server with an unknown flavor |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 71 | |
| 72 | self.assertRaises(exceptions.BadRequest, |
| 73 | self.create_server_with_extras, |
| 74 | 'fail', self.image_ref, -1) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 75 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 76 | @attr(type='negative') |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 77 | def test_invalid_access_ip_v4_address(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 78 | # An access IPv4 address must match a valid address pattern |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 79 | |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 80 | IPv4 = '1.1.1.1.1.1' |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 81 | self.assertRaises(exceptions.BadRequest, |
| 82 | self.create_server_with_extras, "fail", |
| 83 | self.image_ref, self.flavor_ref, accessIPv4=IPv4) |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 84 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 85 | @attr(type='negative') |
Daryl Walleck | adea1fa | 2011-11-15 18:36:39 -0600 | [diff] [blame] | 86 | def test_invalid_ip_v6_address(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 87 | # An access IPv6 address must match a valid address pattern |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 88 | |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 89 | IPv6 = 'notvalid' |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 90 | |
| 91 | self.assertRaises(exceptions.BadRequest, |
| 92 | self.create_server_with_extras, "fail", |
| 93 | self.image_ref, self.flavor_ref, accessIPv6=IPv6) |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 94 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 95 | @attr(type='negative') |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 96 | def test_reboot_deleted_server(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 97 | # Reboot a deleted server |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 98 | |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 99 | self.name = rand_name('server') |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 100 | resp, create_server = self.create_server_with_extras(self.name, |
| 101 | self.image_ref, |
| 102 | self.flavor_ref) |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 103 | self.server_id = create_server['id'] |
| 104 | self.client.delete_server(self.server_id) |
David Kranz | 1b39dd4 | 2012-05-30 17:04:09 -0400 | [diff] [blame] | 105 | self.client.wait_for_server_termination(self.server_id) |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 106 | self.assertRaises(exceptions.NotFound, self.client.reboot, |
| 107 | self.server_id, 'SOFT') |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 108 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 109 | @attr(type='negative') |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 110 | def test_rebuild_deleted_server(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 111 | # Rebuild a deleted server |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 112 | |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 113 | self.name = rand_name('server') |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 114 | resp, create_server = self.create_server_with_extras(self.name, |
| 115 | self.image_ref, |
| 116 | self.flavor_ref) |
ravikumar-venkatesan | 36892e1 | 2012-05-11 18:01:41 +0000 | [diff] [blame] | 117 | self.server_id = create_server['id'] |
| 118 | self.client.delete_server(self.server_id) |
David Kranz | 1b39dd4 | 2012-05-30 17:04:09 -0400 | [diff] [blame] | 119 | self.client.wait_for_server_termination(self.server_id) |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 120 | |
| 121 | self.assertRaises(exceptions.NotFound, |
| 122 | self.client.rebuild, |
| 123 | self.server_id, self.image_ref_alt) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 124 | |
| 125 | @attr(type='negative') |
| 126 | def test_create_numeric_server_name(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 127 | # Create a server with a numeric name |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 128 | |
| 129 | server_name = 12345 |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 130 | self.assertRaises(exceptions.BadRequest, |
| 131 | self.create_server_with_extras, |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 132 | server_name, self.image_ref, self.flavor_ref) |
| 133 | |
| 134 | @attr(type='negative') |
| 135 | def test_create_server_name_length_exceeds_256(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 136 | # Create a server with name length exceeding 256 characters |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 137 | |
| 138 | server_name = 'a' * 256 |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 139 | self.assertRaises(exceptions.BadRequest, |
| 140 | self.create_server_with_extras, |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 141 | server_name, self.image_ref, self.flavor_ref) |
| 142 | |
| 143 | @attr(type='negative') |
| 144 | def test_create_with_invalid_network_uuid(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 145 | # Pass invalid network uuid while creating a server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 146 | |
| 147 | server_name = rand_name('server') |
Chris Yeoh | fc9e333 | 2013-01-21 09:28:13 +1030 | [diff] [blame] | 148 | networks = [{'fixed_ip': '10.0.1.1', 'uuid': 'a-b-c-d-e-f-g-h-i-j'}] |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 149 | |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 150 | self.assertRaises(exceptions.BadRequest, |
| 151 | self.create_server_with_extras, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 152 | server_name, self.image_ref, self.flavor_ref, |
| 153 | networks=networks) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 154 | |
| 155 | @attr(type='negative') |
| 156 | def test_create_with_non_existant_keypair(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 157 | # Pass a non existant keypair while creating a server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 158 | |
| 159 | key_name = rand_name('key') |
| 160 | server_name = rand_name('server') |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 161 | self.assertRaises(exceptions.BadRequest, |
| 162 | self.create_server_with_extras, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 163 | server_name, self.image_ref, self.flavor_ref, |
| 164 | key_name=key_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 165 | |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 166 | @attr(type='negative') |
| 167 | def test_create_server_metadata_exceeds_length_limit(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 168 | # Pass really long metadata while creating a server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 169 | |
| 170 | server_name = rand_name('server') |
| 171 | metadata = {'a': 'b' * 260} |
Sean Dague | 9b669e3 | 2012-12-13 18:40:08 -0500 | [diff] [blame] | 172 | self.assertRaises(exceptions.OverLimit, |
| 173 | self.create_server_with_extras, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 174 | server_name, self.image_ref, self.flavor_ref, |
| 175 | meta=metadata) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 176 | |
| 177 | @attr(type='negative') |
| 178 | def test_update_name_of_non_existent_server(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 179 | # Update name of a non-existent server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 180 | |
| 181 | server_name = rand_name('server') |
| 182 | new_name = rand_name('server') + '_updated' |
| 183 | |
| 184 | self.assertRaises(exceptions.NotFound, self.client.update_server, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 185 | server_name, name=new_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 186 | |
| 187 | @attr(type='negative') |
| 188 | def test_update_server_set_empty_name(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 189 | # Update name of the server to an empty string |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 190 | |
| 191 | server_name = rand_name('server') |
| 192 | new_name = '' |
| 193 | |
| 194 | self.assertRaises(exceptions.BadRequest, self.client.update_server, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 195 | server_name, name=new_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 196 | |
| 197 | @attr(type='negative') |
| 198 | def test_update_server_of_another_tenant(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 199 | # Update name of a server that belongs to another tenant |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 200 | |
| 201 | server = self.create_server() |
| 202 | new_name = server['id'] + '_new' |
| 203 | self.assertRaises(exceptions.NotFound, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 204 | self.alt_client.update_server, server['id'], |
| 205 | name=new_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 206 | |
| 207 | @attr(type='negative') |
| 208 | def test_update_server_name_length_exceeds_256(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 209 | # Update name of server exceed the name length limit |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 210 | |
| 211 | server = self.create_server() |
| 212 | new_name = 'a' * 256 |
| 213 | self.assertRaises(exceptions.BadRequest, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 214 | self.client.update_server, |
| 215 | server['id'], |
| 216 | name=new_name) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 217 | |
| 218 | @attr(type='negative') |
| 219 | def test_delete_non_existent_server(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 220 | # Delete a non existent server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 221 | |
| 222 | self.assertRaises(exceptions.NotFound, self.client.delete_server, |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 223 | '999erra43') |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 224 | |
| 225 | @attr(type='negative') |
| 226 | def test_delete_a_server_of_another_tenant(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 227 | # Delete a server that belongs to another tenant |
rajalakshmi-ganesan | 6a863a8 | 2012-07-18 15:58:07 +0530 | [diff] [blame] | 228 | try: |
| 229 | server = self.create_server() |
| 230 | self.assertRaises(exceptions.NotFound, |
| 231 | self.alt_client.delete_server, |
| 232 | server['id']) |
| 233 | finally: |
| 234 | self.client.delete_server(server['id']) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 235 | |
| 236 | @attr(type='negative') |
| 237 | def test_delete_server_pass_negative_id(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 238 | # Pass an invalid string parameter to delete server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 239 | |
Zhongyue Luo | 79d8d36 | 2012-09-25 13:49:27 +0800 | [diff] [blame] | 240 | self.assertRaises(exceptions.NotFound, self.client.delete_server, -1) |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 241 | |
| 242 | @attr(type='negative') |
| 243 | def test_delete_server_pass_id_exceeding_length_limit(self): |
Sean Dague | 4dd2c0b | 2013-01-03 17:50:28 -0500 | [diff] [blame] | 244 | # Pass a server ID that exceeds length limit to delete server |
Rohit Karajgi | dc300b2 | 2012-05-04 08:11:00 -0700 | [diff] [blame] | 245 | |
| 246 | self.assertRaises(exceptions.NotFound, self.client.delete_server, |
| 247 | sys.maxint + 1) |
donald-ngo | 78bd7f5 | 2013-02-08 14:35:16 -0800 | [diff] [blame] | 248 | |
| 249 | @attr(type='negative') |
| 250 | def test_create_with_nonexistent_security_group(self): |
| 251 | # Create a server with a nonexistent security group |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 252 | |
| 253 | security_groups = [{'name': 'does_not_exist'}] |
| 254 | self.assertRaises(exceptions.BadRequest, |
| 255 | self.create_server_with_extras, 'fail', |
| 256 | self.image_ref, self.flavor_ref, |
| 257 | security_groups=security_groups) |
hi2suresh | 063acbc | 2013-02-20 09:32:03 +0000 | [diff] [blame] | 258 | |
| 259 | @attr(type='negative') |
| 260 | def test_get_non_existent_server(self): |
| 261 | # Get a non existent server details |
donald-ngo | 18edb81 | 2013-02-22 11:37:15 -0800 | [diff] [blame^] | 262 | |
hi2suresh | 063acbc | 2013-02-20 09:32:03 +0000 | [diff] [blame] | 263 | self.assertRaises(exceptions.NotFound, self.client.get_server, |
| 264 | '999erra43') |