3232 }
3333 ]
3434}
35+ TEST_EMPTY_USERS_RESPONSE = {"users" : []}
36+ TEST_USERNAME = TEST_USERS_RESPONSE ["users" ][0 ]["username" ]
37+ TEST_USER_ID = TEST_USERS_RESPONSE ["users" ][0 ]["userId" ]
38+ TEST_ROLE_NAME = TEST_ROLE_RETURN_DATA ["data" ][0 ]["roleName" ]
3539
3640
3741def _create_py42_response (mocker , text ):
@@ -56,6 +60,16 @@ def get_all_users_success(cli_state):
5660 cli_state .sdk .users .get_all .return_value = get_all_users_generator ()
5761
5862
63+ @pytest .fixture
64+ def get_user_id_success (cli_state ):
65+ cli_state .sdk .users .get_by_username .return_value = TEST_USERS_RESPONSE
66+
67+
68+ @pytest .fixture
69+ def get_user_id_failure (cli_state ):
70+ cli_state .sdk .users .get_by_username .return_value = TEST_EMPTY_USERS_RESPONSE
71+
72+
5973@pytest .fixture
6074def get_available_roles_success (cli_state , get_available_roles_response ):
6175 cli_state .sdk .users .get_available_roles .return_value = get_available_roles_response
@@ -153,3 +167,99 @@ def test_list_users_when_given_excluding_active_and_inactive_uses_active_equals_
153167 cli_state .sdk .users .get_all .assert_called_once_with (
154168 active = None , org_uid = None , role_id = None
155169 )
170+
171+
172+ def test_add_user_role_adds (
173+ runner , cli_state , get_user_id_success , get_available_roles_success
174+ ):
175+ command = [
176+ "users" ,
177+ "add-role" ,
178+ "--username" ,
179+ "test.username@example.com" ,
180+ "--role-name" ,
181+ "Customer Cloud Admin" ,
182+ ]
183+ runner .invoke (cli , command , obj = cli_state )
184+ cli_state .sdk .users .add_role .assert_called_once_with (TEST_USER_ID , TEST_ROLE_NAME )
185+
186+
187+ def test_add_user_role_raises_error_when_role_does_not_exist (
188+ runner , cli_state , get_user_id_success , get_available_roles_success
189+ ):
190+ command = [
191+ "users" ,
192+ "add-role" ,
193+ "--username" ,
194+ "test.username@example.com" ,
195+ "--role-name" ,
196+ "test" ,
197+ ]
198+ result = runner .invoke (cli , command , obj = cli_state )
199+ assert result .exit_code == 1
200+ assert "Role with name 'test' not found." in result .output
201+
202+
203+ def test_add_user_role_raises_error_when_username_does_not_exist (
204+ runner , cli_state , get_user_id_failure , get_available_roles_success
205+ ):
206+ command = [
207+ "users" ,
208+ "add-role" ,
209+ "--username" ,
210+ "not_a_username@example.com" ,
211+ "--role-name" ,
212+ "Desktop User" ,
213+ ]
214+ result = runner .invoke (cli , command , obj = cli_state )
215+ assert result .exit_code == 1
216+ assert "User 'not_a_username@example.com' does not exist." in result .output
217+
218+
219+ def test_remove_user_role_removes (
220+ runner , cli_state , get_user_id_success , get_available_roles_success
221+ ):
222+ command = [
223+ "users" ,
224+ "remove-role" ,
225+ "--username" ,
226+ "test.username@example.com" ,
227+ "--role-name" ,
228+ "Customer Cloud Admin" ,
229+ ]
230+ runner .invoke (cli , command , obj = cli_state )
231+ cli_state .sdk .users .remove_role .assert_called_once_with (
232+ TEST_USER_ID , TEST_ROLE_NAME
233+ )
234+
235+
236+ def test_remove_user_role_raises_error_when_role_does_not_exist (
237+ runner , cli_state , get_user_id_success , get_available_roles_success
238+ ):
239+ command = [
240+ "users" ,
241+ "remove-role" ,
242+ "--username" ,
243+ "test.username@example.com" ,
244+ "--role-name" ,
245+ "test" ,
246+ ]
247+ result = runner .invoke (cli , command , obj = cli_state )
248+ assert result .exit_code == 1
249+ assert "Role with name 'test' not found." in result .output
250+
251+
252+ def test_remove_user_role_raises_error_when_username_does_not_exist (
253+ runner , cli_state , get_user_id_failure , get_available_roles_success
254+ ):
255+ command = [
256+ "users" ,
257+ "remove-role" ,
258+ "--username" ,
259+ "not_a_username@example.com" ,
260+ "--role-name" ,
261+ "Desktop User" ,
262+ ]
263+ result = runner .invoke (cli , command , obj = cli_state )
264+ assert result .exit_code == 1
265+ assert "User 'not_a_username@example.com' does not exist." in result .output
0 commit comments