1313from utils .lambda_handler_utils import extract_bearer_token
1414
1515
16+ MOCK_DOCUMENT_REFERENCE_RESULT = {
17+ "entry" : [
18+ {
19+ "resource" : {
20+ "author" : [
21+ {
22+ "identifier" : {
23+ "system" : "https://fhir.nhs.uk/Id/ods-organization-code" ,
24+ "value" : "H81109" ,
25+ }
26+ }
27+ ],
28+ "content" : [
29+ {
30+ "attachment" : {
31+ "contentType" : "application/pdf" ,
32+ "creation" : "2023-01-01" ,
33+ "language" : "en-GB" ,
34+ "title" : "1of1_Lloyd_George_Record_[Holly Lorna MAGAN]_[9449305943]_[29-05-2006].pdf" ,
35+ }
36+ }
37+ ],
38+ "custodian" : {
39+ "identifier" : {
40+ "system" : "https://fhir.nhs.uk/Id/ods-organization-code" ,
41+ "value" : "H81109" ,
42+ }
43+ },
44+ "docStatus" : "final" ,
45+ "meta" : {"versionId" : "1" },
46+ "resourceType" : "DocumentReference" ,
47+ "status" : "current" ,
48+ "subject" : {
49+ "identifier" : {
50+ "system" : "https://fhir.nhs.uk/Id/nhs-number" ,
51+ "value" : "9000000009" ,
52+ }
53+ },
54+ "type" : {
55+ "coding" : [
56+ {
57+ "code" : "16521000000101" ,
58+ "display" : "Lloyd George record folder" ,
59+ "system" : "http://snomed.info/sct" ,
60+ }
61+ ]
62+ },
63+ }
64+ }
65+ ],
66+ "resourceType" : "Bundle" ,
67+ "total" : 1 ,
68+ "type" : "searchset" ,
69+ }
70+
71+
1672@pytest .fixture
1773def valid_nhs_number_event ():
1874 return {
@@ -130,68 +186,14 @@ def mock_dynamic_config_service():
130186def test_lambda_handler_returns_200_with_documents (
131187 mock_document_reference_search_service , valid_nhs_number_event , context , set_env
132188):
133- mock_document_references = {
134- "entry" : [
135- {
136- "resource" : {
137- "author" : [
138- {
139- "identifier" : {
140- "system" : "https://fhir.nhs.uk/Id/ods-organization-code" ,
141- "value" : "H81109" ,
142- }
143- }
144- ],
145- "content" : [
146- {
147- "attachment" : {
148- "contentType" : "application/pdf" ,
149- "creation" : "2023-01-01" ,
150- "language" : "en-GB" ,
151- "title" : "1of1_Lloyd_George_Record_[Holly Lorna MAGAN]_[9449305943]_[29-05-2006].pdf" ,
152- }
153- }
154- ],
155- "custodian" : {
156- "identifier" : {
157- "system" : "https://fhir.nhs.uk/Id/ods-organization-code" ,
158- "value" : "H81109" ,
159- }
160- },
161- "docStatus" : "final" ,
162- "meta" : {"versionId" : "1" },
163- "resourceType" : "DocumentReference" ,
164- "status" : "current" ,
165- "subject" : {
166- "identifier" : {
167- "system" : "https://fhir.nhs.uk/Id/nhs-number" ,
168- "value" : "9000000009" ,
169- }
170- },
171- "type" : {
172- "coding" : [
173- {
174- "code" : "16521000000101" ,
175- "display" : "Lloyd George record folder" ,
176- "system" : "http://snomed.info/sct" ,
177- }
178- ]
179- },
180- }
181- }
182- ],
183- "resourceType" : "Bundle" ,
184- "total" : 1 ,
185- "type" : "searchset" ,
186- }
187189 mock_document_reference_search_service .get_document_references .return_value = (
188- mock_document_references
190+ MOCK_DOCUMENT_REFERENCE_RESULT
189191 )
190192
191193 response = lambda_handler (valid_nhs_number_event , context )
192194
193195 assert response ["statusCode" ] == 200
194- assert json .loads (response ["body" ]) == mock_document_references
196+ assert json .loads (response ["body" ]) == MOCK_DOCUMENT_REFERENCE_RESULT
195197 mock_document_reference_search_service .get_document_references .assert_called_once_with (
196198 nhs_number = "9000000009" ,
197199 return_fhir = True ,
@@ -250,17 +252,14 @@ def test_lambda_handler_returns_400_for_missing_nhs_number(
250252def test_lambda_handler_with_additional_filters (
251253 mock_document_reference_search_service , valid_event_with_filters , context , set_env
252254):
253- mock_document_references = [
254- {"resourceType" : "DocumentReference" , "status" : "current" },
255- ]
256255 mock_document_reference_search_service .get_document_references .return_value = (
257- mock_document_references
256+ MOCK_DOCUMENT_REFERENCE_RESULT
258257 )
259258
260259 response = lambda_handler (valid_event_with_filters , context )
261260
262261 assert response ["statusCode" ] == 200
263- assert json .loads (response ["body" ]) == mock_document_references
262+ assert json .loads (response ["body" ]) == MOCK_DOCUMENT_REFERENCE_RESULT
264263
265264 # Check that the filters were correctly parsed and passed
266265 expected_filters = {"file_type" : "736253002" , "custodian" : "Y12345" }
@@ -283,11 +282,8 @@ def test_lambda_handler_with_auth_validation(
283282 set_env ,
284283):
285284 # Setup mocks
286- mock_document_references = [
287- {"resourceType" : "DocumentReference" , "status" : "current" }
288- ]
289285 mock_document_reference_search_service .get_document_references .return_value = (
290- mock_document_references
286+ MOCK_DOCUMENT_REFERENCE_RESULT
291287 )
292288
293289 # Mock successful authorisation
@@ -303,7 +299,7 @@ def test_lambda_handler_with_auth_validation(
303299 response = lambda_handler (valid_event_with_auth , context )
304300
305301 assert response ["statusCode" ] == 200
306- assert json .loads (response ["body" ]) == mock_document_references
302+ assert json .loads (response ["body" ]) == MOCK_DOCUMENT_REFERENCE_RESULT
307303
308304 # Verify authorisation flow
309305 mock_dynamic_config_service .set_auth_ssm_prefix .assert_called_once ()
0 commit comments