Skip to content

Commit 26dd8e1

Browse files
authored
CCM-15633: Add Pact tests for channel status published event (#289)
* CCM-15633: Add pact tests for channel status published event * CCM-15633: Add contract tests to workflow * CCM-15633: Publish pact contracts package * CCM-15633: Don't run contract tests in acceptance stage
1 parent bfa5fe0 commit 26dd8e1

21 files changed

Lines changed: 1912 additions & 34 deletions

.github/workflows/cicd-1-pull-request.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ on:
1515
permissions:
1616
id-token: write
1717
contents: write
18-
packages: read
18+
packages: write
1919

2020
jobs:
2121
metadata:

.github/workflows/stage-2-test.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,48 @@ jobs:
146146
src/**/coverage.xml
147147
utils/**/coverage.xml
148148
lambdas/**/coverage.xml
149+
test-contract:
150+
name: "Contract tests"
151+
runs-on: ubuntu-latest
152+
timeout-minutes: 4
153+
permissions:
154+
contents: read
155+
packages: read
156+
steps:
157+
- name: "Checkout code"
158+
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
159+
- uses: ./.github/actions/node-install
160+
with:
161+
node-version: ${{ inputs.nodejs_version }}
162+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
163+
- name: "Install dependencies"
164+
run: npm ci --ignore-scripts
165+
- name: "Cache generated dependencies"
166+
id: schema-cache
167+
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
168+
with:
169+
path: |
170+
schemas/digital-letters/
171+
output/digital-letters/
172+
src/digital-letters-events/types/
173+
src/digital-letters-events/validators/
174+
src/digital-letters-events/digital_letters_events/models/
175+
src/digital-letters-events/guard-functions/
176+
key: generated-deps-${{ runner.os }}-${{ hashFiles('src/cloudevents/**', 'src/typescript-schema-generator/**', 'src/python-schema-generator/**') }}
177+
- name: "Generate dependencies"
178+
if: steps.schema-cache.outputs.cache-hit != 'true'
179+
run: |
180+
npm run generate-dependencies
181+
- name: "Run contract test suite"
182+
run: |
183+
make test-contract
184+
- name: "Upload generated contracts"
185+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
186+
with:
187+
name: pact-contracts
188+
path: "tests/pact-tests/.pacts"
189+
include-hidden-files: true
190+
149191
test-lint:
150192
name: "Linting"
151193
runs-on: ubuntu-latest

.github/workflows/stage-4-acceptance.yaml

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,6 @@ on:
2222
type: string
2323

2424
jobs:
25-
test-contract:
26-
name: "Contract test"
27-
runs-on: ubuntu-latest
28-
timeout-minutes: 10
29-
steps:
30-
- name: "Checkout code"
31-
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
32-
- name: "Run contract test"
33-
run: |
34-
make test-contract
35-
- name: "Save result"
36-
run: |
37-
echo "Nothing to save"
3825
test-security:
3926
name: "Security test"
4027
runs-on: ubuntu-latest

.github/workflows/stage-5-publish.yaml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,36 @@ jobs:
4040
name: "Publish packages"
4141
runs-on: ubuntu-latest
4242
timeout-minutes: 10
43+
permissions:
44+
contents: read
45+
packages: write
4346

4447
steps:
4548
- name: "Checkout code"
4649
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
50+
- uses: ./.github/actions/node-install
51+
with:
52+
node-version: ${{ inputs.nodejs_version }}
53+
GITHUB_TOKEN: ${{ github.token }}
4754
- name: "Get artifacts: jekyll docs"
4855
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
4956
with:
5057
path: ./artifacts/jekyll-docs-${{ inputs.version }}
5158
name: jekyll-docs-${{ inputs.version }}
52-
5359
- name: "Get artifacts: schema"
5460
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
5561
with:
5662
path: ./artifacts/schemas-${{ inputs.version }}
5763
name: schemas-${{ inputs.version }}
64+
- name: "Get artifacts: pact contracts"
65+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
66+
with:
67+
path: ./pact-contracts/pacts
68+
name: pact-contracts
69+
- name: "Publish pact contracts package"
70+
run: |
71+
export BRANCH_NAME=${GITHUB_HEAD_REF:-$(echo $GITHUB_REF | sed 's#refs/heads/##')}
72+
scripts/publish-pact-contracts.sh
5873
5974
6075
- name: Draft Release

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ coverage.xml
5757
*.coverage
5858
coverage/
5959
coverage-*/
60+
**/.pacts
61+
/pact-contracts/pacts
6062
**/playwright-report
6163
**/test-results
6264
plugin-cache

eslint.config.mjs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,12 @@ export default defineConfig([
224224
'import-x/no-relative-packages': 0,
225225
},
226226
},
227+
{
228+
files: ['tests/pact-tests/**'],
229+
rules: {
230+
'no-relative-import-paths/no-relative-import-paths': 0,
231+
},
232+
},
227233
{
228234
files: ['scripts/**'],
229235
rules: {

0 commit comments

Comments
 (0)