Skip to content

Commit c982ea8

Browse files
NRL-1928 Spy on logging and more shiny testing
1 parent 0676227 commit c982ea8

File tree

3 files changed

+81
-7
lines changed

3 files changed

+81
-7
lines changed

layer/nrlf/core/request.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ def _fetch_ods_app_id_headers(headers: dict[str, str]):
1919

2020
if not ods_code or len(ods_code.strip()) == 0:
2121
logger.log(
22-
LogReference.HANDLER003a, headers_names=case_insensitive_headers.keys()
22+
code=LogReference.HANDLER003a,
23+
headers_names=list(case_insensitive_headers.keys()),
2324
)
2425

2526
nrl_app_id = case_insensitive_headers.get("nhsd-nrl-app-id")
2627
if not nrl_app_id or len(nrl_app_id.strip()) == 0:
2728
logger.log(
28-
LogReference.HANDLER003b, headers_names=case_insensitive_headers.keys()
29+
code=LogReference.HANDLER003b,
30+
headers_names=list(case_insensitive_headers.keys()),
2931
)
3032

3133
return ods_code, nrl_app_id

layer/nrlf/core/tests/test_authoriser.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from nrlf.core.authoriser import get_pointer_permissions_v2, parse_permissions_file
2+
from nrlf.core.logger import LogReference, logger
23
from nrlf.core.request import parse_headers
34
from nrlf.tests.events import create_headers
45

@@ -22,11 +23,13 @@ def test_authoriser_parse_permission_file_with_permission_file():
2223
v2_test_lookup_path = "layer/test_permissions/v2"
2324

2425

25-
def test_authoriser_get_v2_permissions_with_pointer_types():
26+
def test_authoriser_get_v2_permissions_with_pointer_types(mocker):
27+
spy = mocker.spy(logger, "log")
28+
29+
expected_lookup_key = "producer/ODS123-app-id/ODS123.json"
2630
connection_metadata = parse_headers(
2731
create_headers(ods_code="ODS123", nrl_app_id="ODS123-app-id")
2832
)
29-
3033
result = get_pointer_permissions_v2(
3134
connection_metadata=connection_metadata,
3235
request_path="/producer/DocumentReference/_search",
@@ -35,12 +38,21 @@ def test_authoriser_get_v2_permissions_with_pointer_types():
3538

3639
assert result.get("types") == ["http://snomed.info/sct|736253001"]
3740

41+
spy.assert_called_with(LogReference.S3PERMISSIONS011, key=expected_lookup_key)
42+
43+
44+
def test_authoriser_parse_v2_permission_file_with_no_permission_file(mocker):
45+
spy = mocker.spy(logger, "log")
46+
expected_lookup_key = "consumer/NotAnApp/NotFound.json"
3847

39-
def test_authoriser_parse_v2_permission_file_with_no_permission_file():
4048
metadata_result = get_pointer_permissions_v2(
41-
connection_metadata=parse_headers(create_headers(ods_code="NotFound")),
49+
connection_metadata=parse_headers(
50+
create_headers(ods_code="NotFound", nrl_app_id="NotAnApp")
51+
),
4252
request_path="/consumer/_status",
4353
lookup_path=v2_test_lookup_path,
4454
)
4555

4656
assert metadata_result == {}
57+
58+
spy.assert_any_call(LogReference.S3PERMISSIONS011, key=expected_lookup_key)

layer/nrlf/core/tests/test_request.py

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,70 @@
33
import pytest
44

55
from nrlf.core.errors import OperationOutcomeError, ParseError
6-
from nrlf.core.request import parse_body, parse_headers
6+
from nrlf.core.logger import LogReference, logger
7+
from nrlf.core.request import _fetch_ods_app_id_headers, parse_body, parse_headers
78
from nrlf.producer.fhir.r4.model import DocumentReference
89
from nrlf.tests.data import load_document_reference_data
910

11+
test_cases = [
12+
(
13+
{
14+
"NHSD-end-USER-organISAtion-oDs": "ODS123",
15+
"nhsd-nrl-app-id": "This-is-an-app-id",
16+
},
17+
"ODS123",
18+
"This-is-an-app-id",
19+
None,
20+
),
21+
(
22+
{
23+
"NHSD-end-USER-organISAtion-oDs": "ODS123",
24+
},
25+
"ODS123",
26+
None,
27+
{
28+
"code": LogReference.HANDLER003b,
29+
"headers_names": ["nhsd-end-user-organisation-ods"],
30+
},
31+
),
32+
(
33+
{
34+
"nHSd-nrL-aPp-Id": "This-is-an-app-id",
35+
},
36+
None,
37+
"This-is-an-app-id",
38+
{
39+
"code": LogReference.HANDLER003a,
40+
"headers_names": ["nhsd-nrl-app-id"],
41+
},
42+
),
43+
(
44+
{},
45+
None,
46+
None,
47+
{
48+
"code": LogReference.HANDLER003b,
49+
"headers_names": [],
50+
},
51+
),
52+
]
53+
54+
55+
@pytest.mark.parametrize(
56+
"headers,expected_ods,expected_app_id,expected_log", test_cases
57+
)
58+
def test_fetch_ods_app_id_headers(
59+
headers, expected_ods, expected_app_id, expected_log, mocker
60+
):
61+
spy = mocker.spy(logger, "log")
62+
ods_code, nrl_app_id = _fetch_ods_app_id_headers(headers)
63+
64+
assert ods_code == expected_ods
65+
assert nrl_app_id == expected_app_id
66+
67+
if expected_log:
68+
spy.assert_called_with(**expected_log)
69+
1070

1171
def test_parse_headers_empty_headers():
1272
headers = {}

0 commit comments

Comments
 (0)