summaryrefslogtreecommitdiff
path: root/nova/tests/functional/api_sample_tests/test_keypairs.py
diff options
context:
space:
mode:
Diffstat (limited to 'nova/tests/functional/api_sample_tests/test_keypairs.py')
-rw-r--r--nova/tests/functional/api_sample_tests/test_keypairs.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/nova/tests/functional/api_sample_tests/test_keypairs.py b/nova/tests/functional/api_sample_tests/test_keypairs.py
index eab88f61e1..a121b98449 100644
--- a/nova/tests/functional/api_sample_tests/test_keypairs.py
+++ b/nova/tests/functional/api_sample_tests/test_keypairs.py
@@ -319,3 +319,66 @@ class KeyPairsV235SampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
% keypairs_user2[1])
subs = {'keypair_name': keypairs_user2[2]}
self._verify_response('keypairs-list-user2-resp', subs, response, 200)
+
+
+class KeyPairsV292SampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
+ ADMIN_API = True
+ sample_dir = 'os-keypairs'
+ microversion = '2.92'
+ expected_post_status_code = 201
+ scenarios = [('v2_92', {'api_major_version': 'v2.1'})]
+
+ def setUp(self):
+ super(KeyPairsV292SampleJsonTest, self).setUp()
+ self.api.microversion = self.microversion
+
+ # NOTE(sbauza): This method is stupidly needed for _verify_response().
+ # See the TODO(sdague) above.
+ def generalize_subs(self, subs, vanilla_regexes):
+ subs['keypair_name'] = '[0-9a-zA-Z-_.@ ]+'
+ return subs
+
+ def test_keypairs_post_no_longer_supported(self):
+ subs = {
+ 'keypair_name': 'foo',
+ 'keypair_type': keypair_obj.KEYPAIR_TYPE_SSH,
+ 'user_id': 'fake'
+ }
+ response = self._do_post('os-keypairs', 'keypairs-post-req', subs)
+ self.assertEqual(400, response.status_code)
+
+ def test_keypairs_import_key_invalid_name(self):
+ public_key = fake_crypto.get_ssh_public_key()
+ subs = {
+ 'keypair_name': '!nvalid=name|',
+ 'keypair_type': keypair_obj.KEYPAIR_TYPE_SSH,
+ 'user_id': 'fake',
+ 'public_key': public_key,
+ }
+ response = self._do_post('os-keypairs', 'keypairs-import-post-req',
+ subs)
+ self.assertEqual(400, response.status_code)
+
+ def _test_keypairs_import_key_post(self, name=None):
+ if not name:
+ name = 'keypair-' + uuids.fake
+ public_key = fake_crypto.get_ssh_public_key()
+ params = {
+ 'keypair_name': name,
+ 'keypair_type': keypair_obj.KEYPAIR_TYPE_SSH,
+ 'user_id': 'fake',
+ 'public_key': public_key,
+ }
+ response = self._do_post('os-keypairs', 'keypairs-import-post-req',
+ params)
+ # NOTE(sbauza): We do some crazy regexp change in _verify_response() so
+ # we only need to pass the keypair name.
+ subs = {'keypair_name': name}
+ self._verify_response('keypairs-import-post-resp', subs, response,
+ self.expected_post_status_code)
+
+ def test_keypairs_import_key_post(self):
+ self._test_keypairs_import_key_post()
+
+ def test_keypairs_import_key_special_characters(self):
+ self._test_keypairs_import_key_post(name='my-key@ my.host')