6
6
from pytest import mark
7
7
8
8
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 ,
11
24
):
12
25
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' ]
16
39
17
- response = client .get ('/users' , headers = valid_header ,)
18
40
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 ()
19
66
assert HTTPStatus .OK == response .status_code
20
67
assert 'name' in json .loads (response .data )[0 ]
21
68
assert 'email' in json .loads (response .data )[0 ]
22
69
assert 'role' in json .loads (response .data )[0 ]
70
+ assert 'dummy-role' == json .loads (response .data )[0 ]['role' ]
23
71
24
72
25
73
def test_update_user_role_response_contains_expected_props (
@@ -42,14 +90,40 @@ def test_update_user_role_response_contains_expected_props(
42
90
assert 'role' in json .loads (response .data )
43
91
44
92
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
+
45
119
@patch ('utils.azure_users.AzureConnection.update_user_role' , new_callable = Mock )
46
120
def test_on_post_update_user_role_is_being_called_with_valid_arguments (
47
121
update_user_role_mock ,
48
122
client : FlaskClient ,
49
123
valid_header : dict ,
50
124
user_id : str ,
51
125
):
52
-
126
+ update_user_role_mock . return_value = {}
53
127
valid_user_role_data = {'role' : 'admin' }
54
128
response = client .post (
55
129
f'/users/{ user_id } /roles' ,
@@ -70,7 +144,7 @@ def test_on_delete_update_user_role_is_being_called_with_valid_arguments(
70
144
valid_header : dict ,
71
145
user_id : str ,
72
146
):
73
-
147
+ update_user_role_mock . return_value = {}
74
148
response = client .delete (
75
149
f'/users/{ user_id } /roles/time-tracker-admin' , headers = valid_header ,
76
150
)
@@ -98,6 +172,7 @@ def test_update_role_is_called_properly_on_each_action(
98
172
action ,
99
173
is_grant ,
100
174
):
175
+ update_role_mock .return_value = {}
101
176
response = client .post (
102
177
f'/users/{ user_id } /roles/{ role_id } /{ action } ' , headers = valid_header ,
103
178
)
0 commit comments