@@ -42,47 +42,78 @@ def setUp(self):
4242
4343class TestGroupAddUser (TestGroup ):
4444
45- group = identity_fakes .FakeGroup .create_one_group ()
46- user = identity_fakes .FakeUser .create_one_user ( )
45+ _group = identity_fakes .FakeGroup .create_one_group ()
46+ users = identity_fakes .FakeUser .create_users ( count = 2 )
4747
4848 def setUp (self ):
4949 super (TestGroupAddUser , self ).setUp ()
5050
51- self .groups_mock .get .return_value = self .group
52- self .users_mock .get .return_value = self .user
51+ self .groups_mock .get .return_value = self ._group
52+ self .users_mock .get = (
53+ identity_fakes .FakeUser .get_users (self .users ))
5354 self .users_mock .add_to_group .return_value = None
5455
5556 self .cmd = group .AddUserToGroup (self .app , None )
5657
5758 def test_group_add_user (self ):
5859 arglist = [
59- self .group .name ,
60- self .user .name ,
60+ self ._group .name ,
61+ self .users [ 0 ] .name ,
6162 ]
6263 verifylist = [
63- ('group' , self .group .name ),
64- ('user' , self .user .name ),
64+ ('group' , self ._group .name ),
65+ ('user' , [ self .users [ 0 ] .name ] ),
6566 ]
6667 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
6768
6869 result = self .cmd .take_action (parsed_args )
6970 self .users_mock .add_to_group .assert_called_once_with (
70- self .user .id , self .group .id )
71+ self .users [ 0 ] .id , self ._group .id )
7172 self .assertIsNone (result )
7273
73- def test_group_add_user_with_error (self ):
74- self .users_mock .add_to_group .side_effect = exceptions .CommandError ()
74+ def test_group_add_multi_users (self ):
7575 arglist = [
76- self .group .name ,
77- self .user .name ,
76+ self ._group .name ,
77+ self .users [0 ].name ,
78+ self .users [1 ].name ,
7879 ]
7980 verifylist = [
80- ('group' , self .group .name ),
81- ('user' , self .user .name ),
81+ ('group' , self ._group .name ),
82+ ('user' , [ self .users [ 0 ] .name , self . users [ 1 ]. name ] ),
8283 ]
8384 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
84- self .assertRaises (exceptions .CommandError ,
85- self .cmd .take_action , parsed_args )
85+
86+ result = self .cmd .take_action (parsed_args )
87+ calls = [call (self .users [0 ].id , self ._group .id ),
88+ call (self .users [1 ].id , self ._group .id )]
89+ self .users_mock .add_to_group .assert_has_calls (calls )
90+ self .assertIsNone (result )
91+
92+ @mock .patch .object (group .LOG , 'error' )
93+ def test_group_add_user_with_error (self , mock_error ):
94+ self .users_mock .add_to_group .side_effect = [
95+ exceptions .CommandError (), None ]
96+ arglist = [
97+ self ._group .name ,
98+ self .users [0 ].name ,
99+ self .users [1 ].name ,
100+ ]
101+ verifylist = [
102+ ('group' , self ._group .name ),
103+ ('user' , [self .users [0 ].name , self .users [1 ].name ]),
104+ ]
105+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
106+ try :
107+ self .cmd .take_action (parsed_args )
108+ self .fail ('CommandError should be raised.' )
109+ except exceptions .CommandError as e :
110+ msg = "1 of 2 users not added to group %s." % self ._group .name
111+ self .assertEqual (msg , str (e ))
112+ msg = ("%(user)s not added to group %(group)s: " ) % {
113+ 'user' : self .users [0 ].name ,
114+ 'group' : self ._group .name ,
115+ }
116+ mock_error .assert_called_once_with (msg )
86117
87118
88119class TestGroupCheckUser (TestGroup ):
@@ -463,48 +494,78 @@ def test_group_list_long(self):
463494
464495class TestGroupRemoveUser (TestGroup ):
465496
466- group = identity_fakes .FakeGroup .create_one_group ()
467- user = identity_fakes .FakeUser .create_one_user ( )
497+ _group = identity_fakes .FakeGroup .create_one_group ()
498+ users = identity_fakes .FakeUser .create_users ( count = 2 )
468499
469500 def setUp (self ):
470501 super (TestGroupRemoveUser , self ).setUp ()
471502
472- self .groups_mock .get .return_value = self .group
473- self .users_mock .get .return_value = self .user
503+ self .groups_mock .get .return_value = self ._group
504+ self .users_mock .get = (
505+ identity_fakes .FakeUser .get_users (self .users ))
474506 self .users_mock .remove_from_group .return_value = None
475507
476508 self .cmd = group .RemoveUserFromGroup (self .app , None )
477509
478510 def test_group_remove_user (self ):
479511 arglist = [
480- self .group .id ,
481- self .user .id ,
512+ self ._group .id ,
513+ self .users [ 0 ] .id ,
482514 ]
483515 verifylist = [
484- ('group' , self .group .id ),
485- ('user' , self .user .id ),
516+ ('group' , self ._group .id ),
517+ ('user' , [ self .users [ 0 ] .id ] ),
486518 ]
487519 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
488520
489521 result = self .cmd .take_action (parsed_args )
490522 self .users_mock .remove_from_group .assert_called_once_with (
491- self .user .id , self .group .id )
523+ self .users [ 0 ] .id , self ._group .id )
492524 self .assertIsNone (result )
493525
494- def test_group_remove_user_with_error (self ):
495- self .users_mock .remove_from_group .side_effect = (
496- exceptions .CommandError ())
526+ def test_group_remove_multi_users (self ):
497527 arglist = [
498- self .group .id ,
499- self .user .id ,
528+ self ._group .name ,
529+ self .users [0 ].name ,
530+ self .users [1 ].name ,
500531 ]
501532 verifylist = [
502- ('group' , self .group . id ),
503- ('user' , self .user . id ),
533+ ('group' , self ._group . name ),
534+ ('user' , [ self .users [ 0 ]. name , self . users [ 1 ]. name ] ),
504535 ]
505536 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
506- self .assertRaises (exceptions .CommandError ,
507- self .cmd .take_action , parsed_args )
537+
538+ result = self .cmd .take_action (parsed_args )
539+ calls = [call (self .users [0 ].id , self ._group .id ),
540+ call (self .users [1 ].id , self ._group .id )]
541+ self .users_mock .remove_from_group .assert_has_calls (calls )
542+ self .assertIsNone (result )
543+
544+ @mock .patch .object (group .LOG , 'error' )
545+ def test_group_remove_user_with_error (self , mock_error ):
546+ self .users_mock .remove_from_group .side_effect = [
547+ exceptions .CommandError (), None ]
548+ arglist = [
549+ self ._group .id ,
550+ self .users [0 ].id ,
551+ self .users [1 ].id ,
552+ ]
553+ verifylist = [
554+ ('group' , self ._group .id ),
555+ ('user' , [self .users [0 ].id , self .users [1 ].id ]),
556+ ]
557+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
558+ try :
559+ self .cmd .take_action (parsed_args )
560+ self .fail ('CommandError should be raised.' )
561+ except exceptions .CommandError as e :
562+ msg = "1 of 2 users not removed from group %s." % self ._group .id
563+ self .assertEqual (msg , str (e ))
564+ msg = ("%(user)s not removed from group %(group)s: " ) % {
565+ 'user' : self .users [0 ].id ,
566+ 'group' : self ._group .id ,
567+ }
568+ mock_error .assert_called_once_with (msg )
508569
509570
510571class TestGroupSet (TestGroup ):
0 commit comments