diff --git a/packages/server/src/middleware/Transaction.ts b/packages/server/src/middleware/Transaction.ts index 36d8518..e5c6984 100644 --- a/packages/server/src/middleware/Transaction.ts +++ b/packages/server/src/middleware/Transaction.ts @@ -15,7 +15,8 @@ export class Transaction implements IMiddleware { ns.run(() => { // use pregenerated request correlationId - const correlationId = req.correlationId || shortid.generate(); + const correlationId = ns.get(CORRELATION_ID) || req.correlationId || + shortid.generate(); (req as any).correlationId = correlationId ns.set(CORRELATION_ID, correlationId) next() diff --git a/packages/server/src/test-utils/TestUtils.ts b/packages/server/src/test-utils/TestUtils.ts index 79cdf70..350d5f3 100644 --- a/packages/server/src/test-utils/TestUtils.ts +++ b/packages/server/src/test-utils/TestUtils.ts @@ -9,6 +9,8 @@ import {IRoutes} from '@rondo.dev/common' import {IBootstrap} from '../application/IBootstrap' import {RequestTester} from './RequestTester' import {Role} from '../entities/Role' +import {CORRELATION_ID} from '../middleware' +import shortid from 'shortid' export class TestUtils { readonly username = `test${process.env.JEST_WORKER_ID}@user.com` @@ -41,6 +43,7 @@ export class TestUtils { connection = await database.connect() queryRunner = connection.createQueryRunner() await queryRunner.connect() + namespace.set(CORRELATION_ID, shortid()) await queryRunner.startTransaction() namespace.set(ENTITY_MANAGER, queryRunner.manager) }) @@ -51,6 +54,7 @@ export class TestUtils { await queryRunner.rollbackTransaction() } await queryRunner.release() + namespace.set(CORRELATION_ID, undefined) namespace.set(ENTITY_MANAGER, undefined) await connection.close() })