@@ -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
@@ -554,11 +656,14 @@ def test_keypair_show(self):
554656 verifylist = [
555657 ('name' , self .keypair .name )
556658 ]
557-
558659 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
559660
560661 columns , data = self .cmd .take_action (parsed_args )
561662
663+ self .keypairs_mock .get .assert_called_with (
664+ self .keypair .name ,
665+ )
666+
562667 self .assertEqual (self .columns , columns )
563668 self .assertEqual (self .data , data )
564669
@@ -579,3 +684,59 @@ def test_keypair_show_public(self):
579684
580685 self .assertEqual ({}, columns )
581686 self .assertEqual ({}, data )
687+
688+ def test_keypair_show_with_user (self ):
689+
690+ # overwrite the setup one because we want to omit private_key
691+ self .keypair = compute_fakes .FakeKeypair .create_one_keypair (
692+ no_pri = True )
693+ self .keypairs_mock .get .return_value = self .keypair
694+
695+ self .data = (
696+ self .keypair .fingerprint ,
697+ self .keypair .name ,
698+ self .keypair .type ,
699+ self .keypair .user_id
700+ )
701+
702+ self .app .client_manager .compute .api_version = \
703+ api_versions .APIVersion ('2.10' )
704+
705+ arglist = [
706+ '--user' , identity_fakes .user_name ,
707+ self .keypair .name ,
708+ ]
709+ verifylist = [
710+ ('user' , identity_fakes .user_name ),
711+ ('name' , self .keypair .name )
712+ ]
713+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
714+
715+ columns , data = self .cmd .take_action (parsed_args )
716+
717+ self .users_mock .get .assert_called_with (identity_fakes .user_name )
718+ self .keypairs_mock .get .assert_called_with (
719+ self .keypair .name ,
720+ )
721+
722+ self .assertEqual (self .columns , columns )
723+ self .assertEqual (self .data , data )
724+
725+ def test_keypair_show_with_user_pre_v210 (self ):
726+
727+ arglist = [
728+ '--user' , identity_fakes .user_name ,
729+ self .keypair .name ,
730+ ]
731+ verifylist = [
732+ ('user' , identity_fakes .user_name ),
733+ ('name' , self .keypair .name )
734+ ]
735+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
736+
737+ ex = self .assertRaises (
738+ exceptions .CommandError ,
739+ self .cmd .take_action ,
740+ parsed_args )
741+ self .assertIn (
742+ '--os-compute-api-version 2.10 or greater is required' , str (ex ))
0 commit comments