From 7a5ad29456f1d04f1fd7f80bd6ebfc08ceebf657 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 12:09:05 +0000 Subject: [PATCH 01/13] Add first pass at ci on gh actions --- .github/workflows/test.yml | 96 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..d12fdc7 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,96 @@ +name: Test + +on: + workflow_dispatch: + pull_request_target: + types: + - opened + - synchronize + push: + branches: + - main + - ci/setup-gh-actions + +jobs: + authorize: + name: Authorize + environment: ${{ github.actor != 'dependabot[bot]' && github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository && 'external' || 'internal' }} + runs-on: ubuntu-latest + steps: + - run: true + + sample: + needs: authorize + name: Test Sample + runs-on: ubuntu-latest + + steps: + + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha || github.ref }} + + - name: Checkout Tests + uses: actions/checkout@v4 + with: + repository: auth0-samples/api-quickstarts-tests + path: tests + + - name: Setup sample .env + working-directory: 01-Authorization-RS256 + env: + AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} + API_IDENTIFIER: ${{ secrets.AUTH0_AUDIENCE }} + run: | + sed \ + -e "s|{DOMAIN}|$AUTH0_DOMAIN|g" \ + -e "s|{API_IDENTIFIER}|$API_IDENTIFIER|g" \ + .env.example > .env + + - name: Startup sample + working-directory: 01-Authorization-RS256 + run: sh exec.sh & + + - name: Wait for sample to start + working-directory: 01-Authorization-RS256 + run: | + until $(curl --silent --head --output /dev/null --fail http://localhost:3010/api/public); do + sleep 5 + done + + - name: Setup tests .env + working-directory: tests + env: + AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} + API_IDENTIFIER: ${{ secrets.API_IDENTIFIER }} + AUTH0_CLIENT_ID_1: ${{ secrets.AUTH0_CLIENT_ID_1 }} # No scopes + AUTH0_CLIENT_SECRET_1: ${{ secrets.AUTH0_CLIENT_SECRET_1 }} + AUTH0_CLIENT_ID_2: ${{ secrets.AUTH0_CLIENT_ID_2 }} # Read scope + AUTH0_CLIENT_SECRET_2: ${{ secrets.AUTH0_CLIENT_SECRET_2 }} + AUTH0_CLIENT_ID_3: ${{ secrets.AUTH0_CLIENT_ID_3 }} # Wrte scope + AUTH0_CLIENT_SECRET_3: ${{ secrets.AUTH0_CLIENT_SECRET_3 }} + AUTH0_CLIENT_ID_4: ${{ secrets.AUTH0_CLIENT_ID_4 }} # Read/write scope + AUTH0_CLIENT_SECRET_4: ${{ secrets.AUTH0_CLIENT_SECRET_4 }} + run: | + sed \ + -e "s|{DOMAIN}|$AUTH0_TEST_DOMAIN|g" \ + -e "s|{CLIENT_ID}|$AUTH0_TEST_CLIENT_ID|g" \ + -e "s|{API_ID}|$AUTH0_TEST_API_IDENTIFIER|g" \ + -e "s|{CLIENT_ID_1}|$AUTH0_CLIENT_ID_1|g" \ + -e "s|{CLIENT_SECRET_1}|$AUTH0_CLIENT_SECRET_1|g" \ + -e "s|{CLIENT_ID_2}|$AUTH0_CLIENT_ID_2|g" \ + -e "s|{CLIENT_SECRET_2}|$AUTH0_CLIENT_SECRET_2|g" \ + -e "s|{CLIENT_ID_3}|$AUTH0_CLIENT_ID_3|g" \ + -e "s|{CLIENT_SECRET_3}|$AUTH0_CLIENT_SECRET_3|g" \ + -e "s|{CLIENT_ID_4}|$AUTH0_CLIENT_ID_4|g" \ + -e "s|{CLIENT_SECRET_4}|$AUTH0_CLIENT_SECRET_4|g" \ + .env.example > .env + + - name: Install dependencies + working-directory: tests + run: npm i + + - name: Run tests + working-directory: tests + run: npm test From 4ed5fe8bffa8ce2dad618280ff70d2b14bc2b4f4 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 12:12:28 +0000 Subject: [PATCH 02/13] Setup docker --- .github/workflows/test.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d12fdc7..5a33abf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,6 +36,9 @@ jobs: with: repository: auth0-samples/api-quickstarts-tests path: tests + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - name: Setup sample .env working-directory: 01-Authorization-RS256 @@ -53,11 +56,9 @@ jobs: run: sh exec.sh & - name: Wait for sample to start - working-directory: 01-Authorization-RS256 run: | - until $(curl --silent --head --output /dev/null --fail http://localhost:3010/api/public); do - sleep 5 - done + sleep 10 + docker run --network host --rm appropriate/curl --retry 8 --retry-connrefused -v localhost:3010 - name: Setup tests .env working-directory: tests From bb19036d3cc934323f32a899072205df0dfbc713 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 12:14:10 +0000 Subject: [PATCH 03/13] Dont background the build script as it starts the server --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5a33abf..fa299ef 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -53,7 +53,7 @@ jobs: - name: Startup sample working-directory: 01-Authorization-RS256 - run: sh exec.sh & + run: sh exec.sh - name: Wait for sample to start run: | From 999f09380e87aa0fd0d270a2047545ef0f909422 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 12:17:23 +0000 Subject: [PATCH 04/13] Dont use exec script --- .github/workflows/test.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fa299ef..229caa3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -51,9 +51,14 @@ jobs: -e "s|{API_IDENTIFIER}|$API_IDENTIFIER|g" \ .env.example > .env - - name: Startup sample + - name: Build PR image working-directory: 01-Authorization-RS256 - run: sh exec.sh + env: + IMAGE_NAME: ${{ github.event.pull_request.head.sha || github.sha }} + CONTAINER_NAME: ${{ github.event.pull_request.head.sha || github.sha }} + run: | + docker build -t $IMAGE_NAME . + docker run -d --env-file .env -p 3010:3010 $CONTAINER_NAME $IMAGE_NAME - name: Wait for sample to start run: | From 8d645e61812d0da4f34d955c5124a827b5749073 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 12:20:45 +0000 Subject: [PATCH 05/13] Add missing name arg --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 229caa3..1e85726 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,7 +58,7 @@ jobs: CONTAINER_NAME: ${{ github.event.pull_request.head.sha || github.sha }} run: | docker build -t $IMAGE_NAME . - docker run -d --env-file .env -p 3010:3010 $CONTAINER_NAME $IMAGE_NAME + docker run -d --env-file .env -p 3010:3010 --name $CONTAINER_NAME $IMAGE_NAME - name: Wait for sample to start run: | From 7231c662e893762e8ce8051b1093bf5ada875d50 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 13:54:01 +0000 Subject: [PATCH 06/13] Fix environment variable names --- .github/workflows/test.yml | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1e85726..f7546c1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -44,7 +44,7 @@ jobs: working-directory: 01-Authorization-RS256 env: AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} - API_IDENTIFIER: ${{ secrets.AUTH0_AUDIENCE }} + API_IDENTIFIER: ${{ secrets.API_IDENTIFIER }} run: | sed \ -e "s|{DOMAIN}|$AUTH0_DOMAIN|g" \ @@ -70,27 +70,26 @@ jobs: env: AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} API_IDENTIFIER: ${{ secrets.API_IDENTIFIER }} - AUTH0_CLIENT_ID_1: ${{ secrets.AUTH0_CLIENT_ID_1 }} # No scopes - AUTH0_CLIENT_SECRET_1: ${{ secrets.AUTH0_CLIENT_SECRET_1 }} - AUTH0_CLIENT_ID_2: ${{ secrets.AUTH0_CLIENT_ID_2 }} # Read scope - AUTH0_CLIENT_SECRET_2: ${{ secrets.AUTH0_CLIENT_SECRET_2 }} - AUTH0_CLIENT_ID_3: ${{ secrets.AUTH0_CLIENT_ID_3 }} # Wrte scope - AUTH0_CLIENT_SECRET_3: ${{ secrets.AUTH0_CLIENT_SECRET_3 }} - AUTH0_CLIENT_ID_4: ${{ secrets.AUTH0_CLIENT_ID_4 }} # Read/write scope - AUTH0_CLIENT_SECRET_4: ${{ secrets.AUTH0_CLIENT_SECRET_4 }} + CLIENT_ID_SCOPES_NONE: ${{ secrets.CLIENT_ID_SCOPES_NONE }} + CLIENT_SECRET_SCOPES_NONE: ${{ secrets.CLIENT_SECRET_SCOPES_NONE }} + CLIENT_ID_SCOPES_READ: ${{ secrets.CLIENT_ID_SCOPES_READ }} + CLIENT_SECRET_SCOPES_READ: ${{ secrets.CLIENT_SECRET_SCOPES_READ }} + CLIENT_ID_SCOPES_WRITE: ${{ secrets.CLIENT_ID_SCOPES_WRITE }} + CLIENT_SECRET_SCOPES_WRITE: ${{ secrets.CLIENT_SECRET_SCOPES_WRITE }} + CLIENT_ID_SCOPES_READWRITE: ${{ secrets.CLIENT_ID_SCOPES_READWRITE }} + CLIENT_SECRET_SCOPES_READWRITE: ${{ secrets.CLIENT_SECRET_SCOPES_READWRITE }} run: | sed \ -e "s|{DOMAIN}|$AUTH0_TEST_DOMAIN|g" \ - -e "s|{CLIENT_ID}|$AUTH0_TEST_CLIENT_ID|g" \ - -e "s|{API_ID}|$AUTH0_TEST_API_IDENTIFIER|g" \ - -e "s|{CLIENT_ID_1}|$AUTH0_CLIENT_ID_1|g" \ - -e "s|{CLIENT_SECRET_1}|$AUTH0_CLIENT_SECRET_1|g" \ - -e "s|{CLIENT_ID_2}|$AUTH0_CLIENT_ID_2|g" \ - -e "s|{CLIENT_SECRET_2}|$AUTH0_CLIENT_SECRET_2|g" \ - -e "s|{CLIENT_ID_3}|$AUTH0_CLIENT_ID_3|g" \ - -e "s|{CLIENT_SECRET_3}|$AUTH0_CLIENT_SECRET_3|g" \ - -e "s|{CLIENT_ID_4}|$AUTH0_CLIENT_ID_4|g" \ - -e "s|{CLIENT_SECRET_4}|$AUTH0_CLIENT_SECRET_4|g" \ + -e "s|{API_ID}|$API_IDENTIFIER|g" \ + -e "s|{CLIENT_ID_1}|$CLIENT_ID_SCOPES_NONE|g" \ + -e "s|{CLIENT_SECRET_1}|$CLIENT_SECRET_SCOPES_NONE|g" \ + -e "s|{CLIENT_ID_2}|$CLIENT_ID_SCOPES_READ|g" \ + -e "s|{CLIENT_SECRET_2}|$CLIENT_SECRET_SCOPES_READ|g" \ + -e "s|{CLIENT_ID_3}|$CLIENT_ID_SCOPES_WRITE|g" \ + -e "s|{CLIENT_SECRET_3}|$CLIENT_SECRET_SCOPES_WRITE|g" \ + -e "s|{CLIENT_ID_4}|$CLIENT_ID_SCOPES_READWRITE|g" \ + -e "s|{CLIENT_SECRET_4}|$CLIENT_SECRET_SCOPES_READWRITE|g" \ .env.example > .env - name: Install dependencies From 094647c6c426ee2db2d7d5989ec0f293840f9286 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 14:45:22 +0000 Subject: [PATCH 07/13] Pass secrets in as environment variables directly --- .github/workflows/test.yml | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f7546c1..1fb8031 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -65,7 +65,11 @@ jobs: sleep 10 docker run --network host --rm appropriate/curl --retry 8 --retry-connrefused -v localhost:3010 - - name: Setup tests .env + - name: Install dependencies + working-directory: tests + run: npm i + + - name: Run tests working-directory: tests env: AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} @@ -78,24 +82,4 @@ jobs: CLIENT_SECRET_SCOPES_WRITE: ${{ secrets.CLIENT_SECRET_SCOPES_WRITE }} CLIENT_ID_SCOPES_READWRITE: ${{ secrets.CLIENT_ID_SCOPES_READWRITE }} CLIENT_SECRET_SCOPES_READWRITE: ${{ secrets.CLIENT_SECRET_SCOPES_READWRITE }} - run: | - sed \ - -e "s|{DOMAIN}|$AUTH0_TEST_DOMAIN|g" \ - -e "s|{API_ID}|$API_IDENTIFIER|g" \ - -e "s|{CLIENT_ID_1}|$CLIENT_ID_SCOPES_NONE|g" \ - -e "s|{CLIENT_SECRET_1}|$CLIENT_SECRET_SCOPES_NONE|g" \ - -e "s|{CLIENT_ID_2}|$CLIENT_ID_SCOPES_READ|g" \ - -e "s|{CLIENT_SECRET_2}|$CLIENT_SECRET_SCOPES_READ|g" \ - -e "s|{CLIENT_ID_3}|$CLIENT_ID_SCOPES_WRITE|g" \ - -e "s|{CLIENT_SECRET_3}|$CLIENT_SECRET_SCOPES_WRITE|g" \ - -e "s|{CLIENT_ID_4}|$CLIENT_ID_SCOPES_READWRITE|g" \ - -e "s|{CLIENT_SECRET_4}|$CLIENT_SECRET_SCOPES_READWRITE|g" \ - .env.example > .env - - - name: Install dependencies - working-directory: tests - run: npm i - - - name: Run tests - working-directory: tests run: npm test From 4adb443efe784a8d4033a695aa9ad16244536dbd Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 14:53:57 +0000 Subject: [PATCH 08/13] Set API_URL environent variable --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1fb8031..8eeda9c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -74,6 +74,7 @@ jobs: env: AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} API_IDENTIFIER: ${{ secrets.API_IDENTIFIER }} + API_URL: 'http://localhost:3010' CLIENT_ID_SCOPES_NONE: ${{ secrets.CLIENT_ID_SCOPES_NONE }} CLIENT_SECRET_SCOPES_NONE: ${{ secrets.CLIENT_SECRET_SCOPES_NONE }} CLIENT_ID_SCOPES_READ: ${{ secrets.CLIENT_ID_SCOPES_READ }} From 608025939bfff7d7235c12c155c12f5fdfeda733 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 14:56:16 +0000 Subject: [PATCH 09/13] Fix environment variable names --- .github/workflows/test.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8eeda9c..63d8318 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -75,12 +75,12 @@ jobs: AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} API_IDENTIFIER: ${{ secrets.API_IDENTIFIER }} API_URL: 'http://localhost:3010' - CLIENT_ID_SCOPES_NONE: ${{ secrets.CLIENT_ID_SCOPES_NONE }} - CLIENT_SECRET_SCOPES_NONE: ${{ secrets.CLIENT_SECRET_SCOPES_NONE }} - CLIENT_ID_SCOPES_READ: ${{ secrets.CLIENT_ID_SCOPES_READ }} - CLIENT_SECRET_SCOPES_READ: ${{ secrets.CLIENT_SECRET_SCOPES_READ }} - CLIENT_ID_SCOPES_WRITE: ${{ secrets.CLIENT_ID_SCOPES_WRITE }} - CLIENT_SECRET_SCOPES_WRITE: ${{ secrets.CLIENT_SECRET_SCOPES_WRITE }} - CLIENT_ID_SCOPES_READWRITE: ${{ secrets.CLIENT_ID_SCOPES_READWRITE }} - CLIENT_SECRET_SCOPES_READWRITE: ${{ secrets.CLIENT_SECRET_SCOPES_READWRITE }} + AUTH0_CLIENT_ID_1: ${{ secrets.CLIENT_ID_SCOPES_NONE }} + AUTH0_CLIENT_SECRET_1: ${{ secrets.CLIENT_SECRET_SCOPES_NONE }} + AUTH0_CLIENT_ID_2: ${{ secrets.CLIENT_ID_SCOPES_READ }} + AUTH0_CLIENT_SECRET_2: ${{ secrets.CLIENT_SECRET_SCOPES_READ }} + AUTH0_CLIENT_ID_3: ${{ secrets.CLIENT_ID_SCOPES_WRITE }} + AUTH0_CLIENT_SECRET_3: ${{ secrets.CLIENT_SECRET_SCOPES_WRITE }} + AUTH0_CLIENT_ID_4: ${{ secrets.CLIENT_ID_SCOPES_READWRITE }} + AUTH0_CLIENT_SECRET_4: ${{ secrets.CLIENT_SECRET_SCOPES_READWRITE }} run: npm test From f9b2dd7b2cce1d9f4552e07d86a5df4c788e47fe Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 15:30:51 +0000 Subject: [PATCH 10/13] Move to a reusable workflow --- .github/workflows/api-qs-tests.yml | 112 +++++++++++++++++++++++++++++ .github/workflows/test.yml | 77 ++------------------ 2 files changed, 117 insertions(+), 72 deletions(-) create mode 100644 .github/workflows/api-qs-tests.yml diff --git a/.github/workflows/api-qs-tests.yml b/.github/workflows/api-qs-tests.yml new file mode 100644 index 0000000..fa6b740 --- /dev/null +++ b/.github/workflows/api-qs-tests.yml @@ -0,0 +1,112 @@ +name: Run API QuickStart Sample Tests + +on: + workflow_call: + inputs: + sample-directory: + required: true + type: string + api-url: + default: 'http://localhost:3010' + type: string + test-directory: + default: 'tests' + type: string + test-ref: + default: 'master' + type: string + secrets: + AUTH0_DOMAIN: + required: true + API_IDENTIFIER: + required: true + CLIENT_ID_SCOPES_NONE: + required: true + CLIENT_SECRET_SCOPES_NONE: + required: true + CLIENT_ID_SCOPES_READ: + required: true + CLIENT_SECRET_SCOPES_READ: + required: true + CLIENT_ID_SCOPES_WRITE: + required: true + CLIENT_SECRET_SCOPES_WRITE: + required: true + CLIENT_ID_SCOPES_READWRITE: + required: true + CLIENT_SECRET_SCOPES_READWRITE: + required: true +jobs: + authorize: + name: Authorize + environment: ${{ github.actor != 'dependabot[bot]' && github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository && 'external' || 'internal' }} + runs-on: ubuntu-latest + steps: + - run: true + + sample: + needs: authorize + name: Test Sample + runs-on: ubuntu-latest + + steps: + + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha || github.ref }} + + - name: Checkout Tests + uses: actions/checkout@v4 + with: + repository: auth0-samples/api-quickstarts-tests + path: ${{ inputs.test-directory }} + ref: ${{ inputs.test-ref }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Setup sample .env + working-directory: ${{ inputs.sample-directory }} + env: + AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} + API_IDENTIFIER: ${{ secrets.API_IDENTIFIER }} + run: | + sed \ + -e "s|{DOMAIN}|$AUTH0_DOMAIN|g" \ + -e "s|{API_IDENTIFIER}|$API_IDENTIFIER|g" \ + .env.example > .env + + - name: Build PR image + working-directory: ${{ inputs.sample-directory }} + env: + IMAGE_NAME: ${{ github.event.pull_request.head.sha || github.sha }} + CONTAINER_NAME: ${{ github.event.pull_request.head.sha || github.sha }} + run: | + docker build -t $IMAGE_NAME . + docker run -d --env-file .env -p 3010:3010 --name $CONTAINER_NAME $IMAGE_NAME + + - name: Wait for sample to start + run: | + sleep 10 + docker run --network host --rm appropriate/curl --retry 8 --retry-connrefused -v localhost:3010 + + - name: Install dependencies + working-directory: tests + run: npm i + + - name: Run tests + working-directory: tests + env: + AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} + API_IDENTIFIER: ${{ secrets.API_IDENTIFIER }} + API_URL: ${{ inputs.api-url }} + AUTH0_CLIENT_ID_1: ${{ secrets.CLIENT_ID_SCOPES_NONE }} + AUTH0_CLIENT_SECRET_1: ${{ secrets.CLIENT_SECRET_SCOPES_NONE }} + AUTH0_CLIENT_ID_2: ${{ secrets.CLIENT_ID_SCOPES_READ }} + AUTH0_CLIENT_SECRET_2: ${{ secrets.CLIENT_SECRET_SCOPES_READ }} + AUTH0_CLIENT_ID_3: ${{ secrets.CLIENT_ID_SCOPES_WRITE }} + AUTH0_CLIENT_SECRET_3: ${{ secrets.CLIENT_SECRET_SCOPES_WRITE }} + AUTH0_CLIENT_ID_4: ${{ secrets.CLIENT_ID_SCOPES_READWRITE }} + AUTH0_CLIENT_SECRET_4: ${{ secrets.CLIENT_SECRET_SCOPES_READWRITE }} + run: npm test diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 63d8318..5254851 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,75 +12,8 @@ on: - ci/setup-gh-actions jobs: - authorize: - name: Authorize - environment: ${{ github.actor != 'dependabot[bot]' && github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository && 'external' || 'internal' }} - runs-on: ubuntu-latest - steps: - - run: true - - sample: - needs: authorize - name: Test Sample - runs-on: ubuntu-latest - - steps: - - - name: Checkout code - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.head.sha || github.ref }} - - - name: Checkout Tests - uses: actions/checkout@v4 - with: - repository: auth0-samples/api-quickstarts-tests - path: tests - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Setup sample .env - working-directory: 01-Authorization-RS256 - env: - AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} - API_IDENTIFIER: ${{ secrets.API_IDENTIFIER }} - run: | - sed \ - -e "s|{DOMAIN}|$AUTH0_DOMAIN|g" \ - -e "s|{API_IDENTIFIER}|$API_IDENTIFIER|g" \ - .env.example > .env - - - name: Build PR image - working-directory: 01-Authorization-RS256 - env: - IMAGE_NAME: ${{ github.event.pull_request.head.sha || github.sha }} - CONTAINER_NAME: ${{ github.event.pull_request.head.sha || github.sha }} - run: | - docker build -t $IMAGE_NAME . - docker run -d --env-file .env -p 3010:3010 --name $CONTAINER_NAME $IMAGE_NAME - - - name: Wait for sample to start - run: | - sleep 10 - docker run --network host --rm appropriate/curl --retry 8 --retry-connrefused -v localhost:3010 - - - name: Install dependencies - working-directory: tests - run: npm i - - - name: Run tests - working-directory: tests - env: - AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} - API_IDENTIFIER: ${{ secrets.API_IDENTIFIER }} - API_URL: 'http://localhost:3010' - AUTH0_CLIENT_ID_1: ${{ secrets.CLIENT_ID_SCOPES_NONE }} - AUTH0_CLIENT_SECRET_1: ${{ secrets.CLIENT_SECRET_SCOPES_NONE }} - AUTH0_CLIENT_ID_2: ${{ secrets.CLIENT_ID_SCOPES_READ }} - AUTH0_CLIENT_SECRET_2: ${{ secrets.CLIENT_SECRET_SCOPES_READ }} - AUTH0_CLIENT_ID_3: ${{ secrets.CLIENT_ID_SCOPES_WRITE }} - AUTH0_CLIENT_SECRET_3: ${{ secrets.CLIENT_SECRET_SCOPES_WRITE }} - AUTH0_CLIENT_ID_4: ${{ secrets.CLIENT_ID_SCOPES_READWRITE }} - AUTH0_CLIENT_SECRET_4: ${{ secrets.CLIENT_SECRET_SCOPES_READWRITE }} - run: npm test + RS256-tests: + uses: ./.github/workflows/api-qs-tests.yml + with: + sample-directory: '01-Authorization-RS256' + secrets: inherit From 41790e9bc949098e58a9f08e652957f34b129fce Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 15:32:57 +0000 Subject: [PATCH 11/13] Remove temporary branch --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5254851..04f549e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,7 +9,6 @@ on: push: branches: - main - - ci/setup-gh-actions jobs: RS256-tests: From 1530455b6640afb6b23527496f63cd9dac2cefea Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 15:48:19 +0000 Subject: [PATCH 12/13] Add collecting of app logs when tests fail --- .github/workflows/api-qs-tests.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/api-qs-tests.yml b/.github/workflows/api-qs-tests.yml index fa6b740..b77920d 100644 --- a/.github/workflows/api-qs-tests.yml +++ b/.github/workflows/api-qs-tests.yml @@ -110,3 +110,11 @@ jobs: AUTH0_CLIENT_ID_4: ${{ secrets.CLIENT_ID_SCOPES_READWRITE }} AUTH0_CLIENT_SECRET_4: ${{ secrets.CLIENT_SECRET_SCOPES_READWRITE }} run: npm test + + - name: Copy app logs + env: + CONTAINER_NAME: ${{ github.event.pull_request.head.sha || github.sha }} + run: | + mkdir -p /tmp/out + docker logs $CONTAINER_NAME > /tmp/out/app_logs.log + if: failure() \ No newline at end of file From 8f61cd0d6ed64968116272559c35130e6ffcef7c Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 19 Dec 2023 15:55:58 +0000 Subject: [PATCH 13/13] Update .github/workflows/api-qs-tests.yml --- .github/workflows/api-qs-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/api-qs-tests.yml b/.github/workflows/api-qs-tests.yml index b77920d..90801d0 100644 --- a/.github/workflows/api-qs-tests.yml +++ b/.github/workflows/api-qs-tests.yml @@ -44,7 +44,7 @@ jobs: steps: - run: true - sample: + tests: needs: authorize name: Test Sample runs-on: ubuntu-latest