name: Integration Tests

on:
  schedule:
    - cron: '30 19 * * MON-FRI'
  workflow_dispatch:

env:
  # This may seem a little redundant, but copying the configuration to an environment variable makes it easier and safer
  # to then write its contents to a file
  INTEGRATION_TEST_CONFIG: ${{ vars.INTEGRATION_TEST_CONFIG }}

jobs:
  build:
    if: ${{ vars.INTEGRATION_TEST_CONFIG != '' }}
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
        with:
          distribution: 'temurin'
          java-version-file: .java-version
          cache: 'maven'
      - uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0
        name: Configure AWS credentials from Test account
        with:
          role-to-assume: ${{ vars.AWS_ROLE }}
          aws-region: ${{ vars.AWS_REGION }}
      - name: Write integration test configuration
        run: |
          mkdir -p integration-tests/src/main/resources
          echo "${INTEGRATION_TEST_CONFIG}" > integration-tests/src/main/resources/config.yml
      - name: Run and verify integration tests
        run: ./mvnw clean compile test-compile failsafe:integration-test failsafe:verify -P aws-sso
