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
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(
'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)


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