Skip to content

Commit 92573f2

Browse files
authored
feat: TT-122 show users by type of user (#253)
* feat: TT-122 show users by type of user * feat: TT-122 fix tests * feat: TT-122 solve PR comments * feat: TT-122 update tests
1 parent 2b3b616 commit 92573f2

File tree

4 files changed

+38
-2
lines changed

4 files changed

+38
-2
lines changed

tests/time_tracker_api/users/users_namespace_test.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
from pytest import mark
77

88

9+
@patch('msal.ConfidentialClientApplication', Mock())
10+
@patch('utils.azure_users.AzureConnection.get_token', Mock())
11+
@patch(
12+
'utils.azure_users.AzureConnection.is_test_user', Mock(return_value=True)
13+
)
914
@patch(
1015
'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
1116
)

tests/utils/azure_users_test.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from unittest.mock import Mock, patch
2-
from utils.azure_users import AzureConnection, ROLE_FIELD_VALUES
2+
from utils.azure_users import AzureConnection, ROLE_FIELD_VALUES, AzureUser_v2
33
from pytest import mark
44

55

@@ -40,3 +40,19 @@ def test_azure_connection_get_test_user_ids(get_mock):
4040
ids = ['ID1', 'ID2']
4141
az_conn = AzureConnection()
4242
assert az_conn.get_test_user_ids() == ids
43+
44+
45+
@patch('msal.ConfidentialClientApplication', Mock())
46+
@patch('utils.azure_users.AzureConnection.get_token', Mock())
47+
@patch('utils.azure_users.AzureConnection.get_test_user_ids')
48+
@patch('utils.azure_users.AzureConnection.users_v2')
49+
def test_azure_connection_get_non_test_users(
50+
users_v2_mock, get_test_user_ids_mock
51+
):
52+
test_user = AzureUser_v2('ID1', None, None, [])
53+
non_test_user = AzureUser_v2('ID2', None, None, [])
54+
users_v2_mock.return_value = [test_user, non_test_user]
55+
get_test_user_ids_mock.return_value = ['ID1']
56+
non_test_users = [non_test_user]
57+
az_conn = AzureConnection()
58+
assert az_conn.get_non_test_users() == non_test_users

time_tracker_api/users/users_namespace.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from flask_restplus._http import HTTPStatus
44

55
from time_tracker_api.api import common_fields, api, NullableString
6+
from time_tracker_api.security import current_user_id
67

78
from utils.azure_users import AzureConnection
89
from commons.feature_toggles.feature_toggle_manager import FeatureToggleManager
@@ -68,7 +69,15 @@ def get(self):
6869
"""List all users"""
6970
user_role_field_toggle = FeatureToggleManager('bk-user-role-field')
7071
if user_role_field_toggle.is_toggle_enabled_for_user():
71-
return AzureConnection().users_v2()
72+
azure_connection = AzureConnection()
73+
is_current_user_a_tester = azure_connection.is_test_user(
74+
current_user_id()
75+
)
76+
return (
77+
azure_connection.users_v2()
78+
if is_current_user_a_tester
79+
else azure_connection.get_non_test_users()
80+
)
7281
return AzureConnection().users()
7382

7483

utils/azure_users.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,12 @@ def update_role(self, user_id, role_id, is_grant):
178178

179179
return self.to_azure_user_v2(response.json())
180180

181+
def get_non_test_users(self) -> List[AzureUser]:
182+
test_user_ids = self.get_test_user_ids()
183+
return [
184+
user for user in self.users_v2() if user.id not in test_user_ids
185+
]
186+
181187
def get_role_data(self, role_id, is_grant=True):
182188
assert role_id in ROLE_FIELD_VALUES.keys()
183189
field_name, field_value = ROLE_FIELD_VALUES[role_id]

0 commit comments

Comments
 (0)