1# 2# Licensed under the Apache License, Version 2.0 (the "License"); you may 3# not use this file except in compliance with the License. You may obtain 4# a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 10# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 11# License for the specific language governing permissions and limitations 12# under the License. 13 14from novaclient import api_versions 15from novaclient.tests.unit.fixture_data import client 16from novaclient.tests.unit.fixture_data import keypairs as data 17from novaclient.tests.unit import utils 18from novaclient.tests.unit.v2 import fakes 19from novaclient.v2 import keypairs 20 21 22class KeypairsTest(utils.FixturedTestCase): 23 24 client_fixture_class = client.V1 25 data_fixture_class = data.V1 26 27 def setUp(self): 28 super(KeypairsTest, self).setUp() 29 self.keypair_type = self._get_keypair_type() 30 self.keypair_prefix = self._get_keypair_prefix() 31 32 def _get_keypair_type(self): 33 return keypairs.Keypair 34 35 def _get_keypair_prefix(self): 36 return keypairs.KeypairManager.keypair_prefix 37 38 def test_get_keypair(self): 39 kp = self.cs.keypairs.get('test') 40 self.assert_request_id(kp, fakes.FAKE_REQUEST_ID_LIST) 41 self.assert_called('GET', '/%s/test' % self.keypair_prefix) 42 self.assertIsInstance(kp, keypairs.Keypair) 43 self.assertEqual('test', kp.name) 44 45 def test_list_keypairs(self): 46 kps = self.cs.keypairs.list() 47 self.assert_request_id(kps, fakes.FAKE_REQUEST_ID_LIST) 48 self.assert_called('GET', '/%s' % self.keypair_prefix) 49 for kp in kps: 50 self.assertIsInstance(kp, keypairs.Keypair) 51 52 def test_delete_keypair(self): 53 kp = self.cs.keypairs.list()[0] 54 ret = kp.delete() 55 self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) 56 self.assert_called('DELETE', '/%s/test' % self.keypair_prefix) 57 ret = self.cs.keypairs.delete('test') 58 self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) 59 self.assert_called('DELETE', '/%s/test' % self.keypair_prefix) 60 ret = self.cs.keypairs.delete(kp) 61 self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) 62 self.assert_called('DELETE', '/%s/test' % self.keypair_prefix) 63 64 65class KeypairsV2TestCase(KeypairsTest): 66 def setUp(self): 67 super(KeypairsV2TestCase, self).setUp() 68 self.cs.api_version = api_versions.APIVersion("2.0") 69 70 def test_create_keypair(self): 71 name = "foo" 72 kp = self.cs.keypairs.create(name) 73 self.assert_request_id(kp, fakes.FAKE_REQUEST_ID_LIST) 74 self.assert_called('POST', '/%s' % self.keypair_prefix, 75 body={'keypair': {'name': name}}) 76 self.assertIsInstance(kp, keypairs.Keypair) 77 78 def test_import_keypair(self): 79 name = "foo" 80 pub_key = "fake-public-key" 81 kp = self.cs.keypairs.create(name, pub_key) 82 self.assert_request_id(kp, fakes.FAKE_REQUEST_ID_LIST) 83 self.assert_called('POST', '/%s' % self.keypair_prefix, 84 body={'keypair': {'name': name, 85 'public_key': pub_key}}) 86 self.assertIsInstance(kp, keypairs.Keypair) 87 88 89class KeypairsV22TestCase(KeypairsTest): 90 def setUp(self): 91 super(KeypairsV22TestCase, self).setUp() 92 self.cs.api_version = api_versions.APIVersion("2.2") 93 94 def test_create_keypair(self): 95 name = "foo" 96 key_type = "some_type" 97 kp = self.cs.keypairs.create(name, key_type=key_type) 98 self.assert_request_id(kp, fakes.FAKE_REQUEST_ID_LIST) 99 self.assert_called('POST', '/%s' % self.keypair_prefix, 100 body={'keypair': {'name': name, 101 'type': key_type}}) 102 self.assertIsInstance(kp, keypairs.Keypair) 103 104 def test_import_keypair(self): 105 name = "foo" 106 pub_key = "fake-public-key" 107 kp = self.cs.keypairs.create(name, pub_key) 108 self.assert_request_id(kp, fakes.FAKE_REQUEST_ID_LIST) 109 self.assert_called('POST', '/%s' % self.keypair_prefix, 110 body={'keypair': {'name': name, 111 'public_key': pub_key, 112 'type': 'ssh'}}) 113 self.assertIsInstance(kp, keypairs.Keypair) 114 115 116class KeypairsV35TestCase(KeypairsTest): 117 def setUp(self): 118 super(KeypairsV35TestCase, self).setUp() 119 self.cs.api_version = api_versions.APIVersion("2.35") 120 121 def test_list_keypairs(self): 122 kps = self.cs.keypairs.list(user_id='test_user', marker='test_kp', 123 limit=3) 124 self.assert_request_id(kps, fakes.FAKE_REQUEST_ID_LIST) 125 self.assert_called('GET', 126 '/%s?limit=3&marker=test_kp&user_id=test_user' 127 % self.keypair_prefix) 128 for kp in kps: 129 self.assertIsInstance(kp, keypairs.Keypair) 130