Skip to content

Commit 6dfb651

Browse files
committed
[PRMP-1302] Create sandbox for nrl api with stubbed responses
1 parent 59cf7d1 commit 6dfb651

File tree

7 files changed

+329
-0
lines changed

7 files changed

+329
-0
lines changed

infrastructure/README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,26 @@
162162
| [aws_api_gateway_domain_name.custom_api_domain](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_domain_name) | resource |
163163
| [aws_api_gateway_gateway_response.bad_gateway_response](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_gateway_response) | resource |
164164
| [aws_api_gateway_gateway_response.unauthorised_response](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_gateway_response) | resource |
165+
| [aws_api_gateway_integration.get_document_reference_mock_integration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_integration) | resource |
166+
| [aws_api_gateway_integration_response.get_documenet_reference_mock_200_response](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_integration_response) | resource |
167+
| [aws_api_gateway_integration_response.get_documenet_reference_mock_400_response](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_integration_response) | resource |
168+
| [aws_api_gateway_integration_response.get_documenet_reference_mock_401_response](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_integration_response) | resource |
169+
| [aws_api_gateway_integration_response.get_documenet_reference_mock_403_response](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_integration_response) | resource |
170+
| [aws_api_gateway_integration_response.get_documenet_reference_mock_404_response](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_integration_response) | resource |
165171
| [aws_api_gateway_method.get_document_reference](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_method) | resource |
166172
| [aws_api_gateway_method.login_proxy_method](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_method) | resource |
173+
| [aws_api_gateway_method.sandbox_get_document_reference](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_method) | resource |
174+
| [aws_api_gateway_method_response.response_200](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_method_response) | resource |
175+
| [aws_api_gateway_method_response.response_400](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_method_response) | resource |
176+
| [aws_api_gateway_method_response.response_401](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_method_response) | resource |
177+
| [aws_api_gateway_method_response.response_403](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_method_response) | resource |
178+
| [aws_api_gateway_method_response.response_404](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_method_response) | resource |
167179
| [aws_api_gateway_resource.auth_resource](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_resource) | resource |
168180
| [aws_api_gateway_resource.get_document_reference](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_resource) | resource |
169181
| [aws_api_gateway_resource.login_resource](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_resource) | resource |
182+
| [aws_api_gateway_resource.nrl_sandbox](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_resource) | resource |
183+
| [aws_api_gateway_resource.sandbox_get_document_reference](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_resource) | resource |
184+
| [aws_api_gateway_resource.sandbox_get_document_reference_path_parametre](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_resource) | resource |
170185
| [aws_api_gateway_rest_api.ndr_doc_store_api](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_rest_api) | resource |
171186
| [aws_api_gateway_stage.ndr_api](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_stage) | resource |
172187
| [aws_api_gateway_usage_plan.apim](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_usage_plan) | resource |
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
locals {
2+
mock_200_response = file("${path.module}/nrl_mock_responses/200_response.json")
3+
mock_400_response = file("${path.module}/nrl_mock_responses/400_response.json")
4+
mock_401_response = file("${path.module}/nrl_mock_responses/401_response.json")
5+
mock_403_response = file("${path.module}/nrl_mock_responses/403_response.json")
6+
mock_404_response = file("${path.module}/nrl_mock_responses/404_response.json")
7+
}
8+
9+
resource "aws_api_gateway_resource" "nrl_sandbox" {
10+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
11+
parent_id = aws_api_gateway_rest_api.ndr_doc_store_api.root_resource_id
12+
path_part = "sandbox"
13+
}
14+
15+
resource "aws_api_gateway_resource" "sandbox_get_document_reference" {
16+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
17+
parent_id = aws_api_gateway_resource.nrl_sandbox.id
18+
path_part = "DocumentReference"
19+
}
20+
21+
resource "aws_api_gateway_resource" "sandbox_get_document_reference_path_parametre" {
22+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
23+
parent_id = aws_api_gateway_resource.sandbox_get_document_reference.id
24+
path_part = "{id}"
25+
}
26+
27+
resource "aws_api_gateway_method" "sandbox_get_document_reference" {
28+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
29+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
30+
http_method = "GET"
31+
authorization = "NONE"
32+
api_key_required = true
33+
request_parameters = {
34+
"method.request.path.id" = true
35+
}
36+
}
37+
38+
39+
resource "aws_api_gateway_integration" "get_document_reference_mock_integration" {
40+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
41+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
42+
type = "MOCK"
43+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
44+
request_templates = {
45+
"application/json" = <<EOF
46+
{
47+
#if ( $input.params('id') == '16521000000101~f9ed81db-f90a-42d4-b7e4-d554d8f338fd' )
48+
"statusCode": 200
49+
#elseif ( $input.params('id') == '400' )
50+
"statusCode": 400
51+
#elseif ( $input.params('id') == '401' )
52+
"statusCode": 401
53+
#elseif ( $input.params('id') == '403' )
54+
"statusCode": 403
55+
#elseif ( $input.params('id') == '404' )
56+
"statusCode": 404
57+
#end
58+
}
59+
EOF
60+
}
61+
}
62+
63+
resource "aws_api_gateway_method_response" "response_200" {
64+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
65+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
66+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
67+
status_code = "200"
68+
}
69+
70+
resource "aws_api_gateway_integration_response" "get_documenet_reference_mock_200_response" {
71+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
72+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
73+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
74+
status_code = aws_api_gateway_method_response.response_200.status_code
75+
selection_pattern = "200"
76+
response_templates = {
77+
"application/json" = local.mock_200_response
78+
}
79+
}
80+
81+
resource "aws_api_gateway_method_response" "response_400" {
82+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
83+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
84+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
85+
status_code = "400"
86+
}
87+
88+
resource "aws_api_gateway_integration_response" "get_documenet_reference_mock_400_response" {
89+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
90+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
91+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
92+
status_code = aws_api_gateway_method_response.response_400.status_code
93+
selection_pattern = "400"
94+
response_templates = {
95+
"application/json" = local.mock_400_response
96+
}
97+
}
98+
99+
resource "aws_api_gateway_method_response" "response_401" {
100+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
101+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
102+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
103+
status_code = "401"
104+
}
105+
106+
resource "aws_api_gateway_integration_response" "get_documenet_reference_mock_401_response" {
107+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
108+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
109+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
110+
status_code = aws_api_gateway_method_response.response_401.status_code
111+
selection_pattern = "401"
112+
response_templates = {
113+
"application/json" = local.mock_401_response
114+
}
115+
}
116+
117+
resource "aws_api_gateway_method_response" "response_403" {
118+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
119+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
120+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
121+
status_code = "403"
122+
}
123+
124+
resource "aws_api_gateway_integration_response" "get_documenet_reference_mock_403_response" {
125+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
126+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
127+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
128+
status_code = aws_api_gateway_method_response.response_403.status_code
129+
selection_pattern = "403"
130+
response_templates = {
131+
"application/json" = local.mock_403_response
132+
}
133+
}
134+
135+
resource "aws_api_gateway_method_response" "response_404" {
136+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
137+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
138+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
139+
status_code = "404"
140+
}
141+
142+
resource "aws_api_gateway_integration_response" "get_documenet_reference_mock_404_response" {
143+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
144+
resource_id = aws_api_gateway_resource.sandbox_get_document_reference_path_parametre.id
145+
http_method = aws_api_gateway_method.sandbox_get_document_reference.http_method
146+
status_code = aws_api_gateway_method_response.response_404.status_code
147+
selection_pattern = "404"
148+
response_templates = {
149+
"application/json" = local.mock_404_response
150+
}
151+
}
152+
153+
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
{
2+
"resourceType": "DocumentReference",
3+
"status": "current",
4+
"type": {
5+
"coding": [
6+
{
7+
"system": "http://snomed.info/sct",
8+
"code": "16521000000101",
9+
"display": "Lloyd George record folder"
10+
}
11+
]
12+
},
13+
"category": [
14+
{
15+
"coding": [
16+
{
17+
"system": "http://snomed.info/sct",
18+
"code": "734163000",
19+
"display": "Care plan"
20+
}
21+
]
22+
}
23+
],
24+
"subject": {
25+
"identifier": {
26+
"system": "https://fhir.nhs.uk/Id/nhs-number",
27+
"value": "9000000009"
28+
}
29+
},
30+
"author": [
31+
{
32+
"identifier": {
33+
"system": "https://fhir.nhs.uk/Id/ods-organization-code",
34+
"value": "Y12345"
35+
}
36+
}
37+
],
38+
"custodian": {
39+
"identifier": {
40+
"system": "https://fhir.nhs.uk/Id/ods-organization-code",
41+
"value": "Y12345"
42+
}
43+
},
44+
"content": [
45+
{
46+
"attachment": {
47+
"contentType": "application/pdf",
48+
"language": "en-GB",
49+
"url": "https://fake-url.com",
50+
"title": "document.pdf",
51+
"creation": "2024-01-01T12:00:00.000Z"
52+
},
53+
"format": {
54+
"system": "https://fhir.nhs.uk/England/CodeSystem/England-NRLFormatCode",
55+
"code": "urn:nhs-ic:unstructured",
56+
"display": "Unstructured document"
57+
},
58+
"extension": [
59+
{
60+
"valueCodeableConcept": {
61+
"coding": [
62+
{
63+
"system": "https://fhir.nhs.uk/England/CodeSystem/England-NRLContentStability",
64+
"code": "static",
65+
"display": "Static"
66+
}
67+
]
68+
},
69+
"url": "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-ContentStability"
70+
}
71+
]
72+
}
73+
],
74+
"context": {
75+
"practiceSetting": {
76+
"coding": [
77+
{
78+
"system": "http://snomed.info/sct",
79+
"code": "1060971000000108",
80+
"display": "General practice service"
81+
}
82+
]
83+
}
84+
}
85+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"resourceType": "OperationOutcome",
3+
"issue": [
4+
{
5+
"severity": "error",
6+
"code": "exception",
7+
"details": {
8+
"coding": [
9+
{
10+
"system": "http://hl7.org/fhir/issue-type",
11+
"code": "invalid",
12+
"display": "Invalid"
13+
}
14+
]
15+
},
16+
"diagnostics":"Invalid request"
17+
}
18+
]
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"resourceType": "OperationOutcome",
3+
"issue": [
4+
{
5+
"severity": "error",
6+
"code": "exception",
7+
"details": {
8+
"coding": [
9+
{
10+
"system": "http://hl7.org/fhir/issue-type",
11+
"code": "unknown",
12+
"display": "Unknown"
13+
}
14+
]
15+
},
16+
"diagnostics":"User is unauthorised to view record"
17+
}
18+
]
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"resourceType": "OperationOutcome",
3+
"issue": [
4+
{
5+
"severity": "error",
6+
"code": "exception",
7+
"details": {
8+
"coding": [
9+
{
10+
"system": "http://hl7.org/fhir/issue-type",
11+
"code": "forbidden",
12+
"display": "Forbidden"
13+
}
14+
]
15+
},
16+
"diagnostics":"An error occurred while fetching the document"
17+
}
18+
]
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"resourceType": "OperationOutcome",
3+
"issue": [
4+
{
5+
"severity": "error",
6+
"code": "exception",
7+
"details": {
8+
"coding": [
9+
{
10+
"system": "http://hl7.org/fhir/issue-type",
11+
"code": "not-found",
12+
"display": "Not Found"
13+
}
14+
]
15+
},
16+
"diagnostics":"Document reference not found"
17+
}
18+
]
19+
}

0 commit comments

Comments
 (0)