blob: a91a9c261677993892ba3876da52f25ce51096b1 [file] [log] [blame]
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +05301# Copyright 2012 OpenStack Foundation
2# Copyright 2013 IBM Corp
3# All Rights Reserved.
4#
5# Licensed under the Apache License, Version 2.0 (the "License"); you may
6# not use this file except in compliance with the License. You may obtain
7# a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14# License for the specific language governing permissions and limitations
15# under the License.
16
17from tempest.api.compute import base
18from tempest.common.utils import data_utils
19from tempest import exceptions
ivan-zhu58d50772013-12-10 14:02:38 +080020from tempest import test
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053021
22
23class KeyPairsNegativeTestJSON(base.BaseV2ComputeTest):
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053024
25 @classmethod
26 def setUpClass(cls):
27 super(KeyPairsNegativeTestJSON, cls).setUpClass()
28 cls.client = cls.keypairs_client
29
ivan-zhu58d50772013-12-10 14:02:38 +080030 def _create_keypair(self, keypair_name, pub_key=None):
31 self.client.create_keypair(keypair_name, pub_key)
32 self.addCleanup(self.client.delete_keypair, keypair_name)
33
34 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053035 def test_keypair_create_with_invalid_pub_key(self):
36 # Keypair should not be created with a non RSA public key
37 k_name = data_utils.rand_name('keypair-')
38 pub_key = "ssh-rsa JUNK nova@ubuntu"
39 self.assertRaises(exceptions.BadRequest,
ivan-zhu58d50772013-12-10 14:02:38 +080040 self._create_keypair, k_name, pub_key)
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053041
ivan-zhu58d50772013-12-10 14:02:38 +080042 @test.attr(type=['negative', 'gate'])
nayna-patel179077c2014-01-15 12:27:16 +000043 def test_keypair_delete_nonexistent_key(self):
44 # Non-existent key deletion should throw a proper error
45 k_name = data_utils.rand_name("keypair-non-existent-")
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053046 self.assertRaises(exceptions.NotFound, self.client.delete_keypair,
47 k_name)
48
ivan-zhu58d50772013-12-10 14:02:38 +080049 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053050 def test_create_keypair_with_empty_public_key(self):
51 # Keypair should not be created with an empty public key
52 k_name = data_utils.rand_name("keypair-")
53 pub_key = ' '
ivan-zhu58d50772013-12-10 14:02:38 +080054 self.assertRaises(exceptions.BadRequest, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053055 k_name, pub_key)
56
ivan-zhu58d50772013-12-10 14:02:38 +080057 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053058 def test_create_keypair_when_public_key_bits_exceeds_maximum(self):
59 # Keypair should not be created when public key bits are too long
60 k_name = data_utils.rand_name("keypair-")
61 pub_key = 'ssh-rsa ' + 'A' * 2048 + ' openstack@ubuntu'
ivan-zhu58d50772013-12-10 14:02:38 +080062 self.assertRaises(exceptions.BadRequest, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053063 k_name, pub_key)
64
ivan-zhu58d50772013-12-10 14:02:38 +080065 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053066 def test_create_keypair_with_duplicate_name(self):
67 # Keypairs with duplicate names should not be created
68 k_name = data_utils.rand_name('keypair-')
69 resp, _ = self.client.create_keypair(k_name)
70 self.assertEqual(200, resp.status)
71 # Now try the same keyname to create another key
ivan-zhu58d50772013-12-10 14:02:38 +080072 self.assertRaises(exceptions.Conflict, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053073 k_name)
74 resp, _ = self.client.delete_keypair(k_name)
75 self.assertEqual(202, resp.status)
76
ivan-zhu58d50772013-12-10 14:02:38 +080077 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053078 def test_create_keypair_with_empty_name_string(self):
79 # Keypairs with name being an empty string should not be created
ivan-zhu58d50772013-12-10 14:02:38 +080080 self.assertRaises(exceptions.BadRequest, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053081 '')
82
ivan-zhu58d50772013-12-10 14:02:38 +080083 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053084 def test_create_keypair_with_long_keynames(self):
85 # Keypairs with name longer than 255 chars should not be created
86 k_name = 'keypair-'.ljust(260, '0')
ivan-zhu58d50772013-12-10 14:02:38 +080087 self.assertRaises(exceptions.BadRequest, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053088 k_name)
89
ivan-zhu58d50772013-12-10 14:02:38 +080090 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053091 def test_create_keypair_invalid_name(self):
92 # Keypairs with name being an invalid name should not be created
93 k_name = 'key_/.\@:'
ivan-zhu58d50772013-12-10 14:02:38 +080094 self.assertRaises(exceptions.BadRequest, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053095 k_name)
96
97
98class KeyPairsNegativeTestXML(KeyPairsNegativeTestJSON):
99 _interface = 'xml'