Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
7 changes: 4 additions & 3 deletions tests/time_tracker_api/users/users_namespace_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
3 changes: 2 additions & 1 deletion tests/utils/azure_users_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
24 changes: 19 additions & 5 deletions time_tracker_api/users/users_namespace.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,22 @@

ns = api.namespace('users', description='Namespace of the API for users')

# User Model
# Data to check if a user is in the group
data_is_user_in_group = ns.model(
'Data',
{
'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 Model
user_response_fields = ns.model(
'User',
{
Expand Down Expand Up @@ -101,11 +115,11 @@ def post(self, user_id, role_id):
return AzureConnection().update_role(user_id, role_id, is_grant=False)


@ns.route('/<string:user_id>/groups/<string:group_id>/is-member-of')
@ns.route('/<string:user_id>/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):
@ns.expect(data_is_user_in_group)
def post(self, user_id):
"""Is User in the Group"""
return AzureConnection().is_user_in_group(user_id, group_id)
return AzureConnection().is_user_in_group(user_id, ns.payload)
6 changes: 4 additions & 2 deletions utils/azure_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down