From 8dcc65d11ce61d861b037b2a92416bf7a0e6cbc1 Mon Sep 17 00:00:00 2001 From: Katie Smith Date: Mon, 17 Aug 2020 11:59:55 +0100 Subject: [PATCH] Add endpoints to get invited users We want to display flash messages in admin when invites have been cancelled. This message needs to display the user's email address, so this commit adds endpoints to GET a single invited service user and org user so that we can look up the email address of a cancelled user. --- app/invite/rest.py | 6 ++++++ app/organisation/invite_rest.py | 6 ++++++ tests/app/invite/test_invite_rest.py | 23 ++++++++++++++++++++++ tests/app/organisation/test_invite_rest.py | 23 ++++++++++++++++++++++ 4 files changed, 58 insertions(+) diff --git a/app/invite/rest.py b/app/invite/rest.py index fcd7e7b08..98f44d4ac 100644 --- a/app/invite/rest.py +++ b/app/invite/rest.py @@ -60,6 +60,12 @@ def get_invited_users_by_service(service_id): return jsonify(data=invited_user_schema.dump(invited_users, many=True).data), 200 +@invite.route('/', methods=['GET']) +def get_invited_user_by_service(service_id, invited_user_id): + invited_user = get_invited_user(service_id, invited_user_id) + return jsonify(data=invited_user_schema.dump(invited_user).data), 200 + + @invite.route('/', methods=['POST']) def update_invited_user(service_id, invited_user_id): fetched = get_invited_user(service_id=service_id, invited_user_id=invited_user_id) diff --git a/app/organisation/invite_rest.py b/app/organisation/invite_rest.py index 490c7e402..e2a70c28c 100644 --- a/app/organisation/invite_rest.py +++ b/app/organisation/invite_rest.py @@ -76,6 +76,12 @@ def get_invited_org_users_by_organisation(organisation_id): return jsonify(data=[x.serialize() for x in invited_org_users]), 200 +@organisation_invite_blueprint.route('/', methods=['GET']) +def get_invited_org_user_by_organisation(organisation_id, invited_org_user_id): + invited_org_user = get_invited_org_user(organisation_id, invited_org_user_id) + return jsonify(data=invited_org_user.serialize()), 200 + + @organisation_invite_blueprint.route('/', methods=['POST']) def update_org_invite_status(organisation_id, invited_org_user_id): fetched = get_invited_org_user(organisation_id=organisation_id, invited_org_user_id=invited_org_user_id) diff --git a/tests/app/invite/test_invite_rest.py b/tests/app/invite/test_invite_rest.py index 3672a5f98..4ec0237c1 100644 --- a/tests/app/invite/test_invite_rest.py +++ b/tests/app/invite/test_invite_rest.py @@ -160,6 +160,29 @@ def test_get_invited_users_by_service_with_no_invites(client, notify_db, notify_ assert len(json_resp['data']) == 0 +def test_get_invited_user_by_service(admin_request, sample_invited_user): + json_resp = admin_request.get( + 'invite.get_invited_user_by_service', + service_id=sample_invited_user.service.id, + invited_user_id=sample_invited_user.id + ) + assert json_resp['data']['email_address'] == sample_invited_user.email_address + + +def test_get_invited_user_by_service_when_user_does_not_belong_to_the_service( + admin_request, + sample_invited_user, + fake_uuid, +): + json_resp = admin_request.get( + 'invite.get_invited_user_by_service', + service_id=fake_uuid, + invited_user_id=sample_invited_user.id, + _expected_status=404 + ) + assert json_resp['result'] == 'error' + + def test_update_invited_user_set_status_to_cancelled(client, sample_invited_user): data = {'status': 'cancelled'} url = '/service/{0}/invite/{1}'.format(sample_invited_user.service_id, sample_invited_user.id) diff --git a/tests/app/organisation/test_invite_rest.py b/tests/app/organisation/test_invite_rest.py index c0092511b..f7f771b3d 100644 --- a/tests/app/organisation/test_invite_rest.py +++ b/tests/app/organisation/test_invite_rest.py @@ -116,6 +116,29 @@ def test_get_invited_users_by_service_with_no_invites(admin_request, sample_orga assert len(json_resp['data']) == 0 +def test_get_invited_user_by_organisation(admin_request, sample_invited_org_user): + json_resp = admin_request.get( + 'organisation_invite.get_invited_org_user_by_organisation', + organisation_id=sample_invited_org_user.organisation.id, + invited_org_user_id=sample_invited_org_user.id + ) + assert json_resp['data']['email_address'] == sample_invited_org_user.email_address + + +def test_get_invited_user_by_organisation_when_user_does_not_belong_to_the_org( + admin_request, + sample_invited_org_user, + fake_uuid, +): + json_resp = admin_request.get( + 'organisation_invite.get_invited_org_user_by_organisation', + organisation_id=fake_uuid, + invited_org_user_id=sample_invited_org_user.id, + _expected_status=404 + ) + assert json_resp['result'] == 'error' + + def test_update_org_invited_user_set_status_to_cancelled(admin_request, sample_invited_org_user): data = {'status': 'cancelled'}