Skip to content

Commit 446c636

Browse files
fix: TT-583 unable to set admin role to users (#373)
1 parent 6abcf1d commit 446c636

File tree

2 files changed

+29
-18
lines changed

2 files changed

+29
-18
lines changed

tests/utils/azure_users_test.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
],
1818
)
1919
def test_azure_connection_is_test_user(
20-
get_mock,
21-
field_name,
22-
field_value,
23-
is_test_user_expected_value,
20+
get_mock,
21+
field_name,
22+
field_value,
23+
is_test_user_expected_value,
2424
):
2525
response_mock = Mock()
2626
response_mock.status_code = 200
@@ -58,7 +58,7 @@ def test_azure_connection_get_test_user_ids(get_mock):
5858
@patch('utils.azure_users.AzureConnection.get_test_user_ids')
5959
@patch('utils.azure_users.AzureConnection.users')
6060
def test_azure_connection_get_non_test_users(
61-
users_mock, get_test_user_ids_mock
61+
users_mock, get_test_user_ids_mock
6262
):
6363
test_user = AzureUser('ID1', None, None, [], [])
6464
non_test_user = AzureUser('ID2', None, None, [], [])
@@ -81,7 +81,7 @@ def test_azure_connection_get_group_id_by_group_name(get_mock):
8181
group_id = 'ID1'
8282
azure_connection = AzureConnection()
8383
assert (
84-
azure_connection.get_group_id_by_group_name('group_name') == group_id
84+
azure_connection.get_group_id_by_group_name('group_name') == group_id
8585
)
8686

8787

@@ -91,7 +91,7 @@ def test_azure_connection_get_group_id_by_group_name(get_mock):
9191
@patch('requests.post')
9292
@mark.parametrize('expected_value', [True, False])
9393
def test_is_user_in_group(
94-
post_mock, get_group_id_by_group_name_mock, expected_value
94+
post_mock, get_group_id_by_group_name_mock, expected_value
9595
):
9696
response_expected = {'value': expected_value}
9797
response_mock = Mock()
@@ -104,8 +104,8 @@ def test_is_user_in_group(
104104

105105
azure_connection = AzureConnection()
106106
assert (
107-
azure_connection.is_user_in_group('user_id', payload_mock)
108-
== response_expected
107+
azure_connection.is_user_in_group('user_id', payload_mock)
108+
== response_expected
109109
)
110110

111111

@@ -164,7 +164,7 @@ def test_get_groups_and_users(get_mock):
164164
],
165165
)
166166
def test_get_groups_by_user_id(
167-
get_groups_and_users_mock, user_id, groups_expected_value
167+
get_groups_and_users_mock, user_id, groups_expected_value
168168
):
169169
get_groups_and_users_mock.return_value = [
170170
('test-group-1', ['user-id1', 'user-id2']),
@@ -180,7 +180,7 @@ def test_get_groups_by_user_id(
180180
@patch('utils.azure_users.AzureConnection.get_token', Mock())
181181
@patch('utils.azure_users.AzureConnection.get_groups_and_users')
182182
def test_get_groups_and_users_called_once_by_instance(
183-
get_groups_and_users_mock,
183+
get_groups_and_users_mock,
184184
):
185185
get_groups_and_users_mock.return_value = []
186186
user_id = 'user-id1'
@@ -198,7 +198,7 @@ def test_get_groups_and_users_called_once_by_instance(
198198
@patch('utils.azure_users.AzureConnection.get_group_id_by_group_name')
199199
@patch('requests.post')
200200
def test_add_user_to_group(
201-
post_mock, get_group_id_by_group_name_mock, get_user_mock
201+
post_mock, get_group_id_by_group_name_mock, get_user_mock
202202
):
203203
get_group_id_by_group_name_mock.return_value = 'dummy_group'
204204
test_user = AzureUser('ID1', None, None, [], [])
@@ -224,7 +224,7 @@ def test_add_user_to_group(
224224
@patch('utils.azure_users.AzureConnection.get_group_id_by_group_name')
225225
@patch('requests.delete')
226226
def test_remove_user_from_group(
227-
delete_mock, get_group_id_by_group_name_mock, get_user_mock
227+
delete_mock, get_group_id_by_group_name_mock, get_user_mock
228228
):
229229
get_group_id_by_group_name_mock.return_value = 'dummy_group'
230230
test_user = AzureUser('ID1', None, None, [], [])
@@ -247,7 +247,7 @@ def test_remove_user_from_group(
247247
@patch('utils.azure_users.AzureConnection.get_groups_and_users')
248248
@patch('requests.get')
249249
def test_users_functions_should_returns_all_users(
250-
get_mock, get_groups_and_users_mock
250+
get_mock, get_groups_and_users_mock
251251
):
252252
first_response = Response()
253253
first_response.status_code = 200

utils/azure_users.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def __init__(self, config=MSConfig):
6969
self.client = self.get_msal_client()
7070
self.access_token = self.get_token()
7171
self.groups_and_users = None
72-
72+
7373
def get_blob_storage_connection_string(self) -> str:
7474
return self.config.AZURE_STORAGE_CONNECTION_STRING
7575

@@ -187,7 +187,15 @@ def add_user_to_group(self, user_id, group_name):
187187
headers=HTTP_PATCH_HEADERS,
188188
)
189189
assert 204 == response.status_code
190-
190+
if self.groups_and_users is None:
191+
self.groups_and_users = [(group_name, [user_id])]
192+
elif group_name not in [gn for (gn, ul) in self.groups_and_users]:
193+
self.groups_and_users.append((group_name, [user_id]))
194+
else:
195+
for (cache_group_name, user_ids) in self.groups_and_users:
196+
if group_name == cache_group_name:
197+
if user_id not in user_ids:
198+
user_ids.append(user_id)
191199
return self.get_user(user_id)
192200

193201
def remove_user_from_group(self, user_id, group_name):
@@ -201,7 +209,11 @@ def remove_user_from_group(self, user_id, group_name):
201209
headers=HTTP_PATCH_HEADERS,
202210
)
203211
assert 204 == response.status_code
204-
212+
if self.groups_and_users is not None:
213+
for (cache_group_name, user_ids) in self.groups_and_users:
214+
if group_name == cache_group_name:
215+
if user_id in user_ids:
216+
user_ids.remove(user_id)
205217
return self.get_user(user_id)
206218

207219
def get_non_test_users(self) -> List[AzureUser]:
@@ -271,7 +283,6 @@ def get_groups_and_users(self):
271283
result = list(map(parse_item, response.json()['value']))
272284
users_id = self.config.USERID.split(",")
273285
result[0][1].extend(users_id)
274-
275286
return result
276287

277288
def is_user_in_group(self, user_id, data: dict):

0 commit comments

Comments
 (0)