diff --git a/tests/time_tracker_api/users/users_namespace_test.py b/tests/time_tracker_api/users/users_namespace_test.py index 53721a73..73ea1be4 100644 --- a/tests/time_tracker_api/users/users_namespace_test.py +++ b/tests/time_tracker_api/users/users_namespace_test.py @@ -6,6 +6,11 @@ from pytest import mark +@patch('msal.ConfidentialClientApplication', Mock()) +@patch('utils.azure_users.AzureConnection.get_token', Mock()) +@patch( + 'utils.azure_users.AzureConnection.is_test_user', Mock(return_value=True) +) @patch( 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client' ) diff --git a/tests/utils/azure_users_test.py b/tests/utils/azure_users_test.py index 20cfefc0..fe633946 100644 --- a/tests/utils/azure_users_test.py +++ b/tests/utils/azure_users_test.py @@ -1,5 +1,5 @@ from unittest.mock import Mock, patch -from utils.azure_users import AzureConnection, ROLE_FIELD_VALUES +from utils.azure_users import AzureConnection, ROLE_FIELD_VALUES, AzureUser_v2 from pytest import mark @@ -40,3 +40,19 @@ def test_azure_connection_get_test_user_ids(get_mock): ids = ['ID1', 'ID2'] az_conn = AzureConnection() assert az_conn.get_test_user_ids() == ids + + +@patch('msal.ConfidentialClientApplication', Mock()) +@patch('utils.azure_users.AzureConnection.get_token', Mock()) +@patch('utils.azure_users.AzureConnection.get_test_user_ids') +@patch('utils.azure_users.AzureConnection.users_v2') +def test_azure_connection_get_non_test_users( + users_v2_mock, get_test_user_ids_mock +): + test_user = AzureUser_v2('ID1', None, None, []) + non_test_user = AzureUser_v2('ID2', None, None, []) + users_v2_mock.return_value = [test_user, non_test_user] + get_test_user_ids_mock.return_value = ['ID1'] + non_test_users = [non_test_user] + az_conn = AzureConnection() + assert az_conn.get_non_test_users() == non_test_users diff --git a/time_tracker_api/users/users_namespace.py b/time_tracker_api/users/users_namespace.py index f50eab17..241df113 100644 --- a/time_tracker_api/users/users_namespace.py +++ b/time_tracker_api/users/users_namespace.py @@ -3,6 +3,7 @@ from flask_restplus._http import HTTPStatus from time_tracker_api.api import common_fields, api, NullableString +from time_tracker_api.security import current_user_id from utils.azure_users import AzureConnection from commons.feature_toggles.feature_toggle_manager import FeatureToggleManager @@ -68,7 +69,15 @@ def get(self): """List all users""" user_role_field_toggle = FeatureToggleManager('bk-user-role-field') if user_role_field_toggle.is_toggle_enabled_for_user(): - return AzureConnection().users_v2() + azure_connection = AzureConnection() + is_current_user_a_tester = azure_connection.is_test_user( + current_user_id() + ) + return ( + azure_connection.users_v2() + if is_current_user_a_tester + else azure_connection.get_non_test_users() + ) return AzureConnection().users() diff --git a/utils/azure_users.py b/utils/azure_users.py index 411716e5..48f24fd2 100644 --- a/utils/azure_users.py +++ b/utils/azure_users.py @@ -178,6 +178,12 @@ def update_role(self, user_id, role_id, is_grant): return self.to_azure_user_v2(response.json()) + def get_non_test_users(self) -> List[AzureUser]: + test_user_ids = self.get_test_user_ids() + return [ + user for user in self.users_v2() if user.id not in test_user_ids + ] + def get_role_data(self, role_id, is_grant=True): assert role_id in ROLE_FIELD_VALUES.keys() field_name, field_value = ROLE_FIELD_VALUES[role_id]