blob: 8eef8114f355bb4ea122235f13974a356d4e7683 [file] [log] [blame]
ivan-zhu595858e2013-11-20 15:40:33 +08001# Copyright 2012 OpenStack Foundation
2# 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
16from tempest.api.compute import base
17from tempest.common.utils import data_utils
18from tempest import test
19
20
Ken'ichi Ohmichi7f508ed2014-01-30 22:35:20 +090021class KeyPairsV3Test(base.BaseV3ComputeTest):
ivan-zhu595858e2013-11-20 15:40:33 +080022 _interface = 'json'
23
24 @classmethod
25 def setUpClass(cls):
Ken'ichi Ohmichi7f508ed2014-01-30 22:35:20 +090026 super(KeyPairsV3Test, cls).setUpClass()
ivan-zhu595858e2013-11-20 15:40:33 +080027 cls.client = cls.keypairs_client
28
29 def _delete_keypair(self, keypair_name):
30 resp, _ = self.client.delete_keypair(keypair_name)
ivan-zhu7e7e6a32013-11-20 16:07:29 +080031 self.assertEqual(204, resp.status)
ivan-zhu595858e2013-11-20 15:40:33 +080032
33 def _create_keypair(self, keypair_name, pub_key=None):
34 resp, body = self.client.create_keypair(keypair_name, pub_key)
35 self.addCleanup(self._delete_keypair, keypair_name)
36 return resp, body
37
38 @test.attr(type='gate')
39 def test_keypairs_create_list_delete(self):
40 # Keypairs created should be available in the response list
41 # Create 3 keypairs
42 key_list = list()
43 for i in range(3):
44 k_name = data_utils.rand_name('keypair-')
45 resp, keypair = self._create_keypair(k_name)
46 # Need to pop these keys so that our compare doesn't fail later,
47 # as the keypair dicts from list API doesn't have them.
48 keypair.pop('private_key')
49 keypair.pop('user_id')
ivan-zhu7e7e6a32013-11-20 16:07:29 +080050 self.assertEqual(201, resp.status)
ivan-zhu595858e2013-11-20 15:40:33 +080051 key_list.append(keypair)
52 # Fetch all keypairs and verify the list
53 # has all created keypairs
54 resp, fetched_list = self.client.list_keypairs()
55 self.assertEqual(200, resp.status)
56 # We need to remove the extra 'keypair' element in the
57 # returned dict. See comment in keypairs_client.list_keypairs()
58 new_list = list()
59 for keypair in fetched_list:
60 new_list.append(keypair['keypair'])
61 fetched_list = new_list
62 # Now check if all the created keypairs are in the fetched list
63 missing_kps = [kp for kp in key_list if kp not in fetched_list]
64 self.assertFalse(missing_kps,
65 "Failed to find keypairs %s in fetched list"
66 % ', '.join(m_key['name'] for m_key in missing_kps))
67
68 @test.attr(type='gate')
69 def test_keypair_create_delete(self):
70 # Keypair should be created, verified and deleted
71 k_name = data_utils.rand_name('keypair-')
72 resp, keypair = self._create_keypair(k_name)
ivan-zhu7e7e6a32013-11-20 16:07:29 +080073 self.assertEqual(201, resp.status)
ivan-zhu595858e2013-11-20 15:40:33 +080074 private_key = keypair['private_key']
75 key_name = keypair['name']
76 self.assertEqual(key_name, k_name,
77 "The created keypair name is not equal "
78 "to the requested name")
79 self.assertTrue(private_key is not None,
80 "Field private_key is empty or not found.")
81
82 @test.attr(type='gate')
83 def test_get_keypair_detail(self):
84 # Keypair should be created, Got details by name and deleted
85 k_name = data_utils.rand_name('keypair-')
86 resp, keypair = self._create_keypair(k_name)
87 resp, keypair_detail = self.client.get_keypair(k_name)
88 self.assertEqual(200, resp.status)
89 self.assertIn('name', keypair_detail)
90 self.assertIn('public_key', keypair_detail)
91 self.assertEqual(keypair_detail['name'], k_name,
92 "The created keypair name is not equal "
93 "to requested name")
94 public_key = keypair_detail['public_key']
95 self.assertTrue(public_key is not None,
96 "Field public_key is empty or not found.")
97
98 @test.attr(type='gate')
99 def test_keypair_create_with_pub_key(self):
100 # Keypair should be created with a given public key
101 k_name = data_utils.rand_name('keypair-')
102 pub_key = ("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCs"
103 "Ne3/1ILNCqFyfYWDeTKLD6jEXC2OQHLmietMWW+/vd"
104 "aZq7KZEwO0jhglaFjU1mpqq4Gz5RX156sCTNM9vRbw"
105 "KAxfsdF9laBYVsex3m3Wmui3uYrKyumsoJn2g9GNnG1P"
106 "I1mrVjZ61i0GY3khna+wzlTpCCmy5HNlrmbj3XLqBUpip"
107 "TOXmsnr4sChzC53KCd8LXuwc1i/CZPvF+3XipvAgFSE53pCt"
108 "LOeB1kYMOBaiUPLQTWXR3JpckqFIQwhIH0zoHlJvZE8hh90"
109 "XcPojYN56tI0OlrGqojbediJYD0rUsJu4weZpbn8vilb3JuDY+jws"
110 "snSA8wzBx3A/8y9Pp1B nova@ubuntu")
111 resp, keypair = self._create_keypair(k_name, pub_key)
ivan-zhu7e7e6a32013-11-20 16:07:29 +0800112 self.assertEqual(201, resp.status)
ivan-zhu595858e2013-11-20 15:40:33 +0800113 self.assertFalse('private_key' in keypair,
114 "Field private_key is not empty!")
115 key_name = keypair['name']
116 self.assertEqual(key_name, k_name,
117 "The created keypair name is not equal "
118 "to the requested name!")