diff --git a/tests/time_tracker_api/users/users_namespace_test.py b/tests/time_tracker_api/users/users_namespace_test.py index 35a1b6e9..246de565 100644 --- a/tests/time_tracker_api/users/users_namespace_test.py +++ b/tests/time_tracker_api/users/users_namespace_test.py @@ -132,9 +132,10 @@ def test_if_user_is_in_group( expected_value, ): is_user_in_group_mock.return_value = {'value': expected_value} - response = client.get( - f'/users/{user_id}/groups/{group_name}/is-member-of', - headers=valid_header, + valid_data = {'group_name': group_name} + + response = client.post( + f'/users/{user_id}/is-member-of', headers=valid_header, json=valid_data ) assert HTTPStatus.OK == response.status_code assert 'value' in json.loads(response.data) diff --git a/tests/utils/azure_users_test.py b/tests/utils/azure_users_test.py index ca07d51f..a1f69708 100644 --- a/tests/utils/azure_users_test.py +++ b/tests/utils/azure_users_test.py @@ -97,9 +97,10 @@ def test_is_user_in_group( post_mock.return_value = response_mock get_group_id_by_group_name_mock.return_value = 'group_id' + payload_mock = {'group_name': 'group_id'} azure_connection = AzureConnection() assert ( - azure_connection.is_user_in_group('user_id', 'group_name') + azure_connection.is_user_in_group('user_id', payload_mock) == response_expected ) diff --git a/time_tracker_api/users/users_namespace.py b/time_tracker_api/users/users_namespace.py index 9dfe60f7..2c305837 100644 --- a/time_tracker_api/users/users_namespace.py +++ b/time_tracker_api/users/users_namespace.py @@ -9,7 +9,6 @@ ns = api.namespace('users', description='Namespace of the API for users') # User Model - user_response_fields = ns.model( 'User', { @@ -42,6 +41,33 @@ }, ) +# Data to check if a user is in the group +user_in_group_input = ns.model( + 'UserInGroupInput', + { + 'group_name': fields.String( + title='group_name', + max_length=50, + description='Name of the Group to verify', + example=Faker().word( + ['time-tracker-admin', 'time-tracker-tester'] + ), + ), + }, +) + +user_in_group_response = ns.model( + 'UserInGroupResponse', + { + 'value': fields.Boolean( + readOnly=True, + title='value', + description='Boolean to check if a user belongs to a group', + example=Faker().boolean(), + ) + }, +) + user_response_fields.update(common_fields) @@ -101,11 +127,12 @@ def post(self, user_id, role_id): return AzureConnection().update_role(user_id, role_id, is_grant=False) -@ns.route('//groups//is-member-of') +@ns.route('//is-member-of') @ns.param('user_id', 'The user identifier') -@ns.param('group_id', 'The group name identifier') class UserInGroup(Resource): @ns.doc('user_in_group') - def get(self, user_id, group_id): - """Is User in the Group""" - return AzureConnection().is_user_in_group(user_id, group_id) + @ns.expect(user_in_group_input) + @ns.marshal_with(user_in_group_response) + def post(self, user_id): + """Check if user belongs to group""" + return AzureConnection().is_user_in_group(user_id, ns.payload) diff --git a/utils/azure_users.py b/utils/azure_users.py index 02d8692e..e6e88d26 100644 --- a/utils/azure_users.py +++ b/utils/azure_users.py @@ -181,8 +181,10 @@ def get_group_id_by_group_name(self, group_name): return response.json()['value'][0]['objectId'] - def is_user_in_group(self, user_id, group_name): - group_id = self.get_group_id_by_group_name(group_name=group_name) + def is_user_in_group(self, user_id, data: dict): + group_id = self.get_group_id_by_group_name( + group_name=data['group_name'] + ) endpoint = "{endpoint}/isMemberOf?api-version=1.6".format( endpoint=self.config.ENDPOINT