From 56c73d98980dfe2db9626c42fa38982c10f1897e Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Fri, 19 Apr 2024 14:02:38 -0700 Subject: [PATCH 1/4] api to return service invite info --- app/service_invite/rest.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/service_invite/rest.py b/app/service_invite/rest.py index 81dcb98e2..dde184a62 100644 --- a/app/service_invite/rest.py +++ b/app/service_invite/rest.py @@ -223,3 +223,14 @@ def validate_service_invitation_token(token): invited_user = get_invited_user_by_id(invited_user_id) return jsonify(data=invited_user_schema.dump(invited_user)), 200 + + +@service_invite.route("/service/invite/redis/", methods=["GET"]) +def get_redis_data(redis_key): + service_invite_data = redis_store.raw_get(redis_key) + # We can't log this because key may contain PII (email address) + if service_invite_data is None: + raise Exception("No service invite data") + else: + service_invite_data = service_invite_data.decode("utf8") + return jsonify(json.dumps(service_invite_data)), 200 From 44c8d742503cd6ae7f3d737aadd2533cf894727f Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Fri, 19 Apr 2024 14:11:05 -0700 Subject: [PATCH 2/4] don't do a json.dumps before sending --- app/service_invite/rest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/service_invite/rest.py b/app/service_invite/rest.py index dde184a62..0243941ec 100644 --- a/app/service_invite/rest.py +++ b/app/service_invite/rest.py @@ -233,4 +233,4 @@ def get_redis_data(redis_key): raise Exception("No service invite data") else: service_invite_data = service_invite_data.decode("utf8") - return jsonify(json.dumps(service_invite_data)), 200 + return jsonify(service_invite_data), 200 From 49352a4be17f44848bf13d233068f2011c3a4a0a Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Fri, 19 Apr 2024 15:19:11 -0700 Subject: [PATCH 3/4] add tests --- app/service_invite/rest.py | 2 +- .../test_service_invite_rest.py | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/app/service_invite/rest.py b/app/service_invite/rest.py index 0243941ec..da7fe5794 100644 --- a/app/service_invite/rest.py +++ b/app/service_invite/rest.py @@ -226,7 +226,7 @@ def validate_service_invitation_token(token): @service_invite.route("/service/invite/redis/", methods=["GET"]) -def get_redis_data(redis_key): +def get_service_invite_data(redis_key): service_invite_data = redis_store.raw_get(redis_key) # We can't log this because key may contain PII (email address) if service_invite_data is None: diff --git a/tests/app/service_invite/test_service_invite_rest.py b/tests/app/service_invite/test_service_invite_rest.py index e736a3042..f1c2fd146 100644 --- a/tests/app/service_invite/test_service_invite_rest.py +++ b/tests/app/service_invite/test_service_invite_rest.py @@ -398,3 +398,35 @@ def test_get_invited_user_404s_if_invite_doesnt_exist( _expected_status=404, ) assert json_resp["result"] == "error" + + +def test_get_service_invite_data_with_invite( + admin_request, + mocker +): + redis_key = "service-invite-j.k@fake.gov" + expected_user_data = b'{"from_user_id": ["7480cdcf-fa31-42b8-a4bf-2cd4d7a9b4f4"], "service_id": "721b0aa6-2447-4bcd-91fc-26d576f2bbff", "permissions": ["manage_api_keys"], "folder_permissions": []}' # noqa + expected_status = 200 + + mocker.patch("app.service_invite.rest.redis_store.raw_get", return_value=expected_user_data) + json_resp = json.loads(admin_request.get( + "service_invite.get_service_invite_data", + redis_key=redis_key, + _expected_status=expected_status, + )) + assert json_resp["permissions"] == ["manage_api_keys"] + + +def test_get_service_invite_data_without_invite( + admin_request, + mocker +): + redis_key = "service-invite-j.k@fake.gov" + + + mocker.patch("app.service_invite.rest.redis_store.raw_get", return_value=None) + with pytest.raises(Exception): + json_resp = json.loads(admin_request.get( + "service_invite.get_service_invite_data", + redis_key=redis_key, + )) From 13b03bbfe45028610a06f2d7a5ac968adbed11d0 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Mon, 22 Apr 2024 07:32:10 -0700 Subject: [PATCH 4/4] fix test --- .../test_service_invite_rest.py | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/tests/app/service_invite/test_service_invite_rest.py b/tests/app/service_invite/test_service_invite_rest.py index f1c2fd146..17f8a553c 100644 --- a/tests/app/service_invite/test_service_invite_rest.py +++ b/tests/app/service_invite/test_service_invite_rest.py @@ -400,33 +400,32 @@ def test_get_invited_user_404s_if_invite_doesnt_exist( assert json_resp["result"] == "error" -def test_get_service_invite_data_with_invite( - admin_request, - mocker -): - redis_key = "service-invite-j.k@fake.gov" - expected_user_data = b'{"from_user_id": ["7480cdcf-fa31-42b8-a4bf-2cd4d7a9b4f4"], "service_id": "721b0aa6-2447-4bcd-91fc-26d576f2bbff", "permissions": ["manage_api_keys"], "folder_permissions": []}' # noqa +def test_get_service_invite_data_with_invite(admin_request, mocker): + redis_key = "service-invite-j.k@fake.gov" + expected_user_data = b'{"from_user_id": ["7480cdcf-fa31-42b8-a4bf-2cd4d7a9b4f4"], "service_id": "721b0aa6-2447-4bcd-91fc-26d576f2bbff", "permissions": ["manage_api_keys"], "folder_permissions": []}' # noqa expected_status = 200 - mocker.patch("app.service_invite.rest.redis_store.raw_get", return_value=expected_user_data) - json_resp = json.loads(admin_request.get( - "service_invite.get_service_invite_data", - redis_key=redis_key, - _expected_status=expected_status, - )) + mocker.patch( + "app.service_invite.rest.redis_store.raw_get", return_value=expected_user_data + ) + json_resp = json.loads( + admin_request.get( + "service_invite.get_service_invite_data", + redis_key=redis_key, + _expected_status=expected_status, + ) + ) assert json_resp["permissions"] == ["manage_api_keys"] -def test_get_service_invite_data_without_invite( - admin_request, - mocker -): - redis_key = "service-invite-j.k@fake.gov" - +def test_get_service_invite_data_without_invite(admin_request, mocker): + redis_key = "service-invite-j.k@fake.gov" mocker.patch("app.service_invite.rest.redis_store.raw_get", return_value=None) - with pytest.raises(Exception): - json_resp = json.loads(admin_request.get( - "service_invite.get_service_invite_data", - redis_key=redis_key, - )) + with pytest.raises(BaseException, match="No service invite data"): + json.loads( + admin_request.get( + "service_invite.get_service_invite_data", + redis_key=redis_key, + ) + )