From b24f57797526595b81cac85b68e7bb81589e648c Mon Sep 17 00:00:00 2001 From: Tibo De Peuter Date: Sun, 20 Apr 2025 20:48:06 +0200 Subject: [PATCH] chore: Cleanup --- backend/.env.test | 5 +++++ backend/tool/seed.ts | 13 +++++++++---- backend/tool/startTestApp.ts | 10 +++------- frontend/package.json | 2 +- frontend/src/controllers/base-controller.ts | 14 +++++++++++--- frontend/tests/setup-backend.ts | 2 +- 6 files changed, 30 insertions(+), 16 deletions(-) diff --git a/backend/.env.test b/backend/.env.test index 9020e581..4444ec29 100644 --- a/backend/.env.test +++ b/backend/.env.test @@ -12,4 +12,9 @@ DWENGO_PORT=3000 DWENGO_DB_NAME=":memory:" DWENGO_DB_UPDATE=true +DWENGO_AUTH_STUDENT_URL=http://localhost:7080/realms/student +DWENGO_AUTH_STUDENT_JWKS_ENDPOINT=http://localhost:7080/realms/student/protocol/openid-connect/certs +DWENGO_AUTH_TEACHER_URL=http://localhost:7080/realms/teacher +DWENGO_AUTH_TEACHER_JWKS_ENDPOINT=http://localhost:7080/realms/teacher/protocol/openid-connect/certs + DWENGO_CORS_ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000 diff --git a/backend/tool/seed.ts b/backend/tool/seed.ts index c781cdf4..2ef42850 100644 --- a/backend/tool/seed.ts +++ b/backend/tool/seed.ts @@ -14,14 +14,12 @@ import { makeTestQuestions } from '../tests/test_assets/questions/questions.test import { makeTestStudents } from '../tests/test_assets/users/students.testdata.js'; import { makeTestTeachers } from '../tests/test_assets/users/teachers.testdata.js'; import { getLogger, Logger } from '../src/logging/initalize.js'; -import { Collection } from '@mikro-orm/core'; +import { Collection, MikroORM } from '@mikro-orm/core'; import { Group } from '../src/entities/assignments/group.entity.js'; const logger: Logger = getLogger(); -export async function seedDatabase(envFile = '.env.development.local', testMode = false): Promise { - dotenv.config({ path: envFile }); - const orm = await initORM(testMode); +export async function seedORM(orm: MikroORM): Promise { await orm.schema.clearDatabase(); const em = forkEntityManager(); @@ -67,6 +65,13 @@ export async function seedDatabase(envFile = '.env.development.local', testMode ]); logger.info('Development database seeded successfully!'); +} + +export async function seedDatabase(envFile = '.env.development.local', testMode = false): Promise { + dotenv.config({ path: envFile }); + const orm = await initORM(testMode); + + await seedORM(orm); await orm.close(); } diff --git a/backend/tool/startTestApp.ts b/backend/tool/startTestApp.ts index 6dab054d..a5d0f852 100644 --- a/backend/tool/startTestApp.ts +++ b/backend/tool/startTestApp.ts @@ -5,10 +5,9 @@ import { errorHandler } from '../src/middleware/error-handling/error-handler.js' import dotenv from 'dotenv'; import cors from '../src/middleware/cors'; import { authenticateUser } from '../src/middleware/auth/auth'; -import { seedDatabase } from './seed'; +import { seedORM } from './seed'; const envFile = '../.env.test'; -console.log(`Using env file: ${envFile}`); dotenv.config({ path: envFile }); @@ -22,12 +21,9 @@ app.use('/api', apiRouter); app.use(errorHandler); async function startServer(): Promise { - await seedDatabase(envFile, true); - await initORM(true); + await seedORM(await initORM(true)); - app.listen(9876, () => { - console.log('Server is running on http://localhost:9876/api'); - }); + app.listen(9876); } await startServer(); diff --git a/frontend/package.json b/frontend/package.json index b6bd5deb..cb29c772 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -12,7 +12,7 @@ "format": "prettier --write src/", "format-check": "prettier --check src/", "lint": "eslint . --fix", - "test:unit": "vitest --run", + "test:unit": "VITE_API_BASE_URL='http://localhost:9876/api' vitest --run", "test:e2e": "playwright test" }, "dependencies": { diff --git a/frontend/src/controllers/base-controller.ts b/frontend/src/controllers/base-controller.ts index 3d22e099..32561753 100644 --- a/frontend/src/controllers/base-controller.ts +++ b/frontend/src/controllers/base-controller.ts @@ -1,6 +1,7 @@ import apiClient from "@/services/api-client/api-client.ts"; import type { AxiosResponse, ResponseType } from "axios"; import { HttpErrorResponseException } from "@/exception/http-error-response-exception.ts"; +import { apiConfig } from '@/config.ts'; export abstract class BaseController { protected basePath: string; @@ -16,9 +17,16 @@ export abstract class BaseController { } protected async get(path: string, queryParams?: QueryParams, responseType?: ResponseType): Promise { - const response = await apiClient.get(this.absolutePathFor(path), { params: queryParams, responseType }); - BaseController.assertSuccessResponse(response); - return response.data; + try { + const response = await apiClient.get(this.absolutePathFor(path), { params: queryParams, responseType }); + BaseController.assertSuccessResponse(response); + return response.data; + } catch (error) { + if (error instanceof HttpErrorResponseException) { + throw error; + } + throw new Error(`An unexpected error occurred while fetching data from ${apiConfig.baseUrl}${this.absolutePathFor(path)}: ${error}`); + } } protected async post(path: string, body: unknown, queryParams?: QueryParams): Promise { diff --git a/frontend/tests/setup-backend.ts b/frontend/tests/setup-backend.ts index 3b7aee24..4eedfda1 100644 --- a/frontend/tests/setup-backend.ts +++ b/frontend/tests/setup-backend.ts @@ -22,7 +22,7 @@ export async function setup(): Promise { }); // Spin up the backend - backendProcess = spawn("tsx", ["--env-file=.env.development.example", "tool/startTestApp.ts"], { + backendProcess = spawn("tsx", ["--env-file=.env.test", "tool/startTestApp.ts"], { cwd: "../backend", stdio: "inherit", env: {