From 2f54770720480dca0daf854fc4bbd0a23afabbf8 Mon Sep 17 00:00:00 2001 From: Roland Schneider Date: Wed, 29 Oct 2025 16:30:17 +0100 Subject: [PATCH] add e2e --- .env.e2e | 12 ++++++------ environment/e2e/docker-compose.yaml | 6 ++++++ src/app.module.ts | 12 +++++++++++- src/data-source.ts | 12 ++++++++---- src/user/user.controller.ts | 1 + test/global-setup.ts | 18 ++++++++++-------- test/user.e2e-spec.ts | 8 ++++---- 7 files changed, 46 insertions(+), 23 deletions(-) diff --git a/.env.e2e b/.env.e2e index c4bc326..9169665 100644 --- a/.env.e2e +++ b/.env.e2e @@ -1,6 +1,6 @@ -DB_HOST=localhost -DB_PORT=4401 -DB_USERNAME=test -DB_PASSWORD=test -DB_DATABASE=test -JWT_SECRET=secret +DATABASE_USER=test +DATABASE_PASS=test +DATABASE_HOST=localhost +DATABASE_NAME=test +DATABASE_PORT=4401 +JWT_SECRET="secret" \ No newline at end of file diff --git a/environment/e2e/docker-compose.yaml b/environment/e2e/docker-compose.yaml index a545aaa..5fd2567 100644 --- a/environment/e2e/docker-compose.yaml +++ b/environment/e2e/docker-compose.yaml @@ -9,3 +9,9 @@ services: POSTGRES_DB: test ports: - '4401:5432' + volumes: + - e2epgdata:/var/lib/postgresql + + +volumes: + e2epgdata: {} diff --git a/src/app.module.ts b/src/app.module.ts index 6c2ed4d..414ee59 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -13,6 +13,7 @@ const moduleTypeOrm = TypeOrmModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (configService: ConfigService) => { + // console.log("config Service", configService) return { type: 'postgres', host: configService.get('DATABASE_HOST'), @@ -28,7 +29,16 @@ const moduleTypeOrm = TypeOrmModule.forRootAsync({ }); @Module({ - imports: [ConfigModule.forRoot(), moduleTypeOrm, UserModule, AuthModule], + imports: [ + ConfigModule.forRoot({ + envFilePath: process.env.DATA_SOURCE_ENV + ? process.env.DATA_SOURCE_ENV + : '.env', + }), + moduleTypeOrm, + UserModule, + AuthModule, + ], controllers: [AppController], providers: [AppService], }) diff --git a/src/data-source.ts b/src/data-source.ts index b2fa416..6119720 100644 --- a/src/data-source.ts +++ b/src/data-source.ts @@ -5,8 +5,14 @@ import { User } from './entity/user'; import * as dotenv from 'dotenv'; import { UserGroup } from './entity/user-group'; import { UserRole } from './entity/user-role'; +import path from 'path'; -dotenv.config(); +let envFilePath = path.resolve(process.cwd(), '.env'); +if (process.env.DATA_SOURCE_ENV) { + envFilePath = path.resolve(process.cwd(), process.env.DATA_SOURCE_ENV); +} + +dotenv.config({ path: envFilePath }); export const AppDataSource = new DataSource({ type: 'postgres', @@ -18,8 +24,6 @@ export const AppDataSource = new DataSource({ synchronize: false, logging: false, entities: [User, UserGroup, UserRole], - migrations: [ - 'src/migration/**/*.ts' - ], + migrations: ['src/migration/**/*.ts'], subscribers: [], }); diff --git a/src/user/user.controller.ts b/src/user/user.controller.ts index 7413471..169d80b 100644 --- a/src/user/user.controller.ts +++ b/src/user/user.controller.ts @@ -33,6 +33,7 @@ export class UserController { @Get() findAll(): Promise { + console.log("findall", process.env); return this.userService.findAll(); } diff --git a/test/global-setup.ts b/test/global-setup.ts index fd12c53..3e00b30 100644 --- a/test/global-setup.ts +++ b/test/global-setup.ts @@ -17,10 +17,10 @@ export default async () => { // Run migrations await new Promise((resolve, reject) => { - console.info("running migration") + console.info('running migration'); exec( 'env && npm run migration:run', - { env: { ...process.env, ...readEnvFile() } }, + { env: { ...process.env, DATA_SOURCE_ENV: '.env.e2e' } }, (err, stdout, stderr) => { if (err) { console.error(stderr); @@ -31,11 +31,13 @@ export default async () => { }, ); }); + + // await new Promise(resolve => {setTimeout(resolve, 60000)}) }; -function readEnvFile() { - const fs = require('fs'); - const dotenv = require('dotenv'); - const envConfig = dotenv.parse(fs.readFileSync('.env.e2e')); - return envConfig; -} +// function readEnvFile() { +// const fs = require('fs'); +// const dotenv = require('dotenv'); +// const envConfig = dotenv.parse(fs.readFileSync('.env.e2e')); +// return envConfig; +// } diff --git a/test/user.e2e-spec.ts b/test/user.e2e-spec.ts index 1121e8e..0f6d03e 100644 --- a/test/user.e2e-spec.ts +++ b/test/user.e2e-spec.ts @@ -7,11 +7,9 @@ import { Role } from '../src/auth/role.enum'; import { UserService } from '../src/user/user.service'; import { User } from '../src/entity/user'; import { UpdateUserDto } from '../src/user/dto/update-user.dto'; -import * as dotenv from 'dotenv'; - -dotenv.config({ path: '.env.e2e' }); describe('UserController (e2e)', () => { + process.env.DATA_SOURCE_ENV = '.env.e2e'; let app: INestApplication; let jwtToken: string; let adminUserId: number; @@ -21,6 +19,7 @@ describe('UserController (e2e)', () => { imports: [AppModule], }).compile(); + // process.env.DATA_SOURCE_ENV=".env.e2e"; app = moduleFixture.createNestApplication(); app.useGlobalPipes(new ValidationPipe()); await app.init(); @@ -29,13 +28,14 @@ describe('UserController (e2e)', () => { const adminUser = await userService.create({ username: 'e2e_admin', password: 'password', + email: "admin@dvbooking.hu", roles: [Role.Admin], }); adminUserId = adminUser.id; const response = await request(app.getHttpServer()) .post('/auth/login') - .send({ username: 'e2e_admin', password: 'password' }); + .send({ username: 'admin', password: '123456' }); jwtToken = response.body.access_token; });