blob: 621487cacc8b49bcc00384cf4bf80758a4f9d8b1 [file] [log] [blame]
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +05301# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 OpenStack Foundation
4# Copyright 2013 IBM Corp
5# All Rights Reserved.
6#
7# Licensed under the Apache License, Version 2.0 (the "License"); you may
8# not use this file except in compliance with the License. You may obtain
9# a copy of the License at
10#
11# http://www.apache.org/licenses/LICENSE-2.0
12#
13# Unless required by applicable law or agreed to in writing, software
14# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16# License for the specific language governing permissions and limitations
17# under the License.
18
19from tempest.api.compute import base
20from tempest.common.utils import data_utils
21from tempest import exceptions
ivan-zhu58d50772013-12-10 14:02:38 +080022from tempest import test
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053023
24
25class KeyPairsNegativeTestJSON(base.BaseV2ComputeTest):
26 _interface = 'json'
27
28 @classmethod
29 def setUpClass(cls):
30 super(KeyPairsNegativeTestJSON, cls).setUpClass()
31 cls.client = cls.keypairs_client
32
ivan-zhu58d50772013-12-10 14:02:38 +080033 def _create_keypair(self, keypair_name, pub_key=None):
34 self.client.create_keypair(keypair_name, pub_key)
35 self.addCleanup(self.client.delete_keypair, keypair_name)
36
37 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053038 def test_keypair_create_with_invalid_pub_key(self):
39 # Keypair should not be created with a non RSA public key
40 k_name = data_utils.rand_name('keypair-')
41 pub_key = "ssh-rsa JUNK nova@ubuntu"
42 self.assertRaises(exceptions.BadRequest,
ivan-zhu58d50772013-12-10 14:02:38 +080043 self._create_keypair, k_name, pub_key)
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053044
ivan-zhu58d50772013-12-10 14:02:38 +080045 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053046 def test_keypair_delete_nonexistant_key(self):
47 # Non-existant key deletion should throw a proper error
48 k_name = data_utils.rand_name("keypair-non-existant-")
49 self.assertRaises(exceptions.NotFound, self.client.delete_keypair,
50 k_name)
51
ivan-zhu58d50772013-12-10 14:02:38 +080052 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053053 def test_create_keypair_with_empty_public_key(self):
54 # Keypair should not be created with an empty public key
55 k_name = data_utils.rand_name("keypair-")
56 pub_key = ' '
ivan-zhu58d50772013-12-10 14:02:38 +080057 self.assertRaises(exceptions.BadRequest, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053058 k_name, pub_key)
59
ivan-zhu58d50772013-12-10 14:02:38 +080060 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053061 def test_create_keypair_when_public_key_bits_exceeds_maximum(self):
62 # Keypair should not be created when public key bits are too long
63 k_name = data_utils.rand_name("keypair-")
64 pub_key = 'ssh-rsa ' + 'A' * 2048 + ' openstack@ubuntu'
ivan-zhu58d50772013-12-10 14:02:38 +080065 self.assertRaises(exceptions.BadRequest, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053066 k_name, pub_key)
67
ivan-zhu58d50772013-12-10 14:02:38 +080068 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053069 def test_create_keypair_with_duplicate_name(self):
70 # Keypairs with duplicate names should not be created
71 k_name = data_utils.rand_name('keypair-')
72 resp, _ = self.client.create_keypair(k_name)
73 self.assertEqual(200, resp.status)
74 # Now try the same keyname to create another key
ivan-zhu58d50772013-12-10 14:02:38 +080075 self.assertRaises(exceptions.Conflict, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053076 k_name)
77 resp, _ = self.client.delete_keypair(k_name)
78 self.assertEqual(202, resp.status)
79
ivan-zhu58d50772013-12-10 14:02:38 +080080 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053081 def test_create_keypair_with_empty_name_string(self):
82 # Keypairs with name being an empty string should not be created
ivan-zhu58d50772013-12-10 14:02:38 +080083 self.assertRaises(exceptions.BadRequest, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053084 '')
85
ivan-zhu58d50772013-12-10 14:02:38 +080086 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053087 def test_create_keypair_with_long_keynames(self):
88 # Keypairs with name longer than 255 chars should not be created
89 k_name = 'keypair-'.ljust(260, '0')
ivan-zhu58d50772013-12-10 14:02:38 +080090 self.assertRaises(exceptions.BadRequest, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053091 k_name)
92
ivan-zhu58d50772013-12-10 14:02:38 +080093 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053094 def test_create_keypair_invalid_name(self):
95 # Keypairs with name being an invalid name should not be created
96 k_name = 'key_/.\@:'
ivan-zhu58d50772013-12-10 14:02:38 +080097 self.assertRaises(exceptions.BadRequest, self._create_keypair,
Hoisaleshwara Madan V S6a5dfb22013-11-28 14:31:40 +053098 k_name)
99
100
101class KeyPairsNegativeTestXML(KeyPairsNegativeTestJSON):
102 _interface = 'xml'