python-novaclient/novaclient/tests/functional/v2/test_keypairs.py

121 lines
5.0 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from novaclient.tests.functional import base
from novaclient.tests.functional.v2 import fake_crypto
from novaclient.tests.functional.v2.legacy import test_keypairs
class TestKeypairsNovaClientV22(test_keypairs.TestKeypairsNovaClient):
"""Keypairs functional tests for v2.2 nova-api microversion."""
COMPUTE_API_VERSION = "2.2"
def test_create_keypair(self):
keypair = super(TestKeypairsNovaClientV22, self).test_create_keypair()
self.assertIn('ssh', keypair)
def test_create_keypair_x509(self):
key_name = self._create_keypair(key_type='x509')
keypair = self._show_keypair(key_name)
self.assertIn(key_name, keypair)
self.assertIn('x509', keypair)
def test_import_keypair(self):
pub_key, fingerprint = fake_crypto.get_ssh_pub_key_and_fingerprint()
pub_key_file = self._create_public_key_file(pub_key)
keypair = self._test_import_keypair(fingerprint, pub_key=pub_key_file)
self.assertIn('ssh', keypair)
def test_import_keypair_x509(self):
certif, fingerprint = fake_crypto.get_x509_cert_and_fingerprint()
pub_key_file = self._create_public_key_file(certif)
keypair = self._test_import_keypair(fingerprint, key_type='x509',
pub_key=pub_key_file)
self.assertIn('x509', keypair)
class TestKeypairsNovaClientV210(base.TenantTestBase):
"""Keypairs functional tests for v2.10 nova-api microversion."""
COMPUTE_API_VERSION = "2.10"
def test_create_and_list_keypair(self):
name = self.name_generate()
self.nova("keypair-add %s --user %s" % (name, self.user_id))
self.addCleanup(self.another_nova, "keypair-delete %s" % name)
output = self.nova("keypair-list")
self.assertRaises(ValueError, self._get_value_from_the_table,
output, name)
output_1 = self.another_nova("keypair-list")
output_2 = self.nova("keypair-list --user %s" % self.user_id)
self.assertEqual(output_1, output_2)
# it should be table with one key-pair
self.assertEqual(name, self._get_column_value_from_single_row_table(
output_1, "Name"))
output_1 = self.another_nova("keypair-show %s " % name)
output_2 = self.nova("keypair-show --user %s %s" % (self.user_id,
name))
self.assertEqual(output_1, output_2)
self.assertEqual(self.user_id,
self._get_value_from_the_table(output_1, "user_id"))
def test_create_and_delete(self):
name = self.name_generate()
def cleanup():
# We should check keypair existence and remove it from correct user
# if keypair is presented
o = self.another_nova("keypair-list")
if name in o:
self.another_nova("keypair-delete %s" % name)
self.nova("keypair-add %s --user %s" % (name, self.user_id))
self.addCleanup(cleanup)
output = self.another_nova("keypair-list")
self.assertEqual(name, self._get_column_value_from_single_row_table(
output, "Name"))
self.nova("keypair-delete %s --user %s " % (name, self.user_id))
output = self.another_nova("keypair-list")
self.assertRaises(
ValueError,
self._get_column_value_from_single_row_table, output, "Name")
class TestKeypairsNovaClientV235(base.TenantTestBase):
"""Keypairs functional tests for v2.35 nova-api microversion."""
COMPUTE_API_VERSION = "2.35"
def test_create_and_list_keypair_with_marker_and_limit(self):
names = []
for i in range(3):
names.append(self.name_generate())
self.nova("keypair-add %s --user %s" % (names[i], self.user_id))
self.addCleanup(self.another_nova, "keypair-delete %s" % names[i])
# sort keypairs before pagination
names = sorted(names)
# list only one keypair after the first
output_1 = self.another_nova("keypair-list --limit 1 --marker %s" %
names[0])
output_2 = self.nova("keypair-list --limit 1 --marker %s --user %s" %
(names[0], self.user_id))
self.assertEqual(output_1, output_2)
# it should be table with only one second key-pair
self.assertEqual(
names[1], self._get_column_value_from_single_row_table(output_1,
"Name"))