Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run e2e tests on GitHub actions #63

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
120 changes: 120 additions & 0 deletions .github/workflows/api-qs-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
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:
ewanharris marked this conversation as resolved.
Show resolved Hide resolved
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

- 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()
18 changes: 18 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Test

on:
workflow_dispatch:
pull_request_target:
types:
- opened
- synchronize
push:
branches:
- main

jobs:
RS256-tests:
uses: ./.github/workflows/api-qs-tests.yml
with:
sample-directory: '01-Authorization-RS256'
secrets: inherit