@@ -38,6 +38,15 @@ def setUp(self):
3838 self .keypairs_mock = self .app .client_manager .compute .keypairs
3939 self .keypairs_mock .reset_mock ()
4040
41+ # Initialize the user mock
42+ self .users_mock = self .app .client_manager .identity .users
43+ self .users_mock .reset_mock ()
44+ self .users_mock .get .return_value = fakes .FakeResource (
45+ None ,
46+ copy .deepcopy (identity_fakes .USER ),
47+ loaded = True ,
48+ )
49+
4150
4251class TestKeypairCreate (TestKeypair ):
4352
@@ -226,6 +235,54 @@ def test_keypair_create_with_key_type_pre_v22(self):
226235 '--os-compute-api-version 2.2 or greater is required' ,
227236 str (ex ))
228237
238+ def test_key_pair_create_with_user (self ):
239+
240+ self .app .client_manager .compute .api_version = \
241+ api_versions .APIVersion ('2.10' )
242+
243+ arglist = [
244+ '--user' , identity_fakes .user_name ,
245+ self .keypair .name ,
246+ ]
247+ verifylist = [
248+ ('user' , identity_fakes .user_name ),
249+ ('name' , self .keypair .name ),
250+ ]
251+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
252+
253+ columns , data = self .cmd .take_action (parsed_args )
254+
255+ self .keypairs_mock .create .assert_called_with (
256+ name = self .keypair .name ,
257+ public_key = None ,
258+ user_id = identity_fakes .user_id ,
259+ )
260+
261+ self .assertEqual ({}, columns )
262+ self .assertEqual ({}, data )
263+
264+ def test_key_pair_create_with_user_pre_v210 (self ):
265+
266+ self .app .client_manager .compute .api_version = \
267+ api_versions .APIVersion ('2.9' )
268+
269+ arglist = [
270+ '--user' , identity_fakes .user_name ,
271+ self .keypair .name ,
272+ ]
273+ verifylist = [
274+ ('user' , identity_fakes .user_name ),
275+ ('name' , self .keypair .name ),
276+ ]
277+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
278+
279+ ex = self .assertRaises (
280+ exceptions .CommandError ,
281+ self .cmd .take_action ,
282+ parsed_args )
283+ self .assertIn (
284+ '--os-compute-api-version 2.10 or greater is required' , str (ex ))
285+
229286
230287class TestKeypairDelete (TestKeypair ):
231288
@@ -301,6 +358,51 @@ def test_delete_multiple_keypairs_with_exception(self):
301358 self .keypairs [0 ].name
302359 )
303360
361+ def test_keypair_delete_with_user (self ):
362+
363+ self .app .client_manager .compute .api_version = \
364+ api_versions .APIVersion ('2.10' )
365+
366+ arglist = [
367+ '--user' , identity_fakes .user_name ,
368+ self .keypairs [0 ].name
369+ ]
370+ verifylist = [
371+ ('user' , identity_fakes .user_name ),
372+ ('name' , [self .keypairs [0 ].name ]),
373+ ]
374+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
375+
376+ ret = self .cmd .take_action (parsed_args )
377+
378+ self .assertIsNone (ret )
379+ self .keypairs_mock .delete .assert_called_with (
380+ self .keypairs [0 ].name ,
381+ user_id = identity_fakes .user_id ,
382+ )
383+
384+ def test_keypair_delete_with_user_pre_v210 (self ):
385+
386+ self .app .client_manager .compute .api_version = \
387+ api_versions .APIVersion ('2.9' )
388+
389+ arglist = [
390+ '--user' , identity_fakes .user_name ,
391+ self .keypairs [0 ].name
392+ ]
393+ verifylist = [
394+ ('user' , identity_fakes .user_name ),
395+ ('name' , [self .keypairs [0 ].name ]),
396+ ]
397+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
398+
399+ ex = self .assertRaises (
400+ exceptions .CommandError ,
401+ self .cmd .take_action ,
402+ parsed_args )
403+ self .assertIn (
404+ '--os-compute-api-version 2.10 or greater is required' , str (ex ))
405+
304406
305407class TestKeypairList (TestKeypair ):
306408
@@ -310,14 +412,6 @@ class TestKeypairList(TestKeypair):
310412 def setUp (self ):
311413 super (TestKeypairList , self ).setUp ()
312414
313- self .users_mock = self .app .client_manager .identity .users
314- self .users_mock .reset_mock ()
315- self .users_mock .get .return_value = fakes .FakeResource (
316- None ,
317- copy .deepcopy (identity_fakes .USER ),
318- loaded = True ,
319- )
320-
321415 self .keypairs_mock .list .return_value = self .keypairs
322416
323417 # Get the command object to test
@@ -477,11 +571,14 @@ def test_keypair_show(self):
477571 verifylist = [
478572 ('name' , self .keypair .name )
479573 ]
480-
481574 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
482575
483576 columns , data = self .cmd .take_action (parsed_args )
484577
578+ self .keypairs_mock .get .assert_called_with (
579+ self .keypair .name ,
580+ )
581+
485582 self .assertEqual (self .columns , columns )
486583 self .assertEqual (self .data , data )
487584
@@ -502,3 +599,59 @@ def test_keypair_show_public(self):
502599
503600 self .assertEqual ({}, columns )
504601 self .assertEqual ({}, data )
602+
603+ def test_keypair_show_with_user (self ):
604+
605+ # overwrite the setup one because we want to omit private_key
606+ self .keypair = compute_fakes .FakeKeypair .create_one_keypair (
607+ no_pri = True )
608+ self .keypairs_mock .get .return_value = self .keypair
609+
610+ self .data = (
611+ self .keypair .fingerprint ,
612+ self .keypair .name ,
613+ self .keypair .type ,
614+ self .keypair .user_id
615+ )
616+
617+ self .app .client_manager .compute .api_version = \
618+ api_versions .APIVersion ('2.10' )
619+
620+ arglist = [
621+ '--user' , identity_fakes .user_name ,
622+ self .keypair .name ,
623+ ]
624+ verifylist = [
625+ ('user' , identity_fakes .user_name ),
626+ ('name' , self .keypair .name )
627+ ]
628+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
629+
630+ columns , data = self .cmd .take_action (parsed_args )
631+
632+ self .users_mock .get .assert_called_with (identity_fakes .user_name )
633+ self .keypairs_mock .get .assert_called_with (
634+ self .keypair .name ,
635+ )
636+
637+ self .assertEqual (self .columns , columns )
638+ self .assertEqual (self .data , data )
639+
640+ def test_keypair_show_with_user_pre_v210 (self ):
641+
642+ arglist = [
643+ '--user' , identity_fakes .user_name ,
644+ self .keypair .name ,
645+ ]
646+ verifylist = [
647+ ('user' , identity_fakes .user_name ),
648+ ('name' , self .keypair .name )
649+ ]
650+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
651+
652+ ex = self .assertRaises (
653+ exceptions .CommandError ,
654+ self .cmd .take_action ,
655+ parsed_args )
656+ self .assertIn (
657+ '--os-compute-api-version 2.10 or greater is required' , str (ex ))
0 commit comments