From 12c53a3d4d6a227dd33ff9e0b20ca19ecc76560b Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Sun, 8 Oct 2023 16:13:48 +0200 Subject: [PATCH] feat: Add CI configuration for backend tests --- .github/workflows/backend.yml | 48 +++++++++++++++++++ packages/backend/.env-example.test | 14 +++--- packages/backend/src/config/app.ts | 2 + .../backend/test/setup/prepare-test-env.ts | 6 ++- 4 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/backend.yml diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml new file mode 100644 index 00000000..9874f288 --- /dev/null +++ b/.github/workflows/backend.yml @@ -0,0 +1,48 @@ +name: Automatisch Backend Tests +on: + push: + branches: + - main + pull_request: + workflow_dispatch: + +jobs: + test: + timeout-minutes: 60 + runs-on: + - ubuntu-latest + services: + postgres: + image: postgres:14.5-alpine + env: + POSTGRES_DB: automatisch_test + POSTGRES_USER: automatisch_test_user + POSTGRES_PASSWORD: automatisch_test_user_password + options: >- + --health-cmd "pg_isready -U automatisch_test_user -d automatisch_test" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + redis: + image: redis:7.0.4-alpine + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 6379:6379 + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Install dependencies + run: cd packages/backend && yarn + - name: Copy .env-example.test file to .env.test + run: cd packages/backend && cp .env-example.test .env.test + - name: Run tests + run: cd packages/backend && yarn test diff --git a/packages/backend/.env-example.test b/packages/backend/.env-example.test index fc36c045..38d96a64 100644 --- a/packages/backend/.env-example.test +++ b/packages/backend/.env-example.test @@ -3,14 +3,12 @@ HOST=localhost PROTOCOL=http PORT=3000 LOG_LEVEL=debug -WEBHOOK_SECRET_KEY=secret +ENCRYPTION_KEY=sample_encryption_key +WEBHOOK_SECRET_KEY=sample_webhook_secret_key +APP_SECRET_KEY=sample_app_secret_key +POSTGRES_HOST=localhost POSTGRES_DATABASE=automatisch_test POSTGRES_PORT=5432 -POSTGRES_HOST=localhost POSTGRES_USERNAME=automatisch_test_user -POSTGRES_PASSWORD= -POSTGRES_ENABLE_SSL=false -ENCRYPTION_KEY=secret -APP_SECRET_KEY=secret -REDIS_PORT=6379 -REDIS_HOST=127.0.0.1 +POSTGRES_PASSWORD=automatisch_test_user_password +REDIS_HOST=localhost diff --git a/packages/backend/src/config/app.ts b/packages/backend/src/config/app.ts index 01a6982b..bfa76088 100644 --- a/packages/backend/src/config/app.ts +++ b/packages/backend/src/config/app.ts @@ -55,6 +55,7 @@ type AppConfig = { paddlePublicKey: string; licenseKey: string; sentryDsn: string; + CI: boolean; }; const host = process.env.HOST || 'localhost'; @@ -131,6 +132,7 @@ const appConfig: AppConfig = { paddlePublicKey: process.env.PADDLE_PUBLIC_KEY, licenseKey: process.env.LICENSE_KEY, sentryDsn: process.env.SENTRY_DSN, + CI: process.env.CI === 'true', }; if (!appConfig.encryptionKey) { diff --git a/packages/backend/test/setup/prepare-test-env.ts b/packages/backend/test/setup/prepare-test-env.ts index 19bc85c9..786ee483 100644 --- a/packages/backend/test/setup/prepare-test-env.ts +++ b/packages/backend/test/setup/prepare-test-env.ts @@ -2,9 +2,13 @@ import './check-env-file'; import { createDatabaseAndUser } from '../../bin/database/utils'; import { client as knex } from '../../src/config/database'; import logger from '../../src/helpers/logger'; +import appConfig from '../../src/config/app'; const createAndMigrateDatabase = async () => { - await createDatabaseAndUser(); + if (!appConfig.CI) { + await createDatabaseAndUser(); + } + const migrator = knex.migrate; await migrator.latest();