refactor(core): Migrate DB setup to use DI (#15324)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2025-05-13 13:28:41 +02:00
committed by GitHub
parent c061acc01c
commit 8591c2e0d1
35 changed files with 782 additions and 378 deletions

View File

@@ -5,6 +5,7 @@ import type { InstanceSettings } from 'n8n-core';
import { AssertionError } from 'node:assert';
import * as http from 'node:http';
import type { DbConnection } from '@/databases/db-connection';
import type { ExternalHooks } from '@/external-hooks';
import type { PrometheusMetricsService } from '@/metrics/prometheus-metrics.service';
import { bodyParser, rawBodyReader } from '@/middlewares';
@@ -30,6 +31,19 @@ describe('WorkerServer', () => {
const externalHooks = mock<ExternalHooks>();
const instanceSettings = mock<InstanceSettings>({ instanceType: 'worker' });
const prometheusMetricsService = mock<PrometheusMetricsService>();
const dbConnection = mock<DbConnection>();
const newWorkerServer = () =>
new WorkerServer(
globalConfig,
mockLogger(),
dbConnection,
mock(),
externalHooks,
instanceSettings,
prometheusMetricsService,
mock(),
);
beforeEach(() => {
globalConfig = mock<GlobalConfig>({
@@ -50,6 +64,7 @@ describe('WorkerServer', () => {
new WorkerServer(
globalConfig,
mockLogger(),
dbConnection,
mock(),
externalHooks,
mock<InstanceSettings>({ instanceType: 'webhook' }),
@@ -61,7 +76,7 @@ describe('WorkerServer', () => {
it('should exit if port taken', async () => {
const server = mock<http.Server>();
const procesExitSpy = jest
const processExitSpy = jest
.spyOn(process, 'exit')
.mockImplementation(() => undefined as never);
@@ -72,19 +87,11 @@ describe('WorkerServer', () => {
return server;
});
new WorkerServer(
globalConfig,
mockLogger(),
mock(),
externalHooks,
instanceSettings,
prometheusMetricsService,
mock(),
);
newWorkerServer();
expect(procesExitSpy).toHaveBeenCalledWith(1);
expect(processExitSpy).toHaveBeenCalledWith(1);
procesExitSpy.mockRestore();
processExitSpy.mockRestore();
});
});
@@ -99,15 +106,7 @@ describe('WorkerServer', () => {
return server;
});
const workerServer = new WorkerServer(
globalConfig,
mockLogger(),
mock(),
externalHooks,
instanceSettings,
prometheusMetricsService,
mock(),
);
const workerServer = newWorkerServer();
const CREDENTIALS_OVERWRITE_ENDPOINT = 'credentials/overwrites';
globalConfig.credentials.overwrite.endpoint = CREDENTIALS_OVERWRITE_ENDPOINT;
@@ -134,15 +133,7 @@ describe('WorkerServer', () => {
return server;
});
const workerServer = new WorkerServer(
globalConfig,
mockLogger(),
mock(),
externalHooks,
instanceSettings,
prometheusMetricsService,
mock(),
);
const workerServer = newWorkerServer();
await workerServer.init({ health: true, overwrites: false, metrics: true });
@@ -155,15 +146,7 @@ describe('WorkerServer', () => {
const server = mock<http.Server>();
jest.spyOn(http, 'createServer').mockReturnValue(server);
const workerServer = new WorkerServer(
globalConfig,
mockLogger(),
mock(),
externalHooks,
instanceSettings,
prometheusMetricsService,
mock(),
);
const workerServer = newWorkerServer();
await expect(
workerServer.init({ health: false, overwrites: false, metrics: false }),
).rejects.toThrowError(AssertionError);
@@ -173,15 +156,7 @@ describe('WorkerServer', () => {
const server = mock<http.Server>();
jest.spyOn(http, 'createServer').mockReturnValue(server);
const workerServer = new WorkerServer(
globalConfig,
mockLogger(),
mock(),
externalHooks,
instanceSettings,
prometheusMetricsService,
mock(),
);
const workerServer = newWorkerServer();
server.listen.mockImplementation((...args: unknown[]) => {
const callback = args.find((arg) => typeof arg === 'function');