22from flask import json
33from flask .testing import FlaskClient
44from flask_restplus ._http import HTTPStatus
5- from utils .azure_users import AzureConnection
65from pytest import mark
76
87
9- @patch ('msal.ConfidentialClientApplication ' , Mock ())
8+ @patch ('utils.azure_users.AzureConnection.get_msal_client ' , Mock ())
109@patch ('utils.azure_users.AzureConnection.get_token' , Mock ())
1110@patch (
1211 'utils.azure_users.AzureConnection.is_test_user' , Mock (return_value = True )
1312)
14- @patch (
15- 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
16- )
17- @patch (
18- 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
19- )
2013@patch ('utils.azure_users.AzureConnection.users' )
21- @patch ('utils.azure_users.AzureConnection.users_v2' )
22- def test_feature_toggle_is_on_then_role_field_is_list (
23- users_v2_mock ,
24- users_mock ,
25- is_toggle_enabled_for_user_mock ,
26- get_azure_app_configuration_client_mock ,
27- client : FlaskClient ,
28- valid_header : dict ,
14+ def test_users_response_contains_expected_props (
15+ users_mock , client : FlaskClient , valid_header : dict ,
2916):
30-
31- is_toggle_enabled_for_user_mock .return_value = True
32- users_v2_mock .return_value = [
17+ users_mock .return_value = [
3318 {'name' : 'dummy' , 'email' : 'dummy' , 'roles' : ['dummy-role' ]}
3419 ]
3520 response = client .get ('/users' , headers = valid_header )
3621
37- users_v2_mock .assert_called ()
38- users_mock .assert_not_called ()
22+ users_mock .assert_called ()
3923 assert HTTPStatus .OK == response .status_code
4024 assert 'name' in json .loads (response .data )[0 ]
4125 assert 'email' in json .loads (response .data )[0 ]
4226 assert 'roles' in json .loads (response .data )[0 ]
4327 assert ['dummy-role' ] == json .loads (response .data )[0 ]['roles' ]
4428
4529
46- @patch (
47- 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
48- )
49- @patch (
50- 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
51- )
52- @patch ('utils.azure_users.AzureConnection.users' )
53- @patch ('utils.azure_users.AzureConnection.users_v2' )
54- def test_feature_toggle_is_off_then_role_field_is_string (
55- users_v2_mock ,
56- users_mock ,
57- is_toggle_enabled_for_user_mock ,
58- get_azure_app_configuration_client_mock ,
59- client : FlaskClient ,
60- valid_header : dict ,
61- ):
62- is_toggle_enabled_for_user_mock .return_value = False
63- users_mock .return_value = [
64- {'name' : 'dummy' , 'email' : 'dummy' , 'role' : 'dummy-role' }
65- ]
66-
67- response = client .get ('/users' , headers = valid_header )
68-
69- users_mock .assert_called ()
70- users_v2_mock .assert_not_called ()
71- assert HTTPStatus .OK == response .status_code
72- assert 'name' in json .loads (response .data )[0 ]
73- assert 'email' in json .loads (response .data )[0 ]
74- assert 'role' in json .loads (response .data )[0 ]
75- assert 'dummy-role' == json .loads (response .data )[0 ]['role' ]
76-
77-
78- def test_update_user_role_response_contains_expected_props (
79- client : FlaskClient , valid_header : dict , user_id : str ,
80- ):
81- valid_user_role_data = {'role' : 'admin' }
82- AzureConnection .update_user_role = Mock (
83- return_value = {'name' : 'dummy' , 'email' : 'dummy' , 'role' : 'dummy' }
84- )
85-
86- response = client .post (
87- f'/users/{ user_id } /roles' ,
88- headers = valid_header ,
89- json = valid_user_role_data ,
90- )
91-
92- assert HTTPStatus .OK == response .status_code
93- assert 'name' in json .loads (response .data )
94- assert 'email' in json .loads (response .data )
95- assert 'role' in json .loads (response .data )
96-
97-
30+ @patch ('utils.azure_users.AzureConnection.get_msal_client' , Mock ())
31+ @patch ('utils.azure_users.AzureConnection.get_token' , Mock ())
9832@patch ('utils.azure_users.AzureConnection.update_role' )
9933@mark .parametrize (
10034 'role_id,action' , [('test' , 'grant' ), ('admin' , 'revoke' )],
@@ -121,43 +55,8 @@ def test_update_role_response_contains_expected_props(
12155 assert 'roles' in json .loads (response .data )
12256
12357
124- @patch ('utils.azure_users.AzureConnection.update_user_role' , new_callable = Mock )
125- def test_on_post_update_user_role_is_being_called_with_valid_arguments (
126- update_user_role_mock ,
127- client : FlaskClient ,
128- valid_header : dict ,
129- user_id : str ,
130- ):
131- update_user_role_mock .return_value = {}
132- valid_user_role_data = {'role' : 'admin' }
133- response = client .post (
134- f'/users/{ user_id } /roles' ,
135- headers = valid_header ,
136- json = valid_user_role_data ,
137- )
138-
139- assert HTTPStatus .OK == response .status_code
140- update_user_role_mock .assert_called_once_with (
141- user_id , valid_user_role_data ['role' ]
142- )
143-
144-
145- @patch ('utils.azure_users.AzureConnection.update_user_role' , new_callable = Mock )
146- def test_on_delete_update_user_role_is_being_called_with_valid_arguments (
147- update_user_role_mock ,
148- client : FlaskClient ,
149- valid_header : dict ,
150- user_id : str ,
151- ):
152- update_user_role_mock .return_value = {}
153- response = client .delete (
154- f'/users/{ user_id } /roles/time-tracker-admin' , headers = valid_header ,
155- )
156-
157- assert HTTPStatus .OK == response .status_code
158- update_user_role_mock .assert_called_once_with (user_id , role = None )
159-
160-
58+ @patch ('utils.azure_users.AzureConnection.get_msal_client' , Mock ())
59+ @patch ('utils.azure_users.AzureConnection.get_token' , Mock ())
16160@patch ('utils.azure_users.AzureConnection.update_role' , new_callable = Mock )
16261@mark .parametrize (
16362 'role_id,action,is_grant' ,
0 commit comments