Merge pull request #1333 from automatisch/backend-tests-ci

feat: Add CI configuration for backend tests
This commit is contained in:
Ömer Faruk Aydın
2023-10-11 14:07:01 +02:00
committed by GitHub
4 changed files with 61 additions and 9 deletions

48
.github/workflows/backend.yml vendored Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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) {

View File

@@ -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();