Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions tests/time_tracker_api/users/users_namespace_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'
)
Expand Down
18 changes: 17 additions & 1 deletion tests/utils/azure_users_test.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down Expand Up @@ -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
11 changes: 10 additions & 1 deletion time_tracker_api/users/users_namespace.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()


Expand Down
6 changes: 6 additions & 0 deletions utils/azure_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down