blob: 7676ee8033a7a5e612b8329dfe9b16f10fde7191 [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.
15
Sean Dague1937d092013-05-17 16:36:38 -040016from tempest.api.compute import base
Matthew Treinishb0a78fc2014-01-29 16:49:12 +000017from tempest import config
Ken'ichi Ohmichi757833a2017-03-10 10:30:30 -080018from tempest.lib.common.utils import data_utils
Ken'ichi Ohmichi6c92edf2017-01-27 17:32:10 -080019from tempest.lib import decorators
Andrea Frittoli (andreaf)db9672e2016-02-23 14:07:24 -050020from tempest.lib import exceptions as lib_exc
Matthew Treinish5c660ab2014-05-18 21:14:36 -040021from tempest import test
rajalakshmi-ganesanddd9e0e2012-03-21 00:49:22 +053022
Matthew Treinishb0a78fc2014-01-29 16:49:12 +000023CONF = config.CONF
24
rajalakshmi-ganesanddd9e0e2012-03-21 00:49:22 +053025
ivan-zhuf2b00502013-10-18 10:06:52 +080026class VolumesNegativeTest(base.BaseV2ComputeTest):
Attila Fazekas19044d52013-02-16 07:35:06 +010027
28 @classmethod
Emily Hugenbruch8284a342014-12-11 22:04:55 +000029 def skip_checks(cls):
30 super(VolumesNegativeTest, cls).skip_checks()
Matthew Treinishb0a78fc2014-01-29 16:49:12 +000031 if not CONF.service_available.cinder:
Matthew Treinish4c412922013-07-16 15:27:42 -040032 skip_msg = ("%s skipped as Cinder is not available" % cls.__name__)
33 raise cls.skipException(skip_msg)
rajalakshmi-ganesanddd9e0e2012-03-21 00:49:22 +053034
Emily Hugenbruch8284a342014-12-11 22:04:55 +000035 @classmethod
36 def setup_clients(cls):
37 super(VolumesNegativeTest, cls).setup_clients()
38 cls.client = cls.volumes_extensions_client
39
Sean Dague639f2fa2015-04-27 09:00:33 -040040 @test.attr(type=['negative'])
Ken'ichi Ohmichi6c92edf2017-01-27 17:32:10 -080041 @decorators.idempotent_id('c03ea686-905b-41a2-8748-9635154b7c57')
nayna-patel179077c2014-01-15 12:27:16 +000042 def test_volume_get_nonexistent_volume_id(self):
43 # Negative: Should not be able to get details of nonexistent volume
44 # Creating a nonexistent volume id
45 # Trying to GET a non existent volume
Ken'ichi Ohmichi5f448a52015-07-01 06:26:30 +000046 self.assertRaises(lib_exc.NotFound, self.client.show_volume,
Ken'ichi Ohmichid079c892016-04-19 11:23:36 -070047 data_utils.rand_uuid())
rajalakshmi-ganesanddd9e0e2012-03-21 00:49:22 +053048
Sean Dague639f2fa2015-04-27 09:00:33 -040049 @test.attr(type=['negative'])
Ken'ichi Ohmichi6c92edf2017-01-27 17:32:10 -080050 @decorators.idempotent_id('54a34226-d910-4b00-9ef8-8683e6c55846')
nayna-patel179077c2014-01-15 12:27:16 +000051 def test_volume_delete_nonexistent_volume_id(self):
52 # Negative: Should not be able to delete nonexistent Volume
53 # Creating nonexistent volume id
54 # Trying to DELETE a non existent volume
Masayuki Igawabfa07602015-01-20 18:47:17 +090055 self.assertRaises(lib_exc.NotFound, self.client.delete_volume,
Ken'ichi Ohmichid079c892016-04-19 11:23:36 -070056 data_utils.rand_uuid())
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053057
Sean Dague639f2fa2015-04-27 09:00:33 -040058 @test.attr(type=['negative'])
Ken'ichi Ohmichi6c92edf2017-01-27 17:32:10 -080059 @decorators.idempotent_id('5125ae14-152b-40a7-b3c5-eae15e9022ef')
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053060 def test_create_volume_with_invalid_size(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050061 # Negative: Should not be able to create volume with invalid size
62 # in request
zhuflc6ce5392016-08-17 14:34:37 +080063 v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053064 metadata = {'Type': 'work'}
Masayuki Igawa4b29e472015-02-16 10:41:54 +090065 self.assertRaises(lib_exc.BadRequest, self.client.create_volume,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +103066 size='#$%', display_name=v_name, metadata=metadata)
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053067
Sean Dague639f2fa2015-04-27 09:00:33 -040068 @test.attr(type=['negative'])
Ken'ichi Ohmichi6c92edf2017-01-27 17:32:10 -080069 @decorators.idempotent_id('131cb3a1-75cc-4d40-b4c3-1317f64719b0')
zhufle2fb43e2016-11-24 10:52:16 +080070 def test_create_volume_without_passing_size(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050071 # Negative: Should not be able to create volume without passing size
72 # in request
zhuflc6ce5392016-08-17 14:34:37 +080073 v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053074 metadata = {'Type': 'work'}
Masayuki Igawa4b29e472015-02-16 10:41:54 +090075 self.assertRaises(lib_exc.BadRequest, self.client.create_volume,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +103076 size='', display_name=v_name, metadata=metadata)
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053077
Sean Dague639f2fa2015-04-27 09:00:33 -040078 @test.attr(type=['negative'])
Ken'ichi Ohmichi6c92edf2017-01-27 17:32:10 -080079 @decorators.idempotent_id('8cce995e-0a83-479a-b94d-e1e40b8a09d1')
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053080 def test_create_volume_with_size_zero(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050081 # Negative: Should not be able to create volume with size zero
zhuflc6ce5392016-08-17 14:34:37 +080082 v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053083 metadata = {'Type': 'work'}
Masayuki Igawa4b29e472015-02-16 10:41:54 +090084 self.assertRaises(lib_exc.BadRequest, self.client.create_volume,
Chris Yeoh8b4eaa52013-02-06 18:03:10 +103085 size='0', display_name=v_name, metadata=metadata)
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053086
Sean Dague639f2fa2015-04-27 09:00:33 -040087 @test.attr(type=['negative'])
Ken'ichi Ohmichi6c92edf2017-01-27 17:32:10 -080088 @decorators.idempotent_id('62bab09a-4c03-4617-8cca-8572bc94af9b')
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053089 def test_get_volume_without_passing_volume_id(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050090 # Negative: Should not be able to get volume when empty ID is passed
Ken'ichi Ohmichi5f448a52015-07-01 06:26:30 +000091 self.assertRaises(lib_exc.NotFound, self.client.show_volume, '')
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053092
Sean Dague639f2fa2015-04-27 09:00:33 -040093 @test.attr(type=['negative'])
Ken'ichi Ohmichi6c92edf2017-01-27 17:32:10 -080094 @decorators.idempotent_id('62972737-124b-4513-b6cf-2f019f178494')
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +053095 def test_delete_invalid_volume_id(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050096 # Negative: Should not be able to delete volume when invalid ID is
97 # passed
Masayuki Igawabfa07602015-01-20 18:47:17 +090098 self.assertRaises(lib_exc.NotFound,
ghanshyam9e294c42017-01-12 06:52:41 +000099 self.client.delete_volume,
100 data_utils.rand_name('invalid'))
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +0530101
Sean Dague639f2fa2015-04-27 09:00:33 -0400102 @test.attr(type=['negative'])
Ken'ichi Ohmichi6c92edf2017-01-27 17:32:10 -0800103 @decorators.idempotent_id('0d1417c5-4ae8-4c2c-adc5-5f0b864253e5')
rajalakshmi-ganesan5894d512012-05-31 19:00:36 +0530104 def test_delete_volume_without_passing_volume_id(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500105 # Negative: Should not be able to delete volume when empty ID is passed
Masayuki Igawabfa07602015-01-20 18:47:17 +0900106 self.assertRaises(lib_exc.NotFound, self.client.delete_volume, '')