-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdocker-compose.integration-test.yml
More file actions
210 lines (203 loc) · 7.42 KB
/
docker-compose.integration-test.yml
File metadata and controls
210 lines (203 loc) · 7.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
services:
localstack:
image: localstack/localstack:3.0.2
ports:
- '127.0.0.1:4566:4566' # LocalStack Gateway
- '127.0.0.1:4510-4559:4510-4559' # external services port range
env_file:
- 'test/integration/aws.env'
environment:
DEBUG: ${DEBUG:-1}
LS_LOG: WARN # Localstack DEBUG Level
SERVICES: s3,sqs,sns,firehose
LOCALSTACK_HOST: 127.0.0.1
volumes:
- '${TMPDIR:-/tmp}/localstack:/var/lib/localstack'
- './test/integration/start-localstack.sh:/etc/localstack/init/ready.d/start-localstack.sh'
healthcheck:
test: ['CMD', 'curl', 'localhost:4566']
interval: 5s
start_period: 5s
retries: 3
networks:
- forms_test_net
mongo_test:
image: mongo:6.0
container_name: forms-manager-mongo-test
command: ['--replSet', 'rs0', '--bind_ip_all', '--port', '27017']
ports:
- '27018:27017'
volumes:
- mongo_test_data:/data/db
healthcheck:
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongo_test:27017'}]}) }" | mongosh --port 27017 --quiet
interval: 5s
timeout: 30s
start_period: 10s
retries: 30
environment:
MONGO_INITDB_DATABASE: forms-manager-test
networks:
- forms_test_net
oidc:
image: ghcr.io/soluto/oidc-server-mock:0.6.0
container_name: oidc-integration-test
ports:
- '5556:80'
environment:
ISSUER: http://oidc:80
PORT: 80
USERS_CONFIGURATION_PATH: /data/users.yml
CLIENTS_CONFIGURATION_PATH: /data/clients.yml
API_SCOPES_INLINE: |
- Name: "newman-test-client"
API_RESOURCES_INLINE: |
- Name: "newman-test-client"
DisplayName: "Forms Manager API Test Resource"
Scopes: ["newman-test-client"]
UserClaims: ["oid", "groups", "email", "name", "preferred_username", "email_verified"]
SERVER_OPTIONS_INLINE: |
{
"IssuerUri": "http://oidc:80",
"AccessTokenJwtType": "JWT",
"Discovery": {
"ShowKeySet": true
},
"Events": { "RaiseErrorEvents": true, "RaiseSuccessEvents": true, "RaiseInformationEvents": true }
}
volumes:
- ./test/integration/postman/oidc-config:/data:ro
networks:
- forms_test_net
healthcheck:
test:
[
'CMD-SHELL',
'curl -fsS http://localhost:80/.well-known/openid-configuration >/dev/null || exit 1'
]
interval: 10s
timeout: 10s
retries: 18
start_period: 90s
forms-entitlement-api-test:
image: defradigital/forms-entitlement-api:latest
container_name: forms-entitlement-api-test
platform: linux/amd64
environment:
HOST: 0.0.0.0
ENVIRONMENT: local
NODE_ENV: production
PORT: 3004
# Mongo
MONGO_URI: mongodb://mongo_test:27017/forms-entitlement-api?replicaSet=rs0&directConnection=true
MONGO_DATABASE: forms-entitlement-api
# OIDC
OIDC_JWKS_URI: 'http://oidc:80/.well-known/openid-configuration/jwks'
OIDC_VERIFY_AUD: 'newman-test-client'
OIDC_VERIFY_ISS: 'http://oidc:80'
AWS_REGION: eu-west-2
AWS_ACCESS_KEY_ID: test
AWS_SECRET_ACCESS_KEY: test
SYNC_ADMIN_USERS_ENABLED: false
SYNC_ADMIN_USERS_CRON: '0 3 * * *'
TRACING_HEADER: x-trace-id
LOG_ENABLED: true
LOG_FORMAT: pino-pretty
LOG_LEVEL: info
CDP_HTTPS_PROXY: ''
ENABLE_METRICS: false
ENABLE_SECURE_CONTEXT: false
SNS_ENDPOINT: http://host.docker.internal:4566
SNS_TOPIC_ARN: "arn:aws:sns:eu-west-2:000000000000:forms_entitlement_events"
ROLE_EDITOR_GROUP_ID: dummy
AZURE_CLIENT_ID: dummy
AZURE_CLIENT_SECRET: dummy
AZURE_TENANT_ID: dummy
networks:
- forms_test_net
ports:
- '3004:3004'
healthcheck:
test:
[
'CMD-SHELL',
'curl -fsS http://localhost:3004/health >/dev/null || exit 1'
]
interval: 10s
timeout: 10s
retries: 18
start_period: 15s
depends_on:
mongo_test:
condition: service_healthy
oidc:
condition: service_healthy
localstack:
condition: service_healthy
app_test:
image: app-test
build:
context: .
target: production
container_name: forms-manager-app-test
ports:
- '3001:3001'
environment:
HOST: 0.0.0.0
MONGO_URI: mongodb://mongo_test:27017/forms-manager-test?replicaSet=rs0&directConnection=true
MONGO_DATABASE: forms-manager-test
PORT: 3001
NODE_ENV: production
SERVICE_VERSION: integration-test
LOG_ENABLED: true
LOG_LEVEL: info
LOG_FORMAT: ecs
HTTP_PROXY: ''
CDP_HTTPS_PROXY: ''
ENABLE_SECURE_CONTEXT: true
ENABLE_METRICS: true
OIDC_JWKS_URI: 'http://oidc:80/.well-known/openid-configuration/jwks'
OIDC_VERIFY_AUD: 'newman-test-client'
OIDC_VERIFY_ISS: 'http://oidc:80'
FORM_DEF_BUCKET_NAME: form-definition-storage
S3_FORCE_PATH_STYLE: true
S3_ENDPOINT: http://localstack:4566
SNS_ENDPOINT: http://localstack:4566
SNS_TOPIC_ARN: arn:aws:sns:eu-west-2:000000000000:forms_manager_events
AWS_REGION: eu-west-2
AWS_ACCESS_KEY_ID: test
AWS_SECRET_ACCESS_KEY: test
ENTITLEMENT_URL: http://forms-entitlement-api-test:3004
FEATURE_FLAG_PUBLISH_AUDIT_EVENTS: false
FEATURE_FLAG_USE_ENTITLEMENT_API: true
# PUBLIC_KEY is a test value - do not use for any deployments
PUBLIC_KEY_FOR_SECRETS: 'LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUE0WU53YUJjenlBdWpJZ2k2aTBmawpINUVYeGxtTmNBd1AzUkpRaDB2ckxjeDIxU2RCSkFOUU5JWmdTcWhST3ViUlozWTJWQ2Zsbkd3cFVSTTNrY0tFCkNHUlk2Nk5leVUwL3QzS2hVOUY1cG1heVBSVUFiWkRjalFCL0xYbVNGUUdGelZDQlp0ZjBIeHJiSnBUNDFiSGIKR05udFpDdm94WjZQOUJxdU4wa2c0Y1JXcTdyWUozVE1xWXArc1RzQU01UFZwMVh6WklIRFJ2UVJ2bktnMDVUUQovRFA1cXcvYkdwelVsQ01WVU9MTHhxL2xTY040RnhDRTRUUi9kSWNNM25wTU1PUUVjaEhLcEE2SWs3UmhmQml0CjZBSEpINWN2c0dWUTFHUmlvUXBIWXBWclZLRFV5ZmIrS3VzbjlWUTVTQ3JGZDJ3WWRaRzBkdVNOZFp3VklJQm8KVElWZjlrSUMrZjl5YTVLMmcvalJhMXUyVGdNc3UvZnM4UWVRZHk2disxNkFtWFA1cXNXYUtFK00zRkJoRitrZAozbS91YjNJVFRRVmplYWY1M2ZsTVlMZlZmN2NVR2FQN0VIajlUY0dGYVlGTzhuWGNWbS9lT2lkMXBGL3p5NCtzCnpFZG5oOFNRYm5ncElwdFJiMk51Wmw5RWZNR01CTFlyQ3FiWnMyYU1KV0N5M1FGWFZDeTYzUzZhRDkrbzQ1N0cKUDNGVnNZY2d2eHAzTGVTQ0phUHMzL0FlSjh1MUFSeHZwMG02ZjdPLy9yMFFQYzJnd2RyZjRVMUkwdlduclh2eApCc2RMWU5NMXVYVjhMKzExYloxeGpVaFU4QldTd3dnTTdQMGxqVTJ4UE9WbG55MlFGeXh0ZTgzK0E5SXNBcmFxCmthNlhEdDhYZkNZYm84dEpnem9mbEs4Q0F3RUFBUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQ=='
depends_on:
forms-entitlement-api-test:
condition: service_healthy
command: ['npm', 'start', '--ignore-scripts']
networks:
- forms_test_net
newman:
image: postman/newman:latest
container_name: forms-manager-newman-test
environment:
NEWMAN_TOKEN_URL: 'http://oidc:80/connect/token'
NEWMAN_USERNAME: 'newman-service-account'
NEWMAN_PASSWORD: 'newman-mock-password'
NEWMAN_CLIENT_ID: 'newman-test-client'
NEWMAN_CLIENT_SECRET: 'newman-mock-secret'
NEWMAN_SCOPE: 'openid profile email newman-test-client'
NEWMAN_TEST_EMAIL: 'test.email@defra.gov.uk'
API_URL: 'http://app_test:3001'
volumes:
- ./test/integration/postman:/etc/newman
- ./newman-reports:/etc/newman/reports
depends_on:
- app_test
networks:
- forms_test_net
volumes:
mongo_test_data:
networks:
forms_test_net: