66from pytest import mark
77
88
9- def test_users_response_contains_expected_props (
10- client : FlaskClient , valid_header : dict ,
9+ @patch (
10+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
11+ )
12+ @patch (
13+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
14+ )
15+ @patch ('utils.azure_users.AzureConnection.users' )
16+ @patch ('utils.azure_users.AzureConnection.users_v2' )
17+ def test_feature_toggle_is_on_then_role_field_is_list (
18+ users_v2_mock ,
19+ users_mock ,
20+ is_toggle_enabled_for_user_mock ,
21+ get_azure_app_configuration_client_mock ,
22+ client : FlaskClient ,
23+ valid_header : dict ,
1124):
1225
13- AzureConnection .users = Mock (
14- return_value = [{'name' : 'dummy' , 'email' : 'dummy' , 'role' : 'dummy' }]
15- )
26+ is_toggle_enabled_for_user_mock .return_value = True
27+ users_v2_mock .return_value = [
28+ {'name' : 'dummy' , 'email' : 'dummy' , 'roles' : ['dummy-role' ]}
29+ ]
30+ response = client .get ('/users' , headers = valid_header )
31+
32+ users_v2_mock .assert_called ()
33+ users_mock .assert_not_called ()
34+ assert HTTPStatus .OK == response .status_code
35+ assert 'name' in json .loads (response .data )[0 ]
36+ assert 'email' in json .loads (response .data )[0 ]
37+ assert 'roles' in json .loads (response .data )[0 ]
38+ assert ['dummy-role' ] == json .loads (response .data )[0 ]['roles' ]
1639
17- response = client .get ('/users' , headers = valid_header ,)
1840
41+ @patch (
42+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
43+ )
44+ @patch (
45+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
46+ )
47+ @patch ('utils.azure_users.AzureConnection.users' )
48+ @patch ('utils.azure_users.AzureConnection.users_v2' )
49+ def test_feature_toggle_is_off_then_role_field_is_string (
50+ users_v2_mock ,
51+ users_mock ,
52+ is_toggle_enabled_for_user_mock ,
53+ get_azure_app_configuration_client_mock ,
54+ client : FlaskClient ,
55+ valid_header : dict ,
56+ ):
57+ is_toggle_enabled_for_user_mock .return_value = False
58+ users_mock .return_value = [
59+ {'name' : 'dummy' , 'email' : 'dummy' , 'role' : 'dummy-role' }
60+ ]
61+
62+ response = client .get ('/users' , headers = valid_header )
63+
64+ users_mock .assert_called ()
65+ users_v2_mock .assert_not_called ()
1966 assert HTTPStatus .OK == response .status_code
2067 assert 'name' in json .loads (response .data )[0 ]
2168 assert 'email' in json .loads (response .data )[0 ]
2269 assert 'role' in json .loads (response .data )[0 ]
70+ assert 'dummy-role' == json .loads (response .data )[0 ]['role' ]
2371
2472
2573def test_update_user_role_response_contains_expected_props (
@@ -42,14 +90,40 @@ def test_update_user_role_response_contains_expected_props(
4290 assert 'role' in json .loads (response .data )
4391
4492
93+ @patch ('utils.azure_users.AzureConnection.update_role' )
94+ @mark .parametrize (
95+ 'role_id,action' , [('test' , 'grant' ), ('admin' , 'revoke' )],
96+ )
97+ def test_update_role_response_contains_expected_props (
98+ update_role_mock ,
99+ client : FlaskClient ,
100+ valid_header : dict ,
101+ user_id : str ,
102+ role_id ,
103+ action ,
104+ ):
105+ update_role_mock .return_value = {
106+ 'name' : 'dummy' ,
107+ 'email' : 'dummy' ,
108+ 'roles' : [],
109+ }
110+ response = client .post (
111+ f'/users/{ user_id } /roles/{ role_id } /{ action } ' , headers = valid_header ,
112+ )
113+ assert HTTPStatus .OK == response .status_code
114+ assert 'name' in json .loads (response .data )
115+ assert 'email' in json .loads (response .data )
116+ assert 'roles' in json .loads (response .data )
117+
118+
45119@patch ('utils.azure_users.AzureConnection.update_user_role' , new_callable = Mock )
46120def test_on_post_update_user_role_is_being_called_with_valid_arguments (
47121 update_user_role_mock ,
48122 client : FlaskClient ,
49123 valid_header : dict ,
50124 user_id : str ,
51125):
52-
126+ update_user_role_mock . return_value = {}
53127 valid_user_role_data = {'role' : 'admin' }
54128 response = client .post (
55129 f'/users/{ user_id } /roles' ,
@@ -70,7 +144,7 @@ def test_on_delete_update_user_role_is_being_called_with_valid_arguments(
70144 valid_header : dict ,
71145 user_id : str ,
72146):
73-
147+ update_user_role_mock . return_value = {}
74148 response = client .delete (
75149 f'/users/{ user_id } /roles/time-tracker-admin' , headers = valid_header ,
76150 )
@@ -98,6 +172,7 @@ def test_update_role_is_called_properly_on_each_action(
98172 action ,
99173 is_grant ,
100174):
175+ update_role_mock .return_value = {}
101176 response = client .post (
102177 f'/users/{ user_id } /roles/{ role_id } /{ action } ' , headers = valid_header ,
103178 )
0 commit comments