1212 create_mtls_session ,
1313 fetch_with_retry_mtls ,
1414)
15+ from lambdas .tests .e2e .helpers .data_helper import PdmDataHelper
1516
1617
17- def create_upload_payload (pdm_record ):
18+ def create_upload_payload (record ):
1819 """Helper to build DocumentReference payload."""
1920 payload = {
2021 "resourceType" : "DocumentReference" ,
@@ -30,21 +31,21 @@ def create_upload_payload(pdm_record):
3031 "subject" : {
3132 "identifier" : {
3233 "system" : "https://fhir.nhs.uk/Id/nhs-number" ,
33- "value" : pdm_record ["nhs_number" ],
34+ "value" : record ["nhs_number" ],
3435 }
3536 },
3637 "author" : [
3738 {
3839 "identifier" : {
3940 "system" : "https://fhir.nhs.uk/Id/ods-organization-code" ,
40- "value" : pdm_record ["ods" ],
41+ "value" : record ["ods" ],
4142 }
4243 }
4344 ],
4445 "custodian" : {
4546 "identifier" : {
4647 "system" : "https://fhir.nhs.uk/Id/ods-organization-code" ,
47- "value" : pdm_record ["ods" ],
48+ "value" : record ["ods" ],
4849 }
4950 },
5051 "content" : [
@@ -53,13 +54,13 @@ def create_upload_payload(pdm_record):
5354 "creation" : "2023-01-01" ,
5455 "contentType" : "application/pdf" ,
5556 "language" : "en-GB" ,
56- "title" : "1of1_pdm_record_ [Paula Esme VESEY]_[9730153973]_[22-01-1960].pdf" ,
57+ "title" : "1of1_record_ [Paula Esme VESEY]_[9730153973]_[22-01-1960].pdf" ,
5758 }
5859 }
5960 ],
6061 }
61- if "data" in pdm_record :
62- payload ["content" ][0 ]["attachment" ]["data" ] = pdm_record ["data" ]
62+ if "data" in record :
63+ payload ["content" ][0 ]["attachment" ]["data" ] = record ["data" ]
6364 return json .dumps (payload )
6465
6566
@@ -84,15 +85,15 @@ def retrieve_document_with_retry(session, doc_id, condition):
8485
8586
8687def test_create_document_base64 (test_data ):
87- pdm_record = {
88+ record = {
8889 "ods" : "H81109" ,
8990 "nhs_number" : "9912003071" ,
9091 }
9192
9293 sample_pdf_path = os .path .join (os .path .dirname (__file__ ), "files" , "dummy.pdf" )
9394 with open (sample_pdf_path , "rb" ) as f :
94- pdm_record ["data" ] = base64 .b64encode (f .read ()).decode ("utf-8" )
95- payload = create_upload_payload (pdm_record )
95+ record ["data" ] = base64 .b64encode (f .read ()).decode ("utf-8" )
96+ payload = create_upload_payload (record )
9697
9798 session = create_mtls_session ()
9899 raw_upload_response = upload_document (session , payload )
@@ -103,8 +104,8 @@ def test_create_document_base64(test_data):
103104 attachment_url = upload_response ["content" ][0 ]["attachment" ]["url" ]
104105 assert f"/DocumentReference/{ PDM_SNOMED } ~" in attachment_url
105106
106- pdm_record ["id" ] = raw_upload_response .json ()["id" ].split ("~" )[1 ]
107- test_data .append (pdm_record )
107+ record ["id" ] = raw_upload_response .json ()["id" ].split ("~" )[1 ]
108+ test_data .append (record )
108109
109110 def condition (response_json ):
110111 logging .info (response_json )
@@ -121,15 +122,15 @@ def condition(response_json):
121122
122123
123124def test_create_document_presign_fails ():
124- pdm_record = {
125+ record = {
125126 "ods" : "H81109" ,
126127 "nhs_number" : "9912003071" ,
127128 }
128129
129130 sample_pdf_path = os .path .join (os .path .dirname (__file__ ), "files" , "big-dummy.pdf" )
130131 with open (sample_pdf_path , "rb" ) as f :
131- pdm_record ["data" ] = base64 .b64encode (f .read ()).decode ("utf-8" )
132- payload = create_upload_payload (pdm_record )
132+ record ["data" ] = base64 .b64encode (f .read ()).decode ("utf-8" )
133+ payload = create_upload_payload (record )
133134
134135 session = create_mtls_session ()
135136 upload_response = upload_document (session , payload )
@@ -138,18 +139,18 @@ def test_create_document_presign_fails():
138139
139140
140141def test_create_document_virus (test_data ):
141- pdm_record = {
142+ record = {
142143 "ods" : "H81109" ,
143144 "nhs_number" : "9730154260" ,
144145 }
145- payload = create_upload_payload (pdm_record )
146+ payload = create_upload_payload (record )
146147 session = create_mtls_session ()
147148
148149 retrieve_response = upload_document (session , payload )
149150 upload_response = retrieve_response .json ()
150151
151- pdm_record ["id" ] = upload_response ["id" ].split ("~" )[1 ]
152- test_data .append (pdm_record )
152+ record ["id" ] = upload_response ["id" ].split ("~" )[1 ]
153+ test_data .append (record )
153154
154155 # Presigned upload
155156 presign_uri = upload_response ["content" ][0 ]["attachment" ]["url" ]
@@ -191,15 +192,15 @@ def condition(response_json):
191192def test_search_edge_cases (
192193 nhs_number , expected_status , expected_code , expected_diagnostics
193194):
194- pdm_record = {
195+ record = {
195196 "ods" : "H81109" ,
196197 "nhs_number" : f"{ nhs_number } " ,
197198 }
198199
199200 sample_pdf_bytes = b"Sample PDF Content"
200- pdm_record ["data" ] = base64 .b64encode (sample_pdf_bytes ).decode ("utf-8" )
201+ record ["data" ] = base64 .b64encode (sample_pdf_bytes ).decode ("utf-8" )
201202
202- payload = create_upload_payload (pdm_record )
203+ payload = create_upload_payload (record )
203204 session = create_mtls_session ()
204205 response = upload_document (session , payload )
205206 assert response .status_code == expected_status
@@ -213,15 +214,15 @@ def test_search_edge_cases(
213214
214215
215216def test_forbidden_with_invalid_cert (temp_cert_and_key ):
216- pdm_record = {
217+ record = {
217218 "ods" : "H81109" ,
218219 "nhs_number" : "9912003071" ,
219220 }
220221
221222 sample_pdf_bytes = b"Sample PDF Content"
222- pdm_record ["data" ] = base64 .b64encode (sample_pdf_bytes ).decode ("utf-8" )
223+ record ["data" ] = base64 .b64encode (sample_pdf_bytes ).decode ("utf-8" )
223224
224- payload = create_upload_payload (pdm_record )
225+ payload = create_upload_payload (record )
225226
226227 # Use an invalid cert that is trusted by TLS but fails truststore validation
227228 cert_path , key_path = temp_cert_and_key
@@ -234,3 +235,28 @@ def test_forbidden_with_invalid_cert(temp_cert_and_key):
234235 body = response .json ()
235236 assert response .status_code == 403
236237 assert body ["message" ] == "Forbidden"
238+
239+
240+ def test_create_document_saves_raw (test_data ):
241+ record = {
242+ "ods" : "H81109" ,
243+ "nhs_number" : "9912003071" ,
244+ }
245+
246+ sample_pdf_path = os .path .join (os .path .dirname (__file__ ), "files" , "dummy.pdf" )
247+ with open (sample_pdf_path , "rb" ) as f :
248+ record ["data" ] = base64 .b64encode (f .read ()).decode ("utf-8" )
249+ payload = create_upload_payload (record )
250+
251+ session = create_mtls_session ()
252+ raw_upload_response = upload_document (session , payload )
253+ assert raw_upload_response .status_code == 200
254+
255+ json_response = raw_upload_response .json ()
256+ record ["id" ] = json_response .get ("id" )
257+ pdm_data_helper = PdmDataHelper ()
258+ doc_ref = pdm_data_helper .retrieve_document_reference (record = record )
259+ assert "Item" in doc_ref
260+ assert "RawRequest" in doc_ref ["Item" ]
261+ assert doc_ref ["Item" ]["RawRequest" ]
262+ assert doc_ref ["Item" ]["RawRequest" ] == payload
0 commit comments