Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
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
)
39 changes: 33 additions & 6 deletions time_tracker_api/users/users_namespace.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
ns = api.namespace('users', description='Namespace of the API for users')

# User Model

user_response_fields = ns.model(
'User',
{
Expand Down Expand Up @@ -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(
'Response',
{
'value': fields.Boolean(
readOnly=True,
title='value',
description='Boolean to check if a user belong to a group',
example=Faker().boolean(),
)
},
)

user_response_fields.update(common_fields)


Expand Down Expand Up @@ -101,11 +127,12 @@ 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):
"""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)
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