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