Skip to content

Conformance Checks #1456

Conformance Checks

Conformance Checks #1456

Workflow file for this run

name: Conformance Checks
permissions: {}
on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '47 11 * * 1'
workflow_dispatch:
inputs:
conformance_suite_version:
description: 'Conformance Suite version override, e.g. release-v5.1.39 (takes precedence over vars.CONFORMANCE_SUITE_VERSION)'
required: false
type: string
jobs:
build:
uses: panva/.github/.github/workflows/build-conformance-suite.yml@main
with:
version: ${{ inputs.conformance_suite_version || vars.CONFORMANCE_SUITE_VERSION || '' }}
run:
runs-on: ubuntu-latest
needs:
- build
strategy:
fail-fast: false
matrix:
setup:
# Core 1.0 response_type=code
- plan: oidcc-client-basic-certification-test-plan
- plan: oidcc-client-basic-certification-test-plan
variant:
client_registration: dynamic_client
# Core 1.0 response_type=code id_token
- plan: oidcc-client-hybrid-certification-test-plan
- plan: oidcc-client-hybrid-certification-test-plan
variant:
client_registration: dynamic_client
# Comprehensive Core 1.0 client test
- plan: oidcc-client-test-plan
- plan: oidcc-client-test-plan
variant:
response_type: code id_token
# Financial-grade API Security Profile 1.0 - Part 2: Advanced
- plan: fapi1-advanced-final-client-test-plan
variant:
client_auth_type: 'private_key_jwt'
- plan: fapi1-advanced-final-client-test-plan
variant:
client_auth_type: 'mtls'
- plan: fapi1-advanced-final-client-test-plan
variant:
fapi_response_mode: 'plain_response'
fapi_auth_request_method: 'by_value'
# FAPI 2.0 Security Profile Final
- plan: fapi2-security-profile-final-client-test-plan
variant:
client_auth_type: 'private_key_jwt'
sender_constrain: 'dpop'
- plan: fapi2-security-profile-final-client-test-plan
variant:
client_auth_type: 'private_key_jwt'
sender_constrain: 'mtls'
- plan: fapi2-security-profile-final-client-test-plan
variant:
client_auth_type: 'mtls'
sender_constrain: 'dpop'
- plan: fapi2-security-profile-final-client-test-plan
variant:
client_auth_type: 'mtls'
sender_constrain: 'mtls'
# FAPI 2.0 Message Signing Final
- plan: fapi2-message-signing-final-client-test-plan
- plan: fapi2-message-signing-final-client-test-plan
variant:
fapi_client_type: 'plain_oauth'
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Load Cached Conformance Suite Build
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
id: cache
with:
path: ./conformance-suite
key: ${{ needs.build.outputs.cache-key }}
fail-on-cache-miss: true
- name: Run Conformance Suite
working-directory: ./conformance-suite
env:
COMPOSE_BAKE: true
run: |
docker compose -f docker-compose-dev.yml up -d
while ! curl -skfail https://localhost.emobix.co.uk:8443/api/runner/available >/dev/null; do sleep 2; done
- name: Setup node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: lts/*
cache: 'npm'
- run: npm clean-install
- name: npm run conformance
run: |
set -o pipefail
npm run conformance | tee capture.txt
env:
NODE_TLS_REJECT_UNAUTHORIZED: 0
SUITE_BASE_URL: https://localhost.emobix.co.uk:8443
PLAN_NAME: ${{ matrix.setup.plan }}
VARIANT: ${{ toJSON(matrix.setup.variant) }}
- run: node ./conformance/.parse-logs.mjs capture.txt
- name: Stop Conformance Suite
working-directory: ./conformance-suite
env:
COMPOSE_BAKE: true
run: |
docker compose -f docker-compose-dev.yml down
sudo rm -rf mongo
- name: Upload test artifacts
id: artifact-upload-step
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
path: |
*.zip
*.txt
name: conformance results idx(${{ strategy.job-index }})
if-no-files-found: error
if: ${{ always() }}
- if: ${{ success() }}
run: |
echo "### [:tada:](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts/${{ steps.artifact-upload-step.outputs.artifact-id }})" >> $GITHUB_STEP_SUMMARY
- if: ${{ failure() }}
run: |
echo "### [:exclamation:](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts/${{ steps.artifact-upload-step.outputs.artifact-id }})" >> $GITHUB_STEP_SUMMARY