diff --git a/.github/actions/acceptance-tests/action.yaml b/.github/actions/acceptance-tests/action.yaml
new file mode 100644
index 0000000..9f0d603
--- /dev/null
+++ b/.github/actions/acceptance-tests/action.yaml
@@ -0,0 +1,53 @@
+name: Acceptance tests
+description: "Run acceptance tests for this repo"
+
+inputs:
+ testType:
+ description: Type of test to run
+ required: true
+
+ targetEnvironment:
+ description: Name of the environment under test
+ required: true
+
+ targetAccountGroup:
+ description: Name of the account group under test
+ default: nhs-notify-client-callbacks-dev
+ required: true
+
+ targetComponent:
+ description: Name of the component under test
+ required: true
+
+runs:
+ using: "composite"
+
+ steps:
+ - name: Fetch terraform output
+ uses: actions/download-artifact@v4
+ with:
+ name: terraform-output-${{ inputs.targetComponent }}
+
+ - name: Get Node version
+ id: nodejs_version
+ shell: bash
+ run: |
+ echo "nodejs_version=$(grep "^nodejs\s" .tool-versions | cut -f2 -d' ')" >> $GITHUB_OUTPUT
+
+ - name: "Repo setup"
+ uses: ./.github/actions/node-install
+ with:
+ GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }}
+
+ - name: "Set PR NUMBER environment variable"
+ shell: bash
+ run: |
+ echo "PR_NUMBER=${{ inputs.targetEnvironment }}" >> $GITHUB_ENV
+
+ - name: Run test - ${{ inputs.testType }}
+ shell: bash
+ env:
+ PROJECT: nhs
+ COMPONENT: ${{ inputs.targetComponent }}
+ run: |
+ make test-${{ inputs.testType }}
diff --git a/.github/actions/node-install/action.yaml b/.github/actions/node-install/action.yaml
new file mode 100644
index 0000000..b1ed2d0
--- /dev/null
+++ b/.github/actions/node-install/action.yaml
@@ -0,0 +1,24 @@
+name: 'npm install and setup'
+description: 'Setup node, authenticate github package repository and perform clean npm install'
+
+inputs:
+ GITHUB_TOKEN:
+ description: "Token for access to github package registry"
+ required: true
+
+runs:
+ using: 'composite'
+ steps:
+ - name: 'Use Node.js'
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: '.tool-versions'
+ registry-url: 'https://npm.pkg.github.com'
+ scope: '@nhsdigital'
+
+ - name: 'Install dependencies'
+ shell: bash
+ env:
+ NODE_AUTH_TOKEN: ${{ inputs.GITHUB_TOKEN }}
+ run: |
+ npm ci
diff --git a/.github/actions/test-types.json b/.github/actions/test-types.json
new file mode 100644
index 0000000..4fe0a8a
--- /dev/null
+++ b/.github/actions/test-types.json
@@ -0,0 +1,3 @@
+[
+ "integration"
+]
diff --git a/.github/workflows/cicd-1-pull-request.yaml b/.github/workflows/cicd-1-pull-request.yaml
index 448e91d..8fb9093 100644
--- a/.github/workflows/cicd-1-pull-request.yaml
+++ b/.github/workflows/cicd-1-pull-request.yaml
@@ -175,9 +175,11 @@ jobs:
--overrides "branch_name=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}"
acceptance-stage: # Recommended maximum execution time is 10 minutes
name: "Acceptance stage"
- needs: [metadata, build-stage]
+ needs: [metadata, build-stage, pr-create-dynamic-environment]
uses: ./.github/workflows/stage-4-acceptance.yaml
- if: needs.metadata.outputs.does_pull_request_exist == 'true' || (github.event_name == 'pull_request' && (github.event.action == 'opened' || github.event.action == 'reopened')) || (github.event_name == 'push' && github.ref == 'refs/heads/main')
+ if: >-
+ contains(fromJSON('["success", "skipped"]'), needs.pr-create-dynamic-environment.result) &&
+ (needs.metadata.outputs.does_pull_request_exist == 'true' || (github.event_name == 'pull_request' && (github.event.action == 'opened' || github.event.action == 'reopened')) || (github.event_name == 'push' && github.ref == 'refs/heads/main'))
with:
build_datetime: "${{ needs.metadata.outputs.build_datetime }}"
build_timestamp: "${{ needs.metadata.outputs.build_timestamp }}"
diff --git a/.github/workflows/stage-4-acceptance.yaml b/.github/workflows/stage-4-acceptance.yaml
index c6dc58e..4ae997e 100644
--- a/.github/workflows/stage-4-acceptance.yaml
+++ b/.github/workflows/stage-4-acceptance.yaml
@@ -36,139 +36,37 @@ on:
required: true
type: string
+permissions:
+ id-token: write
+ contents: read
+
jobs:
- environment-set-up:
- name: "Environment set up"
- runs-on: ubuntu-latest
- timeout-minutes: 5
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v4
- - name: "Create infractructure"
- run: |
- echo "Creating infractructure..."
- - name: "Update database"
- run: |
- echo "Updating database..."
- - name: "Deploy application"
- run: |
- echo "Deploying application..."
- test-contract:
- name: "Contract test"
- runs-on: ubuntu-latest
- needs: environment-set-up
- timeout-minutes: 10
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v4
- - name: "Run contract test"
- run: |
- make test-contract
- - name: "Save result"
- run: |
- echo "Nothing to save"
- test-security:
- name: "Security test"
+ run-acceptance-tests:
+ name: Run Acceptance Tests
runs-on: ubuntu-latest
- needs: environment-set-up
- timeout-minutes: 10
steps:
- - name: "Checkout code"
- uses: actions/checkout@v4
- - name: "Run security test"
- run: |
- make test-security
- - name: "Save result"
- run: |
- echo "Nothing to save"
- test-ui:
- name: "UI test"
- runs-on: ubuntu-latest
- needs: environment-set-up
- timeout-minutes: 10
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v4
- - name: "Run UI test"
- run: |
- make test-ui
- - name: "Save result"
- run: |
- echo "Nothing to save"
- test-ui-performance:
- name: "UI performance test"
- runs-on: ubuntu-latest
- needs: environment-set-up
- timeout-minutes: 10
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v4
- - name: "Run UI performance test"
- run: |
- make test-ui-performance
- - name: "Save result"
- run: |
- echo "Nothing to save"
- test-integration:
- name: "Integration test"
- runs-on: ubuntu-latest
- needs: environment-set-up
- timeout-minutes: 10
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v4
- - name: "Run integration test"
- run: |
- make test-integration
- - name: "Save result"
- run: |
- echo "Nothing to save"
- test-accessibility:
- name: "Accessibility test"
- runs-on: ubuntu-latest
- needs: environment-set-up
- timeout-minutes: 10
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v4
- - name: "Run accessibility test"
- run: |
- make test-accessibility
- - name: "Save result"
- run: |
- echo "Nothing to save"
- test-load:
- name: "Load test"
- runs-on: ubuntu-latest
- needs: environment-set-up
- timeout-minutes: 10
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v4
- - name: "Run load tests"
- run: |
- make test-load
- - name: "Save result"
- run: |
- echo "Nothing to save"
- environment-tear-down:
- name: "Environment tear down"
- runs-on: ubuntu-latest
- needs:
- [
- test-accessibility,
- test-contract,
- test-integration,
- test-load,
- test-security,
- test-ui-performance,
- test-ui,
- ]
- if: always()
- timeout-minutes: 5
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v4
- - name: "Tear down environment"
- run: |
- echo "Tearing down environment..."
+ - uses: actions/checkout@v4
+
+ - name: "Use Node.js"
+ uses: actions/setup-node@v4
+ with:
+ node-version: "${{ inputs.nodejs_version }}"
+ registry-url: "https://npm.pkg.github.com"
+ scope: "@nhsdigital"
+
+ - name: Trigger Acceptance Tests
+ shell: bash
+ env:
+ APP_PEM_FILE: ${{ secrets.APP_PEM_FILE }}
+ APP_CLIENT_ID: ${{ secrets.APP_CLIENT_ID }}
+ NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ TARGET_ENVIRONMENT: ${{ inputs.target_environment }}
+ run: |
+ .github/scripts/dispatch_internal_repo_workflow.sh \
+ --targetWorkflow "dispatch-contextual-tests-dynamic-env.yaml" \
+ --infraRepoName "nhs-notify-client-callbacks" \
+ --releaseVersion "${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" \
+ --overrideProjectName "nhs" \
+ --targetEnvironment "$TARGET_ENVIRONMENT" \
+ --targetAccountGroup "nhs-notify-client-callbacks-dev" \
+ --targetComponent "callbacks"
diff --git a/infrastructure/terraform/components/callbacks/README.md b/infrastructure/terraform/components/callbacks/README.md
index 3785bd9..3263c6c 100644
--- a/infrastructure/terraform/components/callbacks/README.md
+++ b/infrastructure/terraform/components/callbacks/README.md
@@ -43,6 +43,7 @@
| Name | Description |
|------|-------------|
+| [deployment](#output\_deployment) | Deployment details used for post-deployment scripts |
| [mock\_webhook\_lambda\_log\_group\_name](#output\_mock\_webhook\_lambda\_log\_group\_name) | CloudWatch log group name for mock webhook lambda (for integration test queries) |
| [mock\_webhook\_url](#output\_mock\_webhook\_url) | URL endpoint for mock webhook (for TEST\_WEBHOOK\_URL environment variable) |
diff --git a/infrastructure/terraform/components/callbacks/outputs.tf b/infrastructure/terraform/components/callbacks/outputs.tf
index d40c156..b042e36 100644
--- a/infrastructure/terraform/components/callbacks/outputs.tf
+++ b/infrastructure/terraform/components/callbacks/outputs.tf
@@ -1,4 +1,18 @@
-# Define the outputs for the component. The outputs may well be referenced by other component in the same or different environments using terraform_remote_state data sources...
+##
+# Deployment details
+##
+
+output "deployment" {
+ description = "Deployment details used for post-deployment scripts"
+ value = {
+ aws_region = var.region
+ aws_account_id = var.aws_account_id
+ project = var.project
+ environment = var.environment
+ group = var.group
+ component = var.component
+ }
+}
##
# Mock Webhook Lambda Outputs (test/dev environments only)
diff --git a/package-lock.json b/package-lock.json
index ed0326c..3b7cf4b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -627,65 +627,66 @@
"node": ">=20.0.0"
}
},
- "node_modules/@aws-sdk/client-sso": {
- "version": "3.996.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.996.0.tgz",
- "integrity": "sha512-QzlZozTam0modnGanLjXBHbHC53mMxH/4XmoA9f6ZjPYaGlCcHPYLcslO6w2w68v+F3qN0kxVldUAcL/edtBBA==",
+ "node_modules/@aws-sdk/client-sts": {
+ "version": "3.997.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.997.0.tgz",
+ "integrity": "sha512-kgS1aOYAqjyNYYk4sIbfTIU/n8EzHD644LP7eU6mCkEyiKtTu/7Wa8lBRgzpfcWUmfHEzGBswHt4P1MkP7Eqog==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/middleware-host-header": "^3.972.3",
- "@aws-sdk/middleware-logger": "^3.972.3",
- "@aws-sdk/middleware-recursion-detection": "^3.972.3",
- "@aws-sdk/middleware-user-agent": "^3.972.12",
- "@aws-sdk/region-config-resolver": "^3.972.3",
- "@aws-sdk/types": "^3.973.1",
- "@aws-sdk/util-endpoints": "3.996.0",
- "@aws-sdk/util-user-agent-browser": "^3.972.3",
- "@aws-sdk/util-user-agent-node": "^3.972.11",
- "@smithy/config-resolver": "^4.4.6",
- "@smithy/core": "^3.23.2",
- "@smithy/fetch-http-handler": "^5.3.9",
- "@smithy/hash-node": "^4.2.8",
- "@smithy/invalid-dependency": "^4.2.8",
- "@smithy/middleware-content-length": "^4.2.8",
- "@smithy/middleware-endpoint": "^4.4.16",
- "@smithy/middleware-retry": "^4.4.33",
- "@smithy/middleware-serde": "^4.2.9",
- "@smithy/middleware-stack": "^4.2.8",
- "@smithy/node-config-provider": "^4.3.8",
- "@smithy/node-http-handler": "^4.4.10",
- "@smithy/protocol-http": "^5.3.8",
- "@smithy/smithy-client": "^4.11.5",
- "@smithy/types": "^4.12.0",
- "@smithy/url-parser": "^4.2.8",
- "@smithy/util-base64": "^4.3.0",
- "@smithy/util-body-length-browser": "^4.2.0",
- "@smithy/util-body-length-node": "^4.2.1",
- "@smithy/util-defaults-mode-browser": "^4.3.32",
- "@smithy/util-defaults-mode-node": "^4.2.35",
- "@smithy/util-endpoints": "^3.2.8",
- "@smithy/util-middleware": "^4.2.8",
- "@smithy/util-retry": "^4.2.8",
- "@smithy/util-utf8": "^4.2.0",
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/credential-provider-node": "^3.972.12",
+ "@aws-sdk/middleware-host-header": "^3.972.4",
+ "@aws-sdk/middleware-logger": "^3.972.4",
+ "@aws-sdk/middleware-recursion-detection": "^3.972.4",
+ "@aws-sdk/middleware-user-agent": "^3.972.13",
+ "@aws-sdk/region-config-resolver": "^3.972.4",
+ "@aws-sdk/types": "^3.973.2",
+ "@aws-sdk/util-endpoints": "^3.996.1",
+ "@aws-sdk/util-user-agent-browser": "^3.972.4",
+ "@aws-sdk/util-user-agent-node": "^3.972.12",
+ "@smithy/config-resolver": "^4.4.7",
+ "@smithy/core": "^3.23.4",
+ "@smithy/fetch-http-handler": "^5.3.10",
+ "@smithy/hash-node": "^4.2.9",
+ "@smithy/invalid-dependency": "^4.2.9",
+ "@smithy/middleware-content-length": "^4.2.9",
+ "@smithy/middleware-endpoint": "^4.4.18",
+ "@smithy/middleware-retry": "^4.4.35",
+ "@smithy/middleware-serde": "^4.2.10",
+ "@smithy/middleware-stack": "^4.2.9",
+ "@smithy/node-config-provider": "^4.3.9",
+ "@smithy/node-http-handler": "^4.4.11",
+ "@smithy/protocol-http": "^5.3.9",
+ "@smithy/smithy-client": "^4.11.7",
+ "@smithy/types": "^4.12.1",
+ "@smithy/url-parser": "^4.2.9",
+ "@smithy/util-base64": "^4.3.1",
+ "@smithy/util-body-length-browser": "^4.2.1",
+ "@smithy/util-body-length-node": "^4.2.2",
+ "@smithy/util-defaults-mode-browser": "^4.3.34",
+ "@smithy/util-defaults-mode-node": "^4.2.37",
+ "@smithy/util-endpoints": "^3.2.9",
+ "@smithy/util-middleware": "^4.2.9",
+ "@smithy/util-retry": "^4.2.9",
+ "@smithy/util-utf8": "^4.2.1",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=20.0.0"
}
},
- "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints": {
- "version": "3.996.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.0.tgz",
- "integrity": "sha512-EhSBGWSGQ6Jcbt6jRyX1/0EV7rf+6RGbIIskN0MTtHk0k8uj5FAa1FZhLf+1ETfnDTy/BT39t5IUOQiZL5X1jQ==",
+ "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.996.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.1.tgz",
+ "integrity": "sha512-7cJyd+M5i0IoqWkJa1KFx8KNCGIx+Ywu+lT53KpqX7ReVwz03DCKUqvZ/y65vdKwo9w9/HptSAeLDluO5MpGIg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "^3.973.1",
- "@smithy/types": "^4.12.0",
- "@smithy/url-parser": "^4.2.8",
- "@smithy/util-endpoints": "^3.2.8",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/types": "^4.12.1",
+ "@smithy/url-parser": "^4.2.9",
+ "@smithy/util-endpoints": "^3.2.9",
"tslib": "^2.6.2"
},
"engines": {
@@ -693,23 +694,23 @@
}
},
"node_modules/@aws-sdk/core": {
- "version": "3.973.12",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.12.tgz",
- "integrity": "sha512-hFiezao0lCEddPhSQEF6vCu+TepUN3edKxWYbswMoH87XpUvHJmFVX5+zttj4qi33saGiuOaJciswWcN6YSA9g==",
+ "version": "3.973.13",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.13.tgz",
+ "integrity": "sha512-eCFiLyBhJR7c/i8hZOETdzj2wsLFzi2L/w9/jajOgwmGqO8xrUExqkTZqdjROkwU62owqeqSuw4sIzlCv1E/ww==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "^3.973.1",
- "@aws-sdk/xml-builder": "^3.972.5",
- "@smithy/core": "^3.23.2",
- "@smithy/node-config-provider": "^4.3.8",
- "@smithy/property-provider": "^4.2.8",
- "@smithy/protocol-http": "^5.3.8",
- "@smithy/signature-v4": "^5.3.8",
- "@smithy/smithy-client": "^4.11.5",
- "@smithy/types": "^4.12.0",
- "@smithy/util-base64": "^4.3.0",
- "@smithy/util-middleware": "^4.2.8",
- "@smithy/util-utf8": "^4.2.0",
+ "@aws-sdk/types": "^3.973.2",
+ "@aws-sdk/xml-builder": "^3.972.6",
+ "@smithy/core": "^3.23.4",
+ "@smithy/node-config-provider": "^4.3.9",
+ "@smithy/property-provider": "^4.2.9",
+ "@smithy/protocol-http": "^5.3.9",
+ "@smithy/signature-v4": "^5.3.9",
+ "@smithy/smithy-client": "^4.11.7",
+ "@smithy/types": "^4.12.1",
+ "@smithy/util-base64": "^4.3.1",
+ "@smithy/util-middleware": "^4.2.9",
+ "@smithy/util-utf8": "^4.2.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -730,15 +731,15 @@
}
},
"node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.972.10",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.10.tgz",
- "integrity": "sha512-YTWjM78Wiqix0Jv/anbq7+COFOFIBBMLZ+JsLKGwbTZNJ2DG4JNBnLVJAWylPOHwurMws9157pqzU8ODrpBOow==",
+ "version": "3.972.11",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.11.tgz",
+ "integrity": "sha512-hbyoFuVm3qOAGfIPS9t7jCs8GFLFoaOs8ZmYp/chqciuHDyEGv+J365ip7YSvXSrxxUbeW9NyB1hTLt40NBMRg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/types": "^3.973.1",
- "@smithy/property-provider": "^4.2.8",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/property-provider": "^4.2.9",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -746,20 +747,20 @@
}
},
"node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.972.12",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.12.tgz",
- "integrity": "sha512-adDRE3iFrgJJ7XhRHkb6RdFDMrA5x64WAWxygI3F6wND+3v5qQ4Uks12vsnEZgduU/+JQBgFB6L4vfwUS+rpBQ==",
+ "version": "3.972.13",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.13.tgz",
+ "integrity": "sha512-a864QxQWFkdCZ5wQF0QZNKTbqAc/DFQNeARp4gOyZZdql5RHjj4CppUSfwAzS9cpw2IPY3eeJjWqLZ1QiDB/6w==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/types": "^3.973.1",
- "@smithy/fetch-http-handler": "^5.3.9",
- "@smithy/node-http-handler": "^4.4.10",
- "@smithy/property-provider": "^4.2.8",
- "@smithy/protocol-http": "^5.3.8",
- "@smithy/smithy-client": "^4.11.5",
- "@smithy/types": "^4.12.0",
- "@smithy/util-stream": "^4.5.12",
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/fetch-http-handler": "^5.3.10",
+ "@smithy/node-http-handler": "^4.4.11",
+ "@smithy/property-provider": "^4.2.9",
+ "@smithy/protocol-http": "^5.3.9",
+ "@smithy/smithy-client": "^4.11.7",
+ "@smithy/types": "^4.12.1",
+ "@smithy/util-stream": "^4.5.14",
"tslib": "^2.6.2"
},
"engines": {
@@ -767,24 +768,24 @@
}
},
"node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.972.10",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.10.tgz",
- "integrity": "sha512-uAXUMfnQJxJ25qeiX4e3Z36NTm1XT7woajV8BXx2yAUDD4jF6kubqnLEcqtiPzHANxmhta2SXm5PbDwSdhThBw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/credential-provider-env": "^3.972.10",
- "@aws-sdk/credential-provider-http": "^3.972.12",
- "@aws-sdk/credential-provider-login": "^3.972.10",
- "@aws-sdk/credential-provider-process": "^3.972.10",
- "@aws-sdk/credential-provider-sso": "^3.972.10",
- "@aws-sdk/credential-provider-web-identity": "^3.972.10",
- "@aws-sdk/nested-clients": "3.996.0",
- "@aws-sdk/types": "^3.973.1",
- "@smithy/credential-provider-imds": "^4.2.8",
- "@smithy/property-provider": "^4.2.8",
- "@smithy/shared-ini-file-loader": "^4.4.3",
- "@smithy/types": "^4.12.0",
+ "version": "3.972.11",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.11.tgz",
+ "integrity": "sha512-kvPFn626ABLzxmjFMoqMRtmFKMeiUdWPhwxhmuPu233tqHnNuXzHv0MtrZlkzHd+rwlh9j0zCbQo89B54wIazQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/credential-provider-env": "^3.972.11",
+ "@aws-sdk/credential-provider-http": "^3.972.13",
+ "@aws-sdk/credential-provider-login": "^3.972.11",
+ "@aws-sdk/credential-provider-process": "^3.972.11",
+ "@aws-sdk/credential-provider-sso": "^3.972.11",
+ "@aws-sdk/credential-provider-web-identity": "^3.972.11",
+ "@aws-sdk/nested-clients": "^3.996.1",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/credential-provider-imds": "^4.2.9",
+ "@smithy/property-provider": "^4.2.9",
+ "@smithy/shared-ini-file-loader": "^4.4.4",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -792,18 +793,18 @@
}
},
"node_modules/@aws-sdk/credential-provider-login": {
- "version": "3.972.10",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.10.tgz",
- "integrity": "sha512-7Me+/EkY3kQC1nehBjb9ryc558N+a8R4Dg3rSV3zpiB7iQtvXh4gU3rV14h/dIbn2/VkK9sh55YdXamSjfdb/Q==",
+ "version": "3.972.11",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.11.tgz",
+ "integrity": "sha512-stdy09EpBTmsxGiXe1vB5qtXNww9wact36/uWLlSV0/vWbCOUAY2JjhPXoDVLk8n+E6r0M5HeZseLk+iTtifxg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/nested-clients": "3.996.0",
- "@aws-sdk/types": "^3.973.1",
- "@smithy/property-provider": "^4.2.8",
- "@smithy/protocol-http": "^5.3.8",
- "@smithy/shared-ini-file-loader": "^4.4.3",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/nested-clients": "^3.996.1",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/property-provider": "^4.2.9",
+ "@smithy/protocol-http": "^5.3.9",
+ "@smithy/shared-ini-file-loader": "^4.4.4",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -811,22 +812,22 @@
}
},
"node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.972.11",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.11.tgz",
- "integrity": "sha512-maPmjL7nOT93a1QdSDzdF/qLbI+jit3oslKp7g+pTbASewkSYax7FwboETdKRxufPfCdrsRzMW2pIJ+QA8e+Bg==",
+ "version": "3.972.12",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.12.tgz",
+ "integrity": "sha512-gMWGnHbNSKWRj+PAiuSg0EDpEwpyIgk0v9U6EuZ1C/5/BUv25Way+E+UFB7r+YYkscuBJMJ+ai8E2K0Q8dx50g==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/credential-provider-env": "^3.972.10",
- "@aws-sdk/credential-provider-http": "^3.972.12",
- "@aws-sdk/credential-provider-ini": "^3.972.10",
- "@aws-sdk/credential-provider-process": "^3.972.10",
- "@aws-sdk/credential-provider-sso": "^3.972.10",
- "@aws-sdk/credential-provider-web-identity": "^3.972.10",
- "@aws-sdk/types": "^3.973.1",
- "@smithy/credential-provider-imds": "^4.2.8",
- "@smithy/property-provider": "^4.2.8",
- "@smithy/shared-ini-file-loader": "^4.4.3",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/credential-provider-env": "^3.972.11",
+ "@aws-sdk/credential-provider-http": "^3.972.13",
+ "@aws-sdk/credential-provider-ini": "^3.972.11",
+ "@aws-sdk/credential-provider-process": "^3.972.11",
+ "@aws-sdk/credential-provider-sso": "^3.972.11",
+ "@aws-sdk/credential-provider-web-identity": "^3.972.11",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/credential-provider-imds": "^4.2.9",
+ "@smithy/property-provider": "^4.2.9",
+ "@smithy/shared-ini-file-loader": "^4.4.4",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -834,16 +835,16 @@
}
},
"node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.972.10",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.10.tgz",
- "integrity": "sha512-tk/XxFhk37rKviArOIYbJ8crXiN3Mzn7Tb147jH51JTweNgUOwmqN+s027uqc3d8UeAyUcPUH8Bmfj86SzOhBQ==",
+ "version": "3.972.11",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.11.tgz",
+ "integrity": "sha512-B049fvbv41vf0Fs5bCtbzHpruBDp61sPiFDxUmkAJ/zvgSAturpj2rqzV1rj2clg4mb44Uxp9rgpcODexNFlFA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/types": "^3.973.1",
- "@smithy/property-provider": "^4.2.8",
- "@smithy/shared-ini-file-loader": "^4.4.3",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/property-provider": "^4.2.9",
+ "@smithy/shared-ini-file-loader": "^4.4.4",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -851,18 +852,18 @@
}
},
"node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.972.10",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.10.tgz",
- "integrity": "sha512-tIz/O0yV1s77/FjMTWvvzU2vsztap2POlbetheOyRXq+E3PQtLOzCYopasXP+aeO1oerw3PFd9eycLbiwpgZZA==",
+ "version": "3.972.11",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.11.tgz",
+ "integrity": "sha512-vX9z8skN8vPtamVWmSCm4KQohub+1uMuRzIo4urZ2ZUMBAl1bqHatVD/roCb3qRfAyIGvZXCA/AWS03BQRMyCQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/client-sso": "3.996.0",
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/token-providers": "3.996.0",
- "@aws-sdk/types": "^3.973.1",
- "@smithy/property-provider": "^4.2.8",
- "@smithy/shared-ini-file-loader": "^4.4.3",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/nested-clients": "^3.996.1",
+ "@aws-sdk/token-providers": "3.997.0",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/property-provider": "^4.2.9",
+ "@smithy/shared-ini-file-loader": "^4.4.4",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -870,17 +871,17 @@
}
},
"node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.972.10",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.10.tgz",
- "integrity": "sha512-HFlIVx8mm+Au7hkO7Hq/ZkPomjTt26iRj8uWZqEE1cJWMZ2NKvieNiT1ngzWt60Bc2uD51LqQUqiwr5JDgS4iQ==",
+ "version": "3.972.11",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.11.tgz",
+ "integrity": "sha512-VR2Ju/QBdOjnWNIYuxRml63eFDLGc6Zl8aDwLi1rzgWo3rLBgtaWhWVBAijhVXzyPdQIOqdL8hvll5ybqumjeQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/nested-clients": "3.996.0",
- "@aws-sdk/types": "^3.973.1",
- "@smithy/property-provider": "^4.2.8",
- "@smithy/shared-ini-file-loader": "^4.4.3",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/nested-clients": "^3.996.1",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/property-provider": "^4.2.9",
+ "@smithy/shared-ini-file-loader": "^4.4.4",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -946,14 +947,14 @@
}
},
"node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.972.3",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz",
- "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==",
+ "version": "3.972.4",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.4.tgz",
+ "integrity": "sha512-4q2Vg7/zOB10huDBLjzzTwVjBpG22X3J3ief2XrJEgTaANZrNfA3/cGbCVNAibSbu/nIYA7tDk8WCdsIzDDc4Q==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "^3.973.1",
- "@smithy/protocol-http": "^5.3.8",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/protocol-http": "^5.3.9",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -975,13 +976,13 @@
}
},
"node_modules/@aws-sdk/middleware-logger": {
- "version": "3.972.3",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz",
- "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==",
+ "version": "3.972.4",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.4.tgz",
+ "integrity": "sha512-xFqPvTysuZAHSkdygT+ken/5rzkR7fhOoDPejAJQslZpp0XBepmCJnDOqA57ERtCTBpu8wpjTFI1ETd4S0AXEw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "^3.973.1",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -989,15 +990,15 @@
}
},
"node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.972.3",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz",
- "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==",
+ "version": "3.972.4",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.4.tgz",
+ "integrity": "sha512-tVbRaayUZ7y2bOb02hC3oEPTqQf2A0HpPDwdMl1qTmye/q8Mq1F1WiIoFkQwG/YQFvbyErYIDMbYzIlxzzLtjQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "^3.973.1",
+ "@aws-sdk/types": "^3.973.2",
"@aws/lambda-invoke-store": "^0.2.2",
- "@smithy/protocol-http": "^5.3.8",
- "@smithy/types": "^4.12.0",
+ "@smithy/protocol-http": "^5.3.9",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -1061,17 +1062,17 @@
}
},
"node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.972.12",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.12.tgz",
- "integrity": "sha512-iv9toQZloEJp+dIuOr+1XWGmBMLU9c2qqNtgscfnEBZnUq3qKdBJHmLTKoq3mkLlV+41GrCWn8LrOunc6OlP6g==",
+ "version": "3.972.13",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.13.tgz",
+ "integrity": "sha512-p1kVYbzBxRmhuOHoL/ANJPCedqUxnVgkEjxPoxt5pQv/yzppHM7aBWciYEE9TZY59M421D3GjLfZIZBoEFboVQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/types": "^3.973.1",
- "@aws-sdk/util-endpoints": "3.996.0",
- "@smithy/core": "^3.23.2",
- "@smithy/protocol-http": "^5.3.8",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/types": "^3.973.2",
+ "@aws-sdk/util-endpoints": "^3.996.1",
+ "@smithy/core": "^3.23.4",
+ "@smithy/protocol-http": "^5.3.9",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -1079,15 +1080,15 @@
}
},
"node_modules/@aws-sdk/middleware-user-agent/node_modules/@aws-sdk/util-endpoints": {
- "version": "3.996.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.0.tgz",
- "integrity": "sha512-EhSBGWSGQ6Jcbt6jRyX1/0EV7rf+6RGbIIskN0MTtHk0k8uj5FAa1FZhLf+1ETfnDTy/BT39t5IUOQiZL5X1jQ==",
+ "version": "3.996.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.1.tgz",
+ "integrity": "sha512-7cJyd+M5i0IoqWkJa1KFx8KNCGIx+Ywu+lT53KpqX7ReVwz03DCKUqvZ/y65vdKwo9w9/HptSAeLDluO5MpGIg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "^3.973.1",
- "@smithy/types": "^4.12.0",
- "@smithy/url-parser": "^4.2.8",
- "@smithy/util-endpoints": "^3.2.8",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/types": "^4.12.1",
+ "@smithy/url-parser": "^4.2.9",
+ "@smithy/util-endpoints": "^3.2.9",
"tslib": "^2.6.2"
},
"engines": {
@@ -1095,48 +1096,48 @@
}
},
"node_modules/@aws-sdk/nested-clients": {
- "version": "3.996.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.0.tgz",
- "integrity": "sha512-edZwYLgRI0rZlH9Hru9+JvTsR1OAxuCRGEtJohkZneIJ5JIYzvFoMR1gaASjl1aPKRhjkCv8SSAb7hes5a1GGA==",
+ "version": "3.996.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.1.tgz",
+ "integrity": "sha512-XHVLFRGkuV2gh2uwBahCt65ALMb5wMpqplXEZIvFnWOCPlk60B7h7M5J9Em243K8iICDiWY6KhBEqVGfjTqlLA==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/middleware-host-header": "^3.972.3",
- "@aws-sdk/middleware-logger": "^3.972.3",
- "@aws-sdk/middleware-recursion-detection": "^3.972.3",
- "@aws-sdk/middleware-user-agent": "^3.972.12",
- "@aws-sdk/region-config-resolver": "^3.972.3",
- "@aws-sdk/types": "^3.973.1",
- "@aws-sdk/util-endpoints": "3.996.0",
- "@aws-sdk/util-user-agent-browser": "^3.972.3",
- "@aws-sdk/util-user-agent-node": "^3.972.11",
- "@smithy/config-resolver": "^4.4.6",
- "@smithy/core": "^3.23.2",
- "@smithy/fetch-http-handler": "^5.3.9",
- "@smithy/hash-node": "^4.2.8",
- "@smithy/invalid-dependency": "^4.2.8",
- "@smithy/middleware-content-length": "^4.2.8",
- "@smithy/middleware-endpoint": "^4.4.16",
- "@smithy/middleware-retry": "^4.4.33",
- "@smithy/middleware-serde": "^4.2.9",
- "@smithy/middleware-stack": "^4.2.8",
- "@smithy/node-config-provider": "^4.3.8",
- "@smithy/node-http-handler": "^4.4.10",
- "@smithy/protocol-http": "^5.3.8",
- "@smithy/smithy-client": "^4.11.5",
- "@smithy/types": "^4.12.0",
- "@smithy/url-parser": "^4.2.8",
- "@smithy/util-base64": "^4.3.0",
- "@smithy/util-body-length-browser": "^4.2.0",
- "@smithy/util-body-length-node": "^4.2.1",
- "@smithy/util-defaults-mode-browser": "^4.3.32",
- "@smithy/util-defaults-mode-node": "^4.2.35",
- "@smithy/util-endpoints": "^3.2.8",
- "@smithy/util-middleware": "^4.2.8",
- "@smithy/util-retry": "^4.2.8",
- "@smithy/util-utf8": "^4.2.0",
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/middleware-host-header": "^3.972.4",
+ "@aws-sdk/middleware-logger": "^3.972.4",
+ "@aws-sdk/middleware-recursion-detection": "^3.972.4",
+ "@aws-sdk/middleware-user-agent": "^3.972.13",
+ "@aws-sdk/region-config-resolver": "^3.972.4",
+ "@aws-sdk/types": "^3.973.2",
+ "@aws-sdk/util-endpoints": "^3.996.1",
+ "@aws-sdk/util-user-agent-browser": "^3.972.4",
+ "@aws-sdk/util-user-agent-node": "^3.972.12",
+ "@smithy/config-resolver": "^4.4.7",
+ "@smithy/core": "^3.23.4",
+ "@smithy/fetch-http-handler": "^5.3.10",
+ "@smithy/hash-node": "^4.2.9",
+ "@smithy/invalid-dependency": "^4.2.9",
+ "@smithy/middleware-content-length": "^4.2.9",
+ "@smithy/middleware-endpoint": "^4.4.18",
+ "@smithy/middleware-retry": "^4.4.35",
+ "@smithy/middleware-serde": "^4.2.10",
+ "@smithy/middleware-stack": "^4.2.9",
+ "@smithy/node-config-provider": "^4.3.9",
+ "@smithy/node-http-handler": "^4.4.11",
+ "@smithy/protocol-http": "^5.3.9",
+ "@smithy/smithy-client": "^4.11.7",
+ "@smithy/types": "^4.12.1",
+ "@smithy/url-parser": "^4.2.9",
+ "@smithy/util-base64": "^4.3.1",
+ "@smithy/util-body-length-browser": "^4.2.1",
+ "@smithy/util-body-length-node": "^4.2.2",
+ "@smithy/util-defaults-mode-browser": "^4.3.34",
+ "@smithy/util-defaults-mode-node": "^4.2.37",
+ "@smithy/util-endpoints": "^3.2.9",
+ "@smithy/util-middleware": "^4.2.9",
+ "@smithy/util-retry": "^4.2.9",
+ "@smithy/util-utf8": "^4.2.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -1144,15 +1145,15 @@
}
},
"node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-endpoints": {
- "version": "3.996.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.0.tgz",
- "integrity": "sha512-EhSBGWSGQ6Jcbt6jRyX1/0EV7rf+6RGbIIskN0MTtHk0k8uj5FAa1FZhLf+1ETfnDTy/BT39t5IUOQiZL5X1jQ==",
+ "version": "3.996.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.1.tgz",
+ "integrity": "sha512-7cJyd+M5i0IoqWkJa1KFx8KNCGIx+Ywu+lT53KpqX7ReVwz03DCKUqvZ/y65vdKwo9w9/HptSAeLDluO5MpGIg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "^3.973.1",
- "@smithy/types": "^4.12.0",
- "@smithy/url-parser": "^4.2.8",
- "@smithy/util-endpoints": "^3.2.8",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/types": "^4.12.1",
+ "@smithy/url-parser": "^4.2.9",
+ "@smithy/util-endpoints": "^3.2.9",
"tslib": "^2.6.2"
},
"engines": {
@@ -1160,15 +1161,15 @@
}
},
"node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.972.3",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz",
- "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==",
+ "version": "3.972.4",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.4.tgz",
+ "integrity": "sha512-3GrJYv5eI65oCKveBZP7Q246dVP+tqeys9aKMB0dfX1glUWfppWlxIu52derqdNb9BX9lxYmeiaBcBIqOAYSgQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "^3.973.1",
- "@smithy/config-resolver": "^4.4.6",
- "@smithy/node-config-provider": "^4.3.8",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/config-resolver": "^4.4.7",
+ "@smithy/node-config-provider": "^4.3.9",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -1193,17 +1194,17 @@
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.996.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.996.0.tgz",
- "integrity": "sha512-jzBmlG97hYPdHjFs7G11fBgVArcwUrZX+SbGeQMph7teEWLDqIruKV+N0uzxFJF2GJJJ0UnMaKhv3PcXMltySg==",
+ "version": "3.997.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.997.0.tgz",
+ "integrity": "sha512-UdG36F7lU9aTqGFRieEyuRUJlgEJBqKeKKekC0esH21DbUSKhPR1kZBah214kYasIaWe1hLJLaqUigoTa5hZAQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.973.12",
- "@aws-sdk/nested-clients": "3.996.0",
- "@aws-sdk/types": "^3.973.1",
- "@smithy/property-provider": "^4.2.8",
- "@smithy/shared-ini-file-loader": "^4.4.3",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/core": "^3.973.13",
+ "@aws-sdk/nested-clients": "^3.996.1",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/property-provider": "^4.2.9",
+ "@smithy/shared-ini-file-loader": "^4.4.4",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -1211,12 +1212,12 @@
}
},
"node_modules/@aws-sdk/types": {
- "version": "3.973.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz",
- "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==",
+ "version": "3.973.2",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.2.tgz",
+ "integrity": "sha512-maTZwGsALtnAw4TJr/S6yERAosTwPduu0XhUV+SdbvRZtCOgSgk1ttL2R0XYzvkYSpvbtJocn77tBXq2AKglBw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.12.0",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -1264,27 +1265,27 @@
}
},
"node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.972.3",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz",
- "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==",
+ "version": "3.972.4",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.4.tgz",
+ "integrity": "sha512-GHb+8XHv6hfLWKQKAKaSOm+vRvogg07s+FWtbR3+eCXXPSFn9XVmiYF4oypAxH7dGIvoxkVG/buHEnzYukyJiA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "^3.973.1",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/types": "^4.12.1",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
}
},
"node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.972.11",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.11.tgz",
- "integrity": "sha512-pQr35pSZANfUb0mJ9H87pziJQ39jW1D7xFRwh36eWfrEclbKoIqrzpOIVz49o1Jq9ZQzOtjS7rQVvt7V4w5awA==",
+ "version": "3.972.12",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.12.tgz",
+ "integrity": "sha512-c1n3wBK6te+Vd9qU86nF8AsYuiBsxLn0AADGWyFX7vEADr3btaAg5iPQT6GYj6rvzSOEVVisvaAatOWInlJUbQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-user-agent": "^3.972.12",
- "@aws-sdk/types": "^3.973.1",
- "@smithy/node-config-provider": "^4.3.8",
- "@smithy/types": "^4.12.0",
+ "@aws-sdk/middleware-user-agent": "^3.972.13",
+ "@aws-sdk/types": "^3.973.2",
+ "@smithy/node-config-provider": "^4.3.9",
+ "@smithy/types": "^4.12.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -1300,12 +1301,12 @@
}
},
"node_modules/@aws-sdk/xml-builder": {
- "version": "3.972.5",
- "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.5.tgz",
- "integrity": "sha512-mCae5Ys6Qm1LDu0qdGwx2UQ63ONUe+FHw908fJzLDqFKTDBK4LDZUqKWm4OkTCNFq19bftjsBSESIGLD/s3/rA==",
+ "version": "3.972.6",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.6.tgz",
+ "integrity": "sha512-YrXu+UnfC8IdARa4ZkrpcyuRmA/TVgYW6Lcdtvi34NQgRjM1hTirNirN+rGb+s/kNomby8oJiIAu0KNbiZC7PA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.12.0",
+ "@smithy/types": "^4.12.1",
"fast-xml-parser": "5.3.6",
"tslib": "^2.6.2"
},
@@ -3210,14 +3211,14 @@
}
},
"node_modules/@smithy/hash-node": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz",
- "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==",
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.10.tgz",
+ "integrity": "sha512-1VzIOI5CcsvMDvP3iv1vG/RfLJVVVc67dCRyLSB2Hn9SWCZrDO3zvcIzj3BfEtqRW5kcMg5KAeVf1K3dR6nD3w==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.12.0",
- "@smithy/util-buffer-from": "^4.2.0",
- "@smithy/util-utf8": "^4.2.0",
+ "@smithy/types": "^4.13.0",
+ "@smithy/util-buffer-from": "^4.2.1",
+ "@smithy/util-utf8": "^4.2.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -3239,12 +3240,12 @@
}
},
"node_modules/@smithy/invalid-dependency": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz",
- "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==",
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.10.tgz",
+ "integrity": "sha512-vy9KPNSFUU0ajFYk0sDZIYiUlAWGEAhRfehIr5ZkdFrRFTAuXEPUd41USuqHU6vvLX4r6Q9X7MKBco5+Il0Org==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.12.0",
+ "@smithy/types": "^4.13.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3278,13 +3279,13 @@
}
},
"node_modules/@smithy/middleware-content-length": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz",
- "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==",
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.10.tgz",
+ "integrity": "sha512-TQZ9kX5c6XbjhaEBpvhSvMEZ0klBs1CFtOdPFwATZSbC9UeQfKHPLPN9Y+I6wZGMOavlYTOlHEPDrt42PMSH9w==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/protocol-http": "^5.3.8",
- "@smithy/types": "^4.12.0",
+ "@smithy/protocol-http": "^5.3.10",
+ "@smithy/types": "^4.13.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3402,12 +3403,12 @@
}
},
"node_modules/@smithy/protocol-http": {
- "version": "5.3.9",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.9.tgz",
- "integrity": "sha512-PRy4yZqsKI3Eab8TLc16Dj2NzC4dnw/8E95+++Jc+wwlkjBpAq3tNLqkLHMmSvDfxKQ+X5PmmCYt+rM/GcMKPA==",
+ "version": "5.3.10",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.10.tgz",
+ "integrity": "sha512-2NzVWpYY0tRdfeCJLsgrR89KE3NTWT2wGulhNUxYlRmtRmPwLQwKzhrfVaiNlA9ZpJvbW7cjTVChYKgnkqXj1A==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.12.1",
+ "@smithy/types": "^4.13.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3467,18 +3468,18 @@
}
},
"node_modules/@smithy/signature-v4": {
- "version": "5.3.8",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz",
- "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==",
+ "version": "5.3.10",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.10.tgz",
+ "integrity": "sha512-Wab3wW8468WqTKIxI+aZe3JYO52/RYT/8sDOdzkUhjnLakLe9qoQqIcfih/qxcF4qWEFoWBszY0mj5uxffaVXA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/is-array-buffer": "^4.2.0",
- "@smithy/protocol-http": "^5.3.8",
- "@smithy/types": "^4.12.0",
- "@smithy/util-hex-encoding": "^4.2.0",
- "@smithy/util-middleware": "^4.2.8",
- "@smithy/util-uri-escape": "^4.2.0",
- "@smithy/util-utf8": "^4.2.0",
+ "@smithy/is-array-buffer": "^4.2.1",
+ "@smithy/protocol-http": "^5.3.10",
+ "@smithy/types": "^4.13.0",
+ "@smithy/util-hex-encoding": "^4.2.1",
+ "@smithy/util-middleware": "^4.2.10",
+ "@smithy/util-uri-escape": "^4.2.1",
+ "@smithy/util-utf8": "^4.2.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -3504,9 +3505,9 @@
}
},
"node_modules/@smithy/types": {
- "version": "4.12.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.1.tgz",
- "integrity": "sha512-ow30Ze/DD02KH2p0eMyIF2+qJzGyNb0kFrnTRtPpuOkQ4hrgvLdaU4YC6r/K8aOrCML4FH0Cmm0aI4503L1Hwg==",
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.0.tgz",
+ "integrity": "sha512-COuLsZILbbQsdrwKQpkkpyep7lCsByxwj7m0Mg5v66/ZTyenlfBc40/QFQ5chO0YN/PNEH1Bi3fGtfXPnYNeDw==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
@@ -3543,19 +3544,6 @@
"node": ">=18.0.0"
}
},
- "node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.1.tgz",
- "integrity": "sha512-/swhmt1qTiVkaejlmMPPDgZhEaWb/HWMGRBheaxwuVkusp/z+ErJyQxO6kaXumOciZSWlmq6Z5mNylCd33X7Ig==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^4.2.1",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"node_modules/@smithy/util-body-length-browser": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.1.tgz",
@@ -3569,9 +3557,9 @@
}
},
"node_modules/@smithy/util-body-length-node": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz",
- "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.2.tgz",
+ "integrity": "sha512-4rHqBvxtJEBvsZcFQSPQqXP2b/yy/YlB66KlcEgcH2WNoOKCKB03DSLzXmOsXjbl8dJ4OEYTn31knhdznwk7zw==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
@@ -3581,12 +3569,12 @@
}
},
"node_modules/@smithy/util-buffer-from": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz",
- "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.1.tgz",
+ "integrity": "sha512-/swhmt1qTiVkaejlmMPPDgZhEaWb/HWMGRBheaxwuVkusp/z+ErJyQxO6kaXumOciZSWlmq6Z5mNylCd33X7Ig==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/is-array-buffer": "^4.2.0",
+ "@smithy/is-array-buffer": "^4.2.1",
"tslib": "^2.6.2"
},
"engines": {
@@ -3665,12 +3653,12 @@
}
},
"node_modules/@smithy/util-middleware": {
- "version": "4.2.9",
- "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.9.tgz",
- "integrity": "sha512-pfnZneJ1S9X3TRmg2l3pG11Pvx2BW9O3NFhUN30llrK/yUKu8WbqMTx4/CzED+qKBYw0//ntUT00hvmaG+nLgA==",
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.10.tgz",
+ "integrity": "sha512-LxaQIWLp4y0r72eA8mwPNQ9va4h5KeLM0I3M/HV9klmFaY2kN766wf5vsTzmaOpNNb7GgXAd9a25P3h8T49PSA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.12.1",
+ "@smithy/types": "^4.13.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -3710,19 +3698,6 @@
"node": ">=18.0.0"
}
},
- "node_modules/@smithy/util-stream/node_modules/@smithy/util-buffer-from": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.1.tgz",
- "integrity": "sha512-/swhmt1qTiVkaejlmMPPDgZhEaWb/HWMGRBheaxwuVkusp/z+ErJyQxO6kaXumOciZSWlmq6Z5mNylCd33X7Ig==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^4.2.1",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"node_modules/@smithy/util-uri-escape": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.1.tgz",
@@ -3748,19 +3723,6 @@
"node": ">=18.0.0"
}
},
- "node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.1.tgz",
- "integrity": "sha512-/swhmt1qTiVkaejlmMPPDgZhEaWb/HWMGRBheaxwuVkusp/z+ErJyQxO6kaXumOciZSWlmq6Z5mNylCd33X7Ig==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^4.2.1",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"node_modules/@smithy/util-waiter": {
"version": "4.2.9",
"resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.9.tgz",
@@ -7145,9 +7107,9 @@
"license": "BSD-3-Clause"
},
"node_modules/fast-xml-parser": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.7.tgz",
- "integrity": "sha512-JzVLro9NQv92pOM/jTCR6mHlJh2FGwtomH8ZQjhFj/R29P2Fnj38OgPJVtcvYw6SuKClhgYuwUZf5b3rd8u2mA==",
+ "version": "5.3.9",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.9.tgz",
+ "integrity": "sha512-zU0KUuO9U+fLGduTDdxQ6qsQLIxRg4EK5AMduwBNGNCSfCGRSbNS7OpH343NFQlLDg1jxoH68JSbOPAGksIGvg==",
"funding": [
{
"type": "github",
@@ -12244,7 +12206,9 @@
"dependencies": {
"@aws-sdk/client-cloudwatch-logs": "^3.991.0",
"@aws-sdk/client-eventbridge": "^3.990.0",
+ "@aws-sdk/client-s3": "^3.821.0",
"@aws-sdk/client-sqs": "^3.990.0",
+ "@aws-sdk/client-sts": "^3.821.0",
"async-wait-until": "^2.0.12"
},
"devDependencies": {
diff --git a/tests/integration/helpers/aws-helpers.ts b/tests/integration/helpers/aws-helpers.ts
new file mode 100644
index 0000000..00e26a6
--- /dev/null
+++ b/tests/integration/helpers/aws-helpers.ts
@@ -0,0 +1,66 @@
+import { S3Client } from "@aws-sdk/client-s3";
+import { GetCallerIdentityCommand, STSClient } from "@aws-sdk/client-sts";
+
+export type DeploymentDetails = {
+ region: string;
+ environment: string;
+ project: string;
+ component: string;
+ accountId: string;
+};
+
+/**
+ * Reads deployment context from environment variables and resolves the AWS account
+ * ID via STS GetCallerIdentity.
+ *
+ * Requires: AWS_REGION, PR_NUMBER, PROJECT, COMPONENT
+ */
+export async function getDeploymentDetails(): Promise {
+ const region = process.env.AWS_REGION ?? "eu-west-2";
+ const environment = process.env.PR_NUMBER;
+ const project = process.env.PROJECT;
+ const component = process.env.COMPONENT;
+
+ if (!environment) {
+ throw new Error("PR_NUMBER environment variable must be set");
+ }
+ if (!project) {
+ throw new Error("PROJECT environment variable must be set");
+ }
+ if (!component) {
+ throw new Error("COMPONENT environment variable must be set");
+ }
+
+ const stsClient = new STSClient({ region });
+ const { Account: accountId } = await stsClient.send(
+ new GetCallerIdentityCommand({}),
+ );
+ stsClient.destroy();
+
+ if (!accountId) {
+ throw new Error("Unable to determine AWS account ID via STS");
+ }
+
+ return { region, environment, project, component, accountId };
+}
+
+/**
+ * Builds the subscription config S3 bucket name from deployment details.
+ */
+export function buildSubscriptionConfigBucketName({
+ accountId,
+ component,
+ environment,
+ project,
+ region,
+}: DeploymentDetails): string {
+ return `${project}-${accountId}-${region}-${environment}-${component}-subscription-config`;
+}
+
+/**
+ * Creates an S3 client configured for the given region.
+ */
+export function createS3Client(): S3Client {
+ const region = process.env.AWS_REGION ?? "eu-west-2";
+ return new S3Client({ region });
+}
diff --git a/tests/integration/helpers/index.ts b/tests/integration/helpers/index.ts
index b0718c3..e2b912e 100644
--- a/tests/integration/helpers/index.ts
+++ b/tests/integration/helpers/index.ts
@@ -1 +1,2 @@
+export * from "./aws-helpers";
export * from "./cloudwatch-helpers";
diff --git a/tests/integration/infrastructure-exists.test.ts b/tests/integration/infrastructure-exists.test.ts
new file mode 100644
index 0000000..abb468a
--- /dev/null
+++ b/tests/integration/infrastructure-exists.test.ts
@@ -0,0 +1,30 @@
+import { HeadBucketCommand } from "@aws-sdk/client-s3";
+import type { S3Client } from "@aws-sdk/client-s3";
+import {
+ buildSubscriptionConfigBucketName,
+ createS3Client,
+ getDeploymentDetails,
+} from "helpers";
+
+describe("Infrastructure exists", () => {
+ let s3Client: S3Client;
+ let bucketName: string;
+
+ beforeAll(async () => {
+ const deploymentDetails = await getDeploymentDetails();
+ bucketName = buildSubscriptionConfigBucketName(deploymentDetails);
+ s3Client = createS3Client();
+ });
+
+ afterAll(() => {
+ s3Client?.destroy();
+ });
+
+ it("should confirm the subscription config S3 bucket exists", async () => {
+ const response = await s3Client.send(
+ new HeadBucketCommand({ Bucket: bucketName }),
+ );
+
+ expect(response.$metadata.httpStatusCode).toBe(200);
+ });
+});
diff --git a/tests/integration/jest.config.ts b/tests/integration/jest.config.ts
index 6029330..cc0d311 100644
--- a/tests/integration/jest.config.ts
+++ b/tests/integration/jest.config.ts
@@ -2,4 +2,7 @@ import { nodeJestConfig } from "../../jest.config.base";
export default {
...nodeJestConfig,
+ moduleNameMapper: {
+ "^helpers$": "/helpers/index",
+ },
};
diff --git a/tests/integration/package.json b/tests/integration/package.json
index 62e7cfb..425a6cd 100644
--- a/tests/integration/package.json
+++ b/tests/integration/package.json
@@ -12,6 +12,8 @@
"dependencies": {
"@aws-sdk/client-cloudwatch-logs": "^3.991.0",
"@aws-sdk/client-eventbridge": "^3.990.0",
+ "@aws-sdk/client-s3": "^3.821.0",
+ "@aws-sdk/client-sts": "^3.821.0",
"@aws-sdk/client-sqs": "^3.990.0",
"async-wait-until": "^2.0.12"
},
diff --git a/tests/integration/tsconfig.json b/tests/integration/tsconfig.json
index 3fcd6a2..861cd58 100644
--- a/tests/integration/tsconfig.json
+++ b/tests/integration/tsconfig.json
@@ -2,6 +2,9 @@
"compilerOptions": {
"isolatedModules": true,
"paths": {
+ "helpers": [
+ "./helpers/index"
+ ],
"models/*": [
"../../lambdas/client-transform-filter-lambda/src/models/*"
],