Skip to content

Commit 87894dd

Browse files
authored
fix: TT-162 change endpoint is user in group to a post (#260)
* fix: TT-162 change endpoint is user in group to a post * fix: TT-162 Resolve some comments in the PR * fix: TT-162 Resolve type fails in the PR
1 parent 18cd3da commit 87894dd

File tree

4 files changed

+43
-12
lines changed

4 files changed

+43
-12
lines changed

tests/time_tracker_api/users/users_namespace_test.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,10 @@ def test_if_user_is_in_group(
132132
expected_value,
133133
):
134134
is_user_in_group_mock.return_value = {'value': expected_value}
135-
response = client.get(
136-
f'/users/{user_id}/groups/{group_name}/is-member-of',
137-
headers=valid_header,
135+
valid_data = {'group_name': group_name}
136+
137+
response = client.post(
138+
f'/users/{user_id}/is-member-of', headers=valid_header, json=valid_data
138139
)
139140
assert HTTPStatus.OK == response.status_code
140141
assert 'value' in json.loads(response.data)

tests/utils/azure_users_test.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,10 @@ def test_is_user_in_group(
9797
post_mock.return_value = response_mock
9898

9999
get_group_id_by_group_name_mock.return_value = 'group_id'
100+
payload_mock = {'group_name': 'group_id'}
100101

101102
azure_connection = AzureConnection()
102103
assert (
103-
azure_connection.is_user_in_group('user_id', 'group_name')
104+
azure_connection.is_user_in_group('user_id', payload_mock)
104105
== response_expected
105106
)

time_tracker_api/users/users_namespace.py

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
ns = api.namespace('users', description='Namespace of the API for users')
1010

1111
# User Model
12-
1312
user_response_fields = ns.model(
1413
'User',
1514
{
@@ -42,6 +41,33 @@
4241
},
4342
)
4443

44+
# Data to check if a user is in the group
45+
user_in_group_input = ns.model(
46+
'UserInGroupInput',
47+
{
48+
'group_name': fields.String(
49+
title='group_name',
50+
max_length=50,
51+
description='Name of the Group to verify',
52+
example=Faker().word(
53+
['time-tracker-admin', 'time-tracker-tester']
54+
),
55+
),
56+
},
57+
)
58+
59+
user_in_group_response = ns.model(
60+
'UserInGroupResponse',
61+
{
62+
'value': fields.Boolean(
63+
readOnly=True,
64+
title='value',
65+
description='Boolean to check if a user belongs to a group',
66+
example=Faker().boolean(),
67+
)
68+
},
69+
)
70+
4571
user_response_fields.update(common_fields)
4672

4773

@@ -101,11 +127,12 @@ def post(self, user_id, role_id):
101127
return AzureConnection().update_role(user_id, role_id, is_grant=False)
102128

103129

104-
@ns.route('/<string:user_id>/groups/<string:group_id>/is-member-of')
130+
@ns.route('/<string:user_id>/is-member-of')
105131
@ns.param('user_id', 'The user identifier')
106-
@ns.param('group_id', 'The group name identifier')
107132
class UserInGroup(Resource):
108133
@ns.doc('user_in_group')
109-
def get(self, user_id, group_id):
110-
"""Is User in the Group"""
111-
return AzureConnection().is_user_in_group(user_id, group_id)
134+
@ns.expect(user_in_group_input)
135+
@ns.marshal_with(user_in_group_response)
136+
def post(self, user_id):
137+
"""Check if user belongs to group"""
138+
return AzureConnection().is_user_in_group(user_id, ns.payload)

utils/azure_users.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,10 @@ def get_group_id_by_group_name(self, group_name):
181181

182182
return response.json()['value'][0]['objectId']
183183

184-
def is_user_in_group(self, user_id, group_name):
185-
group_id = self.get_group_id_by_group_name(group_name=group_name)
184+
def is_user_in_group(self, user_id, data: dict):
185+
group_id = self.get_group_id_by_group_name(
186+
group_name=data['group_name']
187+
)
186188

187189
endpoint = "{endpoint}/isMemberOf?api-version=1.6".format(
188190
endpoint=self.config.ENDPOINT

0 commit comments

Comments
 (0)