Skip to content

Commit 7cbedca

Browse files
Merge branch 'develop' into feature/made14-NRL-1631-multi-pointer-warnings
2 parents 33022d4 + 18196ea commit 7cbedca

File tree

17 files changed

+132
-66
lines changed

17 files changed

+132
-66
lines changed

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ truststore-build-ca: check-warn ## Build a CA (Certificate Authority)
201201
truststore-build-cert: check-warn ## Build a certificate
202202
@./scripts/truststore.sh build-cert "$(CA_NAME)" "$(CERT_NAME)" "$(CERT_SUBJECT)"
203203

204+
truststore-pull-all: check-warn ## Pull all certificates
205+
@./scripts/truststore.sh pull-all "$(ENV)"
206+
204207
truststore-pull-server: check-warn ## Pull a server certificate
205208
@./scripts/truststore.sh pull-server "$(ENV)"
206209

README.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,36 @@ Then install all the dependency packages with:
3737
make configure
3838
```
3939

40+
### Set up AWS CLI access
41+
42+
There are several ways to set up your AWS CLI access. The recommended way is to use [granted](https://docs.commonfate.io/granted/getting-started). Follow the instructions on their website to install and configure `granted`.
43+
44+
One of the gotchas with using `granted` is that you need to ensure that you source the environment variables into your shell session. You can do this by running:
45+
46+
```
47+
source assume <profile>
48+
```
49+
50+
Where `<profile>` is one of the profiles which should be in your `~/.aws/config`. You can customize the profile names to your liking.
51+
52+
From here on, you can use the AWS CLI as normal and run commands that need AWS access on that terminal session.
53+
54+
As a short guideline about profiles to assume for a typical workflow:
55+
56+
- Assume mgmt account for stack specific terraform deployment as indicated in `terraform/infrastructure/README.md`.
57+
- Assume the specific environment for running feature tests against that environment.
58+
59+
### Set up NRLF certificates
60+
61+
In order to execute make commands that need AWS access, you will need to pull the NRLF certificates.
62+
In order to do this, make sure you have AWS CLI installed and configured, then run:
63+
64+
```
65+
make ENV=env truststore-pull-all
66+
```
67+
68+
Where `env` is one of `dev`, `qa` , `int`, `ref` or `prod`.
69+
4070
## Getting Started
4171

4272
To build packages:

api/producer/createDocumentReference/tests/test_create_document_reference.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def test_create_document_reference_happy_path(repository: DocumentPointerReposit
4545
assert result == {
4646
"statusCode": "201",
4747
"headers": {
48-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
48+
"Location": "/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
4949
**default_response_headers(),
5050
},
5151
"isBase64Encoded": False,
@@ -111,7 +111,7 @@ def test_create_document_reference_happy_path_with_ssp(
111111
assert result == {
112112
"statusCode": "201",
113113
"headers": {
114-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
114+
"Location": "/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
115115
**default_response_headers(),
116116
},
117117
"isBase64Encoded": False,
@@ -1270,7 +1270,7 @@ def test_create_document_reference_supersede_deletes_old_pointers_replace(
12701270
assert result == {
12711271
"statusCode": "201",
12721272
"headers": {
1273-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
1273+
"Location": "/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
12741274
**default_response_headers(),
12751275
},
12761276
"isBase64Encoded": False,
@@ -1329,7 +1329,7 @@ def test_create_document_reference_supersede_succeeds_with_toggle(
13291329
assert result == {
13301330
"statusCode": "201",
13311331
"headers": {
1332-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
1332+
"Location": "/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
13331333
**default_response_headers(),
13341334
},
13351335
"isBase64Encoded": False,
@@ -1444,7 +1444,7 @@ def test_create_document_reference_create_relatesto_not_replaces(
14441444
assert result == {
14451445
"statusCode": "201",
14461446
"headers": {
1447-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
1447+
"Location": "/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
14481448
**default_response_headers(),
14491449
},
14501450
"isBase64Encoded": False,
@@ -1496,7 +1496,7 @@ def test_create_document_reference_with_date_ignored(
14961496
assert result == {
14971497
"statusCode": "201",
14981498
"headers": {
1499-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
1499+
"Location": "/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
15001500
**default_response_headers(),
15011501
},
15021502
"isBase64Encoded": False,
@@ -1562,7 +1562,7 @@ def test_create_document_reference_with_date_and_meta_lastupdated_ignored(
15621562
assert result == {
15631563
"statusCode": "201",
15641564
"headers": {
1565-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
1565+
"Location": "/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
15661566
**default_response_headers(),
15671567
},
15681568
"isBase64Encoded": False,
@@ -1626,7 +1626,7 @@ def test_create_document_reference_with_date_overidden(
16261626
assert result == {
16271627
"statusCode": "201",
16281628
"headers": {
1629-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
1629+
"Location": "/DocumentReference/Y05868-00000000-0000-0000-0000-000000000001",
16301630
**default_response_headers(),
16311631
},
16321632
"isBase64Encoded": False,

api/producer/upsertDocumentReference/tests/test_upsert_document_reference.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def test_upsert_document_reference_happy_path(repository: DocumentPointerReposit
4343
assert result == {
4444
"statusCode": "201",
4545
"headers": {
46-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-99999-99999-999999",
46+
"Location": "/DocumentReference/Y05868-99999-99999-999999",
4747
**default_response_headers(),
4848
},
4949
"isBase64Encoded": False,
@@ -105,7 +105,7 @@ def test_upsert_document_reference_happy_path_with_ssp(
105105
assert result == {
106106
"statusCode": "201",
107107
"headers": {
108-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-99999-99999-999999",
108+
"Location": "/DocumentReference/Y05868-99999-99999-999999",
109109
**default_response_headers(),
110110
},
111111
"isBase64Encoded": False,
@@ -915,7 +915,7 @@ def test_upsert_document_reference_invalid_relatesto_not_exists_still_creates_wi
915915
assert result == {
916916
"statusCode": "201",
917917
"headers": {
918-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-99999-99999-999999",
918+
"Location": "/DocumentReference/Y05868-99999-99999-999999",
919919
**default_response_headers(),
920920
},
921921
"isBase64Encoded": False,
@@ -1249,7 +1249,7 @@ def test_upsert_document_reference_supersede_deletes_old_pointers_replace(
12491249
assert result == {
12501250
"statusCode": "201",
12511251
"headers": {
1252-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-99999-99999-111111",
1252+
"Location": "/DocumentReference/Y05868-99999-99999-111111",
12531253
**default_response_headers(),
12541254
},
12551255
"isBase64Encoded": False,
@@ -1307,7 +1307,7 @@ def test_upsert_document_reference_supersede_succeeds_with_toggle(
13071307
assert result == {
13081308
"statusCode": "201",
13091309
"headers": {
1310-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-99999-99999-999999",
1310+
"Location": "/DocumentReference/Y05868-99999-99999-999999",
13111311
**default_response_headers(),
13121312
},
13131313
"isBase64Encoded": False,
@@ -1421,7 +1421,7 @@ def test_upsert_document_reference_create_relatesto_not_replaces(
14211421
assert result == {
14221422
"statusCode": "201",
14231423
"headers": {
1424-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-99999-99999-111111",
1424+
"Location": "/DocumentReference/Y05868-99999-99999-111111",
14251425
**default_response_headers(),
14261426
},
14271427
"isBase64Encoded": False,
@@ -1472,7 +1472,7 @@ def test_upsert_document_reference_with_date_ignored(
14721472
assert result == {
14731473
"statusCode": "201",
14741474
"headers": {
1475-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-99999-99999-999999",
1475+
"Location": "/DocumentReference/Y05868-99999-99999-999999",
14761476
**default_response_headers(),
14771477
},
14781478
"isBase64Encoded": False,
@@ -1534,7 +1534,7 @@ def test_upsert_document_reference_with_date_and_meta_lastupdated_ignored(
15341534
assert result == {
15351535
"statusCode": "201",
15361536
"headers": {
1537-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-99999-99999-999999",
1537+
"Location": "/DocumentReference/Y05868-99999-99999-999999",
15381538
**default_response_headers(),
15391539
},
15401540
"isBase64Encoded": False,
@@ -1594,7 +1594,7 @@ def test_upsert_document_reference_with_date_overidden(
15941594
assert result == {
15951595
"statusCode": "201",
15961596
"headers": {
1597-
"Location": "/producer/FHIR/R4/DocumentReference/Y05868-99999-99999-999999",
1597+
"Location": "/DocumentReference/Y05868-99999-99999-999999",
15981598
**default_response_headers(),
15991599
},
16001600
"isBase64Encoded": False,

layer/nrlf/core/constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class Source(Enum):
4848
X_CORRELATION_ID_HEADER = "X-Correlation-Id"
4949

5050

51-
PRODUCER_URL_PATH = "/producer/FHIR/R4/DocumentReference"
51+
PRODUCER_URL_PATH = "/DocumentReference"
5252

5353

5454
class PointerTypes(Enum):
Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11

22
module "dev-custom-domain-name" {
3-
source = "../modules/env-custom-domain-name"
4-
domain_name = var.dev_api_domain_name
5-
domain_zone = aws_route53_zone.dev-ns.name
6-
mtls_certificate_file = "s3://${module.dev-truststore-bucket.bucket_name}/${module.dev-truststore-bucket.certificates_object_key}"
3+
source = "../modules/env-custom-domain-name"
4+
domain_name = var.dev_api_domain_name
5+
domain_zone = aws_route53_zone.dev-ns.name
6+
mtls_certificate_file = "s3://${module.dev-truststore-bucket.bucket_name}/${module.dev-truststore-bucket.certificates_object_key}"
7+
mtls_certificate_file_version = module.dev-truststore-bucket.certificates_object_version
78
}
89

910
module "devsandbox-custom-domain-name" {
10-
source = "../modules/env-custom-domain-name"
11-
domain_name = var.devsandbox_api_domain_name
12-
domain_zone = aws_route53_zone.dev-ns.name
13-
mtls_certificate_file = "s3://${module.dev-truststore-bucket.bucket_name}/${module.dev-truststore-bucket.certificates_object_key}"
11+
source = "../modules/env-custom-domain-name"
12+
domain_name = var.devsandbox_api_domain_name
13+
domain_zone = aws_route53_zone.dev-ns.name
14+
mtls_certificate_file = "s3://${module.dev-truststore-bucket.bucket_name}/${module.dev-truststore-bucket.certificates_object_key}"
15+
mtls_certificate_file_version = module.dev-truststore-bucket.certificates_object_version
1416
}

terraform/account-wide-infrastructure/dev/dynamodb__pointers-table.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module "dev-pointers-table" {
22
source = "../modules/pointers-table"
33
name_prefix = "nhsd-nrlf--dev"
4-
enable_backups = true
4+
enable_backups = false
55
}
66

77
module "dev-sandbox-pointers-table" {

terraform/account-wide-infrastructure/dev/s3.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module "dev-permissions-store-bucket" {
22
source = "../modules/permissions-store-bucket"
33
name_prefix = "nhsd-nrlf--dev"
4-
enable_backups = true
4+
enable_backups = false
55
}
66

77
module "dev-sandbox-permissions-store-bucket" {
@@ -13,7 +13,7 @@ module "dev-truststore-bucket" {
1313
source = "../modules/truststore-bucket"
1414
name_prefix = "nhsd-nrlf--dev"
1515
server_certificate_file = "../../../truststore/server/dev.pem"
16-
enable_backups = true
16+
enable_backups = false
1717
}
1818

1919
module "dev-sandbox-truststore-bucket" {

terraform/account-wide-infrastructure/mgmt/iam__developer-role.tf

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,19 @@ module "developer_policy" {
9999
"${data.aws_s3_bucket.ci_logging.arn}/*"
100100
]
101101
},
102+
{
103+
Action = [
104+
"s3:PutObject",
105+
"s3:GetObject",
106+
"s3:DeleteObject"
107+
]
108+
Effect = "Deny"
109+
Resource = [
110+
"${data.aws_s3_bucket.truststore.arn}/ca/prod*",
111+
"${data.aws_s3_bucket.truststore.arn}/client/prod*",
112+
"${data.aws_s3_bucket.truststore.arn}/server/prod*"
113+
]
114+
},
102115
{
103116
Action = [
104117
"s3:GetObject"

terraform/account-wide-infrastructure/modules/env-custom-domain-name/apigateway.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ resource "aws_api_gateway_domain_name" "domain" {
77
}
88

99
mutual_tls_authentication {
10-
truststore_uri = var.mtls_certificate_file
10+
truststore_uri = var.mtls_certificate_file
11+
truststore_version = var.mtls_certificate_file_version
1112
}
1213

1314
depends_on = [

0 commit comments

Comments
 (0)