diff --git a/packages/backend-app-api/src/services/implementations/rootLifecycle/rootLifecycleServiceFactory.test.ts b/packages/backend-app-api/src/services/implementations/rootLifecycle/rootLifecycleServiceFactory.test.ts index 91cb9031ae..5992e38d50 100644 --- a/packages/backend-app-api/src/services/implementations/rootLifecycle/rootLifecycleServiceFactory.test.ts +++ b/packages/backend-app-api/src/services/implementations/rootLifecycle/rootLifecycleServiceFactory.test.ts @@ -14,12 +14,12 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { BackendLifecycleImpl } from './rootLifecycleServiceFactory'; +import { mockServices } from '@backstage/backend-test-utils'; describe('lifecycleService', () => { it('should execute registered shutdown hook', async () => { - const service = new BackendLifecycleImpl(getVoidLogger()); + const service = new BackendLifecycleImpl(mockServices.logger.mock()); const hook = jest.fn(); service.addShutdownHook(() => hook()); // should not execute the hook more than once. @@ -30,7 +30,7 @@ describe('lifecycleService', () => { }); it('should not throw errors', async () => { - const service = new BackendLifecycleImpl(getVoidLogger()); + const service = new BackendLifecycleImpl(mockServices.logger.mock()); service.addShutdownHook(() => { throw new Error('oh no'); }); @@ -38,7 +38,7 @@ describe('lifecycleService', () => { }); it('should not throw async errors', async () => { - const service = new BackendLifecycleImpl(getVoidLogger()); + const service = new BackendLifecycleImpl(mockServices.logger.mock()); service.addShutdownHook(async () => { throw new Error('oh no'); }); @@ -46,7 +46,7 @@ describe('lifecycleService', () => { }); it('should reject hooks after trigger', async () => { - const service = new BackendLifecycleImpl(getVoidLogger()); + const service = new BackendLifecycleImpl(mockServices.logger.mock()); await service.startup(); expect(() => { service.addStartupHook(() => {}); diff --git a/packages/backend-common/src/reading/AwsCodeCommitUrlReader.test.ts b/packages/backend-common/src/reading/AwsCodeCommitUrlReader.test.ts index 44d785d9c4..6263d073fc 100644 --- a/packages/backend-common/src/reading/AwsCodeCommitUrlReader.test.ts +++ b/packages/backend-common/src/reading/AwsCodeCommitUrlReader.test.ts @@ -16,7 +16,6 @@ import { ConfigReader } from '@backstage/config'; import { JsonObject } from '@backstage/types'; -import { getVoidLogger } from '../logging'; import { DefaultReadTreeResponseFactory } from './tree'; import { AwsCodeCommitUrlReader, parseUrl } from './AwsCodeCommitUrlReader'; import { UrlReaderPredicateTuple } from './types'; @@ -34,6 +33,7 @@ import { AwsCodeCommitIntegration, readAwsCodeCommitIntegrationConfig, } from '@backstage/integration'; +import { mockServices } from '@backstage/backend-test-utils'; const AMAZON_AWS_CODECOMMIT_HOST = 'console.aws.amazon.com'; @@ -202,7 +202,7 @@ describe('AwsCodeCommitUrlReader', () => { const createReader = (config: JsonObject): UrlReaderPredicateTuple[] => { return AwsCodeCommitUrlReader.factory({ config: new ConfigReader(config), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), treeResponseFactory, }); }; diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts index e3247f190b..15f46199da 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts @@ -16,7 +16,6 @@ import { ConfigReader } from '@backstage/config'; import { JsonObject } from '@backstage/types'; -import { getVoidLogger } from '../logging'; import { DefaultReadTreeResponseFactory } from './tree'; import { DEFAULT_REGION, AwsS3UrlReader, parseUrl } from './AwsS3UrlReader'; import { @@ -37,6 +36,7 @@ import { } from '@aws-sdk/client-s3'; import { sdkStreamMixin } from '@aws-sdk/util-stream-node'; import fs from 'fs'; +import { mockServices } from '@backstage/backend-test-utils'; const treeResponseFactory = DefaultReadTreeResponseFactory.create({ config: new ConfigReader({}), @@ -166,7 +166,7 @@ describe('AwsS3UrlReader', () => { const createReader = (config: JsonObject): UrlReaderPredicateTuple[] => { return AwsS3UrlReader.factory({ config: new ConfigReader(config), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), treeResponseFactory, }); }; diff --git a/packages/backend-common/src/reading/AzureUrlReader.test.ts b/packages/backend-common/src/reading/AzureUrlReader.test.ts index 2b4bc84be7..ce2385507b 100644 --- a/packages/backend-common/src/reading/AzureUrlReader.test.ts +++ b/packages/backend-common/src/reading/AzureUrlReader.test.ts @@ -25,6 +25,7 @@ import { } from '@backstage/integration'; import { createMockDirectory, + mockServices, setupRequestMockHandlers, } from '@backstage/backend-test-utils'; import fs from 'fs-extra'; @@ -32,7 +33,6 @@ import { rest } from 'msw'; import { setupServer } from 'msw/node'; import path from 'path'; import { NotModifiedError } from '@backstage/errors'; -import { getVoidLogger } from '../logging'; import { AzureUrlReader } from './AzureUrlReader'; import { DefaultReadTreeResponseFactory } from './tree'; @@ -42,7 +42,7 @@ type AzureIntegrationConfigLike = Partial< credentials?: Partial[]; }; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); const mockDir = createMockDirectory({ mockOsTmpDir: true }); diff --git a/packages/backend-common/src/reading/BitbucketUrlReader.test.ts b/packages/backend-common/src/reading/BitbucketUrlReader.test.ts index 4258ac9d5b..edd8d6d3fc 100644 --- a/packages/backend-common/src/reading/BitbucketUrlReader.test.ts +++ b/packages/backend-common/src/reading/BitbucketUrlReader.test.ts @@ -21,6 +21,7 @@ import { } from '@backstage/integration'; import { createMockDirectory, + mockServices, setupRequestMockHandlers, } from '@backstage/backend-test-utils'; import fs from 'fs-extra'; @@ -30,10 +31,9 @@ import path from 'path'; import { NotModifiedError } from '@backstage/errors'; import { BitbucketUrlReader } from './BitbucketUrlReader'; import { DefaultReadTreeResponseFactory } from './tree'; -import { getVoidLogger } from '../logging'; import getRawBody from 'raw-body'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('BitbucketUrlReader.factory', () => { it('only apply integration configs not inherited from bitbucketCloud or bitbucketServer', () => { diff --git a/packages/backend-common/src/reading/FetchUrlReader.test.ts b/packages/backend-common/src/reading/FetchUrlReader.test.ts index 7b5e4ebc05..ce66e4e215 100644 --- a/packages/backend-common/src/reading/FetchUrlReader.test.ts +++ b/packages/backend-common/src/reading/FetchUrlReader.test.ts @@ -16,10 +16,12 @@ import { ConfigReader } from '@backstage/config'; import { NotFoundError, NotModifiedError } from '@backstage/errors'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; -import { getVoidLogger } from '../logging'; import { FetchUrlReader } from './FetchUrlReader'; import { DefaultReadTreeResponseFactory } from './tree'; @@ -105,7 +107,7 @@ describe('FetchUrlReader', () => { }, }, }), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), treeResponseFactory: DefaultReadTreeResponseFactory.create({ config: new ConfigReader({}), }), @@ -155,7 +157,7 @@ describe('FetchUrlReader', () => { }, }, }), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), treeResponseFactory: DefaultReadTreeResponseFactory.create({ config: new ConfigReader({}), }), diff --git a/packages/backend-common/src/reading/GerritUrlReader.test.ts b/packages/backend-common/src/reading/GerritUrlReader.test.ts index 14f96b529a..ca4a2707f3 100644 --- a/packages/backend-common/src/reading/GerritUrlReader.test.ts +++ b/packages/backend-common/src/reading/GerritUrlReader.test.ts @@ -16,6 +16,7 @@ import { createMockDirectory, + mockServices, setupRequestMockHandlers, } from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; @@ -29,7 +30,6 @@ import { rest } from 'msw'; import { setupServer } from 'msw/node'; import fs from 'fs-extra'; import path from 'path'; -import { getVoidLogger } from '../logging'; import { UrlReaderPredicateTuple } from './types'; import { DefaultReadTreeResponseFactory } from './tree'; import { @@ -86,7 +86,7 @@ const gerritProcessorWithGitiles = new GerritUrlReader( const createReader = (config: JsonObject): UrlReaderPredicateTuple[] => { return GerritUrlReader.factory({ config: new ConfigReader(config), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), treeResponseFactory, }); }; diff --git a/packages/backend-common/src/reading/GiteaUrlReader.test.ts b/packages/backend-common/src/reading/GiteaUrlReader.test.ts index f8658a2241..0b5983eefd 100644 --- a/packages/backend-common/src/reading/GiteaUrlReader.test.ts +++ b/packages/backend-common/src/reading/GiteaUrlReader.test.ts @@ -14,13 +14,15 @@ * limitations under the License. */ -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { GiteaIntegration, readGiteaConfig } from '@backstage/integration'; import { JsonObject } from '@backstage/types'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; -import { getVoidLogger } from '../logging'; import { UrlReaderPredicateTuple } from './types'; import { DefaultReadTreeResponseFactory } from './tree'; import getRawBody from 'raw-body'; @@ -55,7 +57,7 @@ const giteaProcessor = new GiteaUrlReader( const createReader = (config: JsonObject): UrlReaderPredicateTuple[] => { return GiteaUrlReader.factory({ config: new ConfigReader(config), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), treeResponseFactory, }); }; diff --git a/packages/backend-common/src/reading/GitlabUrlReader.test.ts b/packages/backend-common/src/reading/GitlabUrlReader.test.ts index 3c065e8b81..46276fcdda 100644 --- a/packages/backend-common/src/reading/GitlabUrlReader.test.ts +++ b/packages/backend-common/src/reading/GitlabUrlReader.test.ts @@ -17,13 +17,13 @@ import { ConfigReader } from '@backstage/config'; import { createMockDirectory, + mockServices, setupRequestMockHandlers, } from '@backstage/backend-test-utils'; import fs from 'fs-extra'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; import path from 'path'; -import { getVoidLogger } from '../logging'; import { GitlabUrlReader } from './GitlabUrlReader'; import { DefaultReadTreeResponseFactory } from './tree'; import { NotModifiedError, NotFoundError } from '@backstage/errors'; @@ -32,7 +32,7 @@ import { readGitLabIntegrationConfig, } from '@backstage/integration'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); const mockDir = createMockDirectory({ mockOsTmpDir: true }); diff --git a/packages/backend-common/src/reading/GoogleGcsUrlReader.test.ts b/packages/backend-common/src/reading/GoogleGcsUrlReader.test.ts index 25bce25686..bc31818d23 100644 --- a/packages/backend-common/src/reading/GoogleGcsUrlReader.test.ts +++ b/packages/backend-common/src/reading/GoogleGcsUrlReader.test.ts @@ -16,11 +16,11 @@ import { ConfigReader } from '@backstage/config'; import { JsonObject } from '@backstage/types'; -import { getVoidLogger } from '../logging'; import { DefaultReadTreeResponseFactory } from './tree'; import { GoogleGcsUrlReader } from './GoogleGcsUrlReader'; import { UrlReaderPredicateTuple } from './types'; import packageinfo from '../../package.json'; +import { mockServices } from '@backstage/backend-test-utils'; const bucketGetFilesMock = jest.fn(); jest.mock('@google-cloud/storage', () => { @@ -44,7 +44,7 @@ describe('GcsUrlReader', () => { const createReader = (config: JsonObject): UrlReaderPredicateTuple[] => { return GoogleGcsUrlReader.factory({ config: new ConfigReader(config), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), treeResponseFactory: DefaultReadTreeResponseFactory.create({ config: new ConfigReader({}), }), diff --git a/packages/backend-common/src/reading/HarnessUrlReader.test.ts b/packages/backend-common/src/reading/HarnessUrlReader.test.ts index 2741b75fd5..7cc37add3b 100644 --- a/packages/backend-common/src/reading/HarnessUrlReader.test.ts +++ b/packages/backend-common/src/reading/HarnessUrlReader.test.ts @@ -14,13 +14,15 @@ * limitations under the License. */ -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { HarnessIntegration, readHarnessConfig } from '@backstage/integration'; import { JsonObject } from '@backstage/types'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; -import { getVoidLogger } from '../logging'; import { UrlReaderPredicateTuple } from './types'; import { DefaultReadTreeResponseFactory } from './tree'; import getRawBody from 'raw-body'; @@ -52,7 +54,7 @@ const harnessProcessor = new HarnessUrlReader( const createReader = (config: JsonObject): UrlReaderPredicateTuple[] => { return HarnessUrlReader.factory({ config: new ConfigReader(config), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), treeResponseFactory, }); }; diff --git a/packages/backend-common/src/tokens/ServerTokenManager.test.ts b/packages/backend-common/src/tokens/ServerTokenManager.test.ts index 8870b4ed1c..2f99164ec1 100644 --- a/packages/backend-common/src/tokens/ServerTokenManager.test.ts +++ b/packages/backend-common/src/tokens/ServerTokenManager.test.ts @@ -16,17 +16,17 @@ import { ConfigReader } from '@backstage/config'; import * as jose from 'jose'; -import { getVoidLogger } from '../logging'; import { ServerTokenManager } from './ServerTokenManager'; import { TokenManager } from './types'; import { DateTime } from 'luxon'; +import { mockServices } from '@backstage/backend-test-utils'; const emptyConfig = new ConfigReader({}); const configWithSecret = new ConfigReader({ backend: { auth: { keys: [{ secret: 'a-secret-key' }] } }, }); const env = process.env; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('ServerTokenManager', () => { beforeEach(() => { diff --git a/packages/backend-tasks/src/tasks/LocalTaskWorker.test.ts b/packages/backend-tasks/src/tasks/LocalTaskWorker.test.ts index 4fd4949478..d4d3d16067 100644 --- a/packages/backend-tasks/src/tasks/LocalTaskWorker.test.ts +++ b/packages/backend-tasks/src/tasks/LocalTaskWorker.test.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { LocalTaskWorker } from './LocalTaskWorker'; +import { mockServices } from '@backstage/backend-test-utils'; describe('LocalTaskWorker', () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); it('runs the happy path (with iso duration) and handles cancellation', async () => { const fn = jest.fn(); diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts index 4b40791cb5..77965632e9 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts @@ -14,8 +14,11 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; +import { + TestDatabaseId, + TestDatabases, + mockServices, +} from '@backstage/backend-test-utils'; import { ConflictError, NotFoundError } from '@backstage/errors'; import { Duration } from 'luxon'; import { migrateBackendTasks } from '../database/migrateBackendTasks'; @@ -51,10 +54,8 @@ describe('PluginTaskManagerImpl', () => { async function init(databaseId: TestDatabaseId) { const knex = await databases.init(databaseId); await migrateBackendTasks(knex); - const manager = new PluginTaskSchedulerImpl( - async () => knex, - getVoidLogger(), - ); + const logger = mockServices.logger.mock(); + const manager = new PluginTaskSchedulerImpl(async () => knex, logger); return { knex, manager }; } diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.test.ts index 1f0363625e..93b5d7d189 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.test.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.test.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { TestDatabases } from '@backstage/backend-test-utils'; +import { TestDatabases, mockServices } from '@backstage/backend-test-utils'; import { Knex } from 'knex'; import { Duration } from 'luxon'; import waitForExpect from 'wait-for-expect'; @@ -36,7 +35,7 @@ const getTask = async (knex: Knex): Promise => { }; describe('PluginTaskSchedulerJanitor', () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const databases = TestDatabases.create({ ids: [ /* 'MYSQL_8' not supported yet */ diff --git a/packages/backend-tasks/src/tasks/TaskScheduler.test.ts b/packages/backend-tasks/src/tasks/TaskScheduler.test.ts index d286eaee38..24ce73712f 100644 --- a/packages/backend-tasks/src/tasks/TaskScheduler.test.ts +++ b/packages/backend-tasks/src/tasks/TaskScheduler.test.ts @@ -14,8 +14,12 @@ * limitations under the License. */ -import { DatabaseManager, getVoidLogger } from '@backstage/backend-common'; -import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; +import { DatabaseManager } from '@backstage/backend-common'; +import { + TestDatabaseId, + TestDatabases, + mockServices, +} from '@backstage/backend-test-utils'; import { Duration } from 'luxon'; import waitForExpect from 'wait-for-expect'; import { TaskScheduler } from './TaskScheduler'; @@ -24,7 +28,7 @@ import { createTestScopedSignal } from './__testUtils__/createTestScopedSignal'; jest.setTimeout(60_000); describe('TaskScheduler', () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const databases = TestDatabases.create(); const testScopedSignal = createTestScopedSignal(); diff --git a/packages/backend-tasks/src/tasks/TaskWorker.test.ts b/packages/backend-tasks/src/tasks/TaskWorker.test.ts index a2ecdaa779..10ebfde5b4 100644 --- a/packages/backend-tasks/src/tasks/TaskWorker.test.ts +++ b/packages/backend-tasks/src/tasks/TaskWorker.test.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { TestDatabases } from '@backstage/backend-test-utils'; +import { TestDatabases, mockServices } from '@backstage/backend-test-utils'; import { Duration, DateTime } from 'luxon'; import waitForExpect from 'wait-for-expect'; import { migrateBackendTasks } from '../database/migrateBackendTasks'; @@ -27,7 +26,7 @@ import { createTestScopedSignal } from './__testUtils__/createTestScopedSignal'; jest.setTimeout(60_000); describe('TaskWorker', () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const databases = TestDatabases.create(); const testScopedSignal = createTestScopedSignal(); diff --git a/packages/backend-test-utils/src/next/services/mockServices.ts b/packages/backend-test-utils/src/next/services/mockServices.ts index 05b3ae927c..a486a9ab0c 100644 --- a/packages/backend-test-utils/src/next/services/mockServices.ts +++ b/packages/backend-test-utils/src/next/services/mockServices.ts @@ -57,6 +57,17 @@ import { eventsServiceRef, } from '@backstage/plugin-events-node'; +/** @internal */ +function createLoggerMock() { + return { + child: jest.fn().mockImplementation(() => createLoggerMock()), + debug: jest.fn(), + error: jest.fn(), + info: jest.fn(), + warn: jest.fn(), + }; +} + /** @internal */ function simpleFactory< TService, @@ -358,13 +369,10 @@ export namespace mockServices { export namespace logger { export const factory = loggerServiceFactory; - export const mock = simpleMock(coreServices.logger, () => ({ - child: jest.fn(), - debug: jest.fn(), - error: jest.fn(), - info: jest.fn(), - warn: jest.fn(), - })); + + export const mock = simpleMock(coreServices.logger, () => + createLoggerMock(), + ); } export namespace permissions { diff --git a/plugins/app-backend/src/lib/assets/StaticAssetsStore.test.ts b/plugins/app-backend/src/lib/assets/StaticAssetsStore.test.ts index 41408396fe..51b949a623 100644 --- a/plugins/app-backend/src/lib/assets/StaticAssetsStore.test.ts +++ b/plugins/app-backend/src/lib/assets/StaticAssetsStore.test.ts @@ -15,11 +15,10 @@ */ import { Knex as KnexType } from 'knex'; -import { getVoidLogger } from '@backstage/backend-common'; -import { TestDatabases } from '@backstage/backend-test-utils'; +import { TestDatabases, mockServices } from '@backstage/backend-test-utils'; import { StaticAssetsStore } from './StaticAssetsStore'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); function createDatabaseManager( client: KnexType, diff --git a/plugins/app-backend/src/lib/config.test.ts b/plugins/app-backend/src/lib/config.test.ts index 9a6e39da4e..34f744d5b8 100644 --- a/plugins/app-backend/src/lib/config.test.ts +++ b/plugins/app-backend/src/lib/config.test.ts @@ -14,8 +14,10 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { createMockDirectory } from '@backstage/backend-test-utils'; +import { + createMockDirectory, + mockServices, +} from '@backstage/backend-test-utils'; import { injectConfig } from './config'; describe('injectConfig', () => { @@ -24,7 +26,7 @@ describe('injectConfig', () => { const baseOptions = { appConfigs: [], staticDir: mockDir.path, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }; beforeEach(() => { diff --git a/plugins/app-backend/src/service/router.test.ts b/plugins/app-backend/src/service/router.test.ts index 6fffdb149f..b7ad65706c 100644 --- a/plugins/app-backend/src/service/router.test.ts +++ b/plugins/app-backend/src/service/router.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { AppConfig, ConfigReader } from '@backstage/config'; import express from 'express'; import Router from 'express-promise-router'; @@ -22,6 +21,7 @@ import { resolve as resolvePath } from 'path'; import request from 'supertest'; import { createRouter } from './router'; import { loadConfigSchema } from '@backstage/config-loader'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('../lib/config', () => ({ injectConfig: jest.fn(), @@ -38,7 +38,7 @@ describe('createRouter', () => { beforeAll(async () => { const router = await createRouter({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), config: new ConfigReader({}), appPackageName: 'example-app', }); @@ -96,7 +96,7 @@ describe('createRouter with static fallback handler', () => { }); const router = await createRouter({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), config: new ConfigReader({}), appPackageName: 'example-app', staticFallbackHandler, @@ -129,7 +129,7 @@ describe('createRouter config schema test', () => { it('uses an external schema', async () => { await createRouter({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), config: new ConfigReader({ test: 'value', }), @@ -170,7 +170,7 @@ describe('createRouter config schema test', () => { it('uses no external schema', async () => { await createRouter({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), config: new ConfigReader({ test: 'value', }), diff --git a/plugins/auth-backend/src/identity/KeyStores.test.ts b/plugins/auth-backend/src/identity/KeyStores.test.ts index 6c034eb64b..0d4ffac4d8 100644 --- a/plugins/auth-backend/src/identity/KeyStores.test.ts +++ b/plugins/auth-backend/src/identity/KeyStores.test.ts @@ -20,7 +20,7 @@ import { DatabaseKeyStore } from './DatabaseKeyStore'; import { FirestoreKeyStore } from './FirestoreKeyStore'; import { KeyStores } from './KeyStores'; import { MemoryKeyStore } from './MemoryKeyStore'; -import { getVoidLogger } from '@backstage/backend-common'; +import { mockServices } from '@backstage/backend-test-utils'; describe('KeyStores', () => { const defaultConfigOptions = { @@ -35,7 +35,7 @@ describe('KeyStores', () => { it('reads auth section from config', async () => { const configSpy = jest.spyOn(defaultConfig, 'getOptionalConfig'); const keyStore = await KeyStores.fromConfig(defaultConfig, { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), database: AuthDatabase.forTesting(), }); @@ -50,7 +50,7 @@ describe('KeyStores', () => { it('can handle without auth config', async () => { const keyStore = await KeyStores.fromConfig(new ConfigReader({}), { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), database: AuthDatabase.forTesting(), }); expect(keyStore).toBeInstanceOf(DatabaseKeyStore); @@ -78,7 +78,7 @@ describe('KeyStores', () => { }; const config = new ConfigReader(configOptions); const keyStore = await KeyStores.fromConfig(config, { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), database: AuthDatabase.forTesting(), }); diff --git a/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts b/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts index 3e5d659d54..92b5888113 100644 --- a/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts +++ b/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { StaticTokenIssuer } from './StaticTokenIssuer'; import { createLocalJWKSet, jwtVerify } from 'jose'; import { stringifyEntityRef } from '@backstage/catalog-model'; import { StaticKeyStore } from './StaticKeyStore'; +import { mockServices } from '@backstage/backend-test-utils'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); const entityRef = stringifyEntityRef({ kind: 'User', namespace: 'default', diff --git a/plugins/auth-backend/src/identity/TokenFactory.test.ts b/plugins/auth-backend/src/identity/TokenFactory.test.ts index 0994e44f68..5ee0ea83c0 100644 --- a/plugins/auth-backend/src/identity/TokenFactory.test.ts +++ b/plugins/auth-backend/src/identity/TokenFactory.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { stringifyEntityRef } from '@backstage/catalog-model'; import { base64url, @@ -25,8 +24,9 @@ import { import { MemoryKeyStore } from './MemoryKeyStore'; import { TokenFactory } from './TokenFactory'; import { tokenTypes } from '@backstage/plugin-auth-node'; +import { mockServices } from '@backstage/backend-test-utils'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); function jwtKid(jwt: string): string { const header = decodeProtectedHeader(jwt); diff --git a/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.test.ts b/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.test.ts index d16ba0303a..a69c9c90d4 100644 --- a/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.test.ts +++ b/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.test.ts @@ -15,7 +15,6 @@ */ import { CatalogAuthResolverContext } from './CatalogAuthResolverContext'; -import { getVoidLogger } from '@backstage/backend-common'; import { CatalogApi } from '@backstage/catalog-client'; import { mockServices } from '@backstage/backend-test-utils'; import { TokenIssuer } from '../../identity/types'; @@ -32,7 +31,7 @@ describe('CatalogAuthResolverContext', () => { it('adds kind to filter when missing', async () => { const context = CatalogAuthResolverContext.create({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), catalogApi: mockCatalogApi as CatalogApi, tokenIssuer: {} as TokenIssuer, tokenManager: mockServices.tokenManager(), diff --git a/plugins/auth-backend/src/providers/oidc/provider.test.ts b/plugins/auth-backend/src/providers/oidc/provider.test.ts index f2172a796d..c7e9c68580 100644 --- a/plugins/auth-backend/src/providers/oidc/provider.test.ts +++ b/plugins/auth-backend/src/providers/oidc/provider.test.ts @@ -13,8 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; -import { getVoidLogger } from '@backstage/backend-common'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { LoggerService } from '@backstage/backend-plugin-api'; import { Config, ConfigReader } from '@backstage/config'; import { @@ -112,7 +114,7 @@ describe('oidc.create', () => { clientSecret: 'clientSecret', }, }), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), resolverContext: { issueToken: jest.fn(), findCatalogUser: jest.fn(), diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts b/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts index 7818b21bd1..804a17f4f0 100644 --- a/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { getVoidLogger, UrlReaders } from '@backstage/backend-common'; +import { UrlReaders } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { AwsS3DiscoveryProcessor } from './AwsS3DiscoveryProcessor'; import { @@ -33,6 +33,7 @@ import { sdkStreamMixin } from '@aws-sdk/util-stream-node'; import fs from 'fs'; import path from 'path'; import YAML from 'yaml'; +import { mockServices } from '@backstage/backend-test-utils'; const s3Client = mockClient(S3Client); const object: Object = { @@ -43,7 +44,7 @@ const output: ListObjectsV2Output = { Contents: objectList, }; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); const reader = UrlReaders.default({ logger, config: new ConfigReader({ diff --git a/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.test.ts b/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.test.ts index e9e17ad76a..5367c17742 100644 --- a/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.test.ts +++ b/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { PluginTaskScheduler, TaskInvocationDefinition, @@ -26,6 +25,7 @@ import { AwsS3EntityProvider } from './AwsS3EntityProvider'; import { mockClient } from 'aws-sdk-client-mock'; import 'aws-sdk-client-mock-jest'; import { ListObjectsV2Command, S3Client } from '@aws-sdk/client-s3'; +import { mockServices } from '@backstage/backend-test-utils'; class PersistingTaskRunner implements TaskRunner { private tasks: TaskInvocationDefinition[] = []; @@ -40,7 +40,7 @@ class PersistingTaskRunner implements TaskRunner { } } -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('AwsS3EntityProvider', () => { const createObjectList = (keys: string[]) => { @@ -79,7 +79,7 @@ describe('AwsS3EntityProvider', () => { }); afterEach(() => { - jest.resetAllMocks(); + jest.clearAllMocks(); process.env.AWS_REGION = undefined; }); diff --git a/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.test.ts b/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.test.ts index 6df555f190..e692be66e3 100644 --- a/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { LocationSpec } from '@backstage/plugin-catalog-common'; import { @@ -22,6 +21,7 @@ import { parseUrl, } from './AzureDevOpsDiscoveryProcessor'; import { codeSearch } from '../lib'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('../lib'); const mockCodeSearch = codeSearch as jest.MockedFunction; @@ -106,7 +106,7 @@ describe('AzureDevOpsDiscoveryProcessor', () => { azure: [{ host: 'dev.azure.com', token: 'blob' }], }, }), - { logger: getVoidLogger() }, + { logger: mockServices.logger.mock() }, ); const location: LocationSpec = { type: 'not-azure-discovery', @@ -128,7 +128,7 @@ describe('AzureDevOpsDiscoveryProcessor', () => { ], }, }), - { logger: getVoidLogger() }, + { logger: mockServices.logger.mock() }, ); const location: LocationSpec = { type: 'azure-discovery', @@ -148,7 +148,7 @@ describe('AzureDevOpsDiscoveryProcessor', () => { github: [{ host: 'dev.azure.com', token: 'blob' }], }, }), - { logger: getVoidLogger() }, + { logger: mockServices.logger.mock() }, ); beforeEach(() => { diff --git a/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.test.ts b/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.test.ts index d89f10c949..b7ada509a7 100644 --- a/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.test.ts +++ b/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { PluginTaskScheduler, TaskInvocationDefinition, @@ -25,6 +24,7 @@ import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { CodeSearchResultItem } from '../lib'; import { AzureDevOpsEntityProvider } from './AzureDevOpsEntityProvider'; import { codeSearch } from '../lib'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('../lib'); const mockCodeSearch = codeSearch as jest.MockedFunction; @@ -42,7 +42,7 @@ class PersistingTaskRunner implements TaskRunner { } } -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('AzureDevOpsEntityProvider', () => { afterEach(() => { diff --git a/plugins/catalog-backend-module-bitbucket-cloud/src/providers/BitbucketCloudEntityProvider.test.ts b/plugins/catalog-backend-module-bitbucket-cloud/src/providers/BitbucketCloudEntityProvider.test.ts index 6a21d95afa..55b701e016 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/src/providers/BitbucketCloudEntityProvider.test.ts +++ b/plugins/catalog-backend-module-bitbucket-cloud/src/providers/BitbucketCloudEntityProvider.test.ts @@ -14,13 +14,16 @@ * limitations under the License. */ -import { getVoidLogger, TokenManager } from '@backstage/backend-common'; +import { TokenManager } from '@backstage/backend-common'; import { PluginTaskScheduler, TaskInvocationDefinition, TaskRunner, } from '@backstage/backend-tasks'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { CatalogApi } from '@backstage/catalog-client'; import { Entity, LocationEntity } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; @@ -54,7 +57,7 @@ class PersistingTaskRunner implements TaskRunner { } } -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); const server = setupServer(); @@ -152,7 +155,7 @@ describe('BitbucketCloudEntityProvider', () => { }; afterEach(() => { - jest.resetAllMocks(); + jest.clearAllMocks(); schedule.reset(); }); diff --git a/plugins/catalog-backend-module-bitbucket-cloud/src/providers/BitbucketCloudEntityProvider.ts b/plugins/catalog-backend-module-bitbucket-cloud/src/providers/BitbucketCloudEntityProvider.ts index 9135e0717f..b52d28a52e 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/src/providers/BitbucketCloudEntityProvider.ts +++ b/plugins/catalog-backend-module-bitbucket-cloud/src/providers/BitbucketCloudEntityProvider.ts @@ -146,6 +146,7 @@ export class BitbucketCloudEntityProvider implements EntityProvider { return schedule.run({ id: taskId, fn: async () => { + console.log('---> child', this.logger); const logger = this.logger.child({ class: BitbucketCloudEntityProvider.prototype.constructor.name, taskId, diff --git a/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.test.ts b/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.test.ts index 3eff56e6f5..9624e396cd 100644 --- a/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.test.ts +++ b/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.test.ts @@ -14,13 +14,15 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { PluginTaskScheduler, TaskInvocationDefinition, TaskRunner, } from '@backstage/backend-tasks'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { rest } from 'msw'; @@ -53,7 +55,7 @@ function pagedResponse(values: any): BitbucketServerPagedResponse { } as BitbucketServerPagedResponse; } -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); const server = setupServer(); @@ -102,7 +104,9 @@ function setupStubs(projects: Project[], baseUrl: string) { describe('BitbucketServerEntityProvider', () => { setupRequestMockHandlers(server); - afterEach(() => jest.resetAllMocks()); + afterEach(() => { + jest.clearAllMocks(); + }); it('no provider config', () => { const schedule = new PersistingTaskRunner(); diff --git a/plugins/catalog-backend-module-gerrit/src/providers/GerritEntityProvider.test.ts b/plugins/catalog-backend-module-gerrit/src/providers/GerritEntityProvider.test.ts index 9892b60a21..110a927655 100644 --- a/plugins/catalog-backend-module-gerrit/src/providers/GerritEntityProvider.test.ts +++ b/plugins/catalog-backend-module-gerrit/src/providers/GerritEntityProvider.test.ts @@ -14,13 +14,15 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { PluginTaskScheduler, TaskInvocationDefinition, TaskRunner, } from '@backstage/backend-tasks'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import fs from 'fs-extra'; @@ -52,13 +54,13 @@ class PersistingTaskRunner implements TaskRunner { } } -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('GerritEntityProvider', () => { setupRequestMockHandlers(server); afterEach(() => { - jest.resetAllMocks(); + jest.clearAllMocks(); }); const config = new ConfigReader({ diff --git a/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.test.ts b/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.test.ts index 7fbee87161..afaaa573c3 100644 --- a/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { DefaultGithubCredentialsProvider, @@ -23,6 +22,7 @@ import { import { LocationSpec } from '@backstage/plugin-catalog-node'; import { GithubDiscoveryProcessor, parseUrl } from './GithubDiscoveryProcessor'; import { getOrganizationRepositories } from '../lib'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('../lib'); const mockGetOrganizationRepositories = @@ -80,7 +80,7 @@ describe('GithubDiscoveryProcessor', () => { const githubCredentialsProvider = DefaultGithubCredentialsProvider.fromIntegrations(integrations); const processor = GithubDiscoveryProcessor.fromConfig(config, { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), githubCredentialsProvider, }); const location: LocationSpec = { @@ -105,7 +105,7 @@ describe('GithubDiscoveryProcessor', () => { const githubCredentialsProvider = DefaultGithubCredentialsProvider.fromIntegrations(integrations); const processor = GithubDiscoveryProcessor.fromConfig(config, { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), githubCredentialsProvider, }); const location: LocationSpec = { @@ -130,7 +130,7 @@ describe('GithubDiscoveryProcessor', () => { const githubCredentialsProvider = DefaultGithubCredentialsProvider.fromIntegrations(integrations); const processor = GithubDiscoveryProcessor.fromConfig(config, { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), githubCredentialsProvider, }); diff --git a/plugins/catalog-backend-module-github/src/processors/GithubOrgReaderProcessor.test.ts b/plugins/catalog-backend-module-github/src/processors/GithubOrgReaderProcessor.test.ts index 195214d561..3e841c3e68 100644 --- a/plugins/catalog-backend-module-github/src/processors/GithubOrgReaderProcessor.test.ts +++ b/plugins/catalog-backend-module-github/src/processors/GithubOrgReaderProcessor.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { GithubCredentialsProvider, @@ -23,12 +22,13 @@ import { import { LocationSpec } from '@backstage/plugin-catalog-node'; import { graphql } from '@octokit/graphql'; import { GithubOrgReaderProcessor } from './GithubOrgReaderProcessor'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('@octokit/graphql'); describe('GithubOrgReaderProcessor', () => { describe('implementation', () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const integrations = ScmIntegrations.fromConfig( new ConfigReader({ integrations: { diff --git a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts index a201177198..42e49c2f72 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { PluginTaskScheduler, TaskInvocationDefinition, @@ -25,6 +24,7 @@ import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { GithubEntityProvider } from './GithubEntityProvider'; import * as helpers from '../lib/github'; import { EventParams } from '@backstage/plugin-events-node'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('../lib/github', () => { return { @@ -44,10 +44,10 @@ class PersistingTaskRunner implements TaskRunner { } } -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('GithubEntityProvider', () => { - afterEach(() => jest.resetAllMocks()); + afterEach(() => jest.clearAllMocks()); it('no provider config', () => { const schedule = new PersistingTaskRunner(); diff --git a/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts b/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts index c89901fcb3..df49ac9803 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { GroupEntity, UserEntity } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { GithubCredentialsProvider } from '@backstage/integration'; @@ -29,6 +28,7 @@ import { withLocations, } from './GithubMultiOrgEntityProvider'; import { LoggerService } from '@backstage/backend-plugin-api'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('@octokit/graphql'); @@ -60,7 +60,7 @@ describe('GithubMultiOrgEntityProvider', () => { refresh: jest.fn(), }; - logger = getVoidLogger(); + logger = mockServices.logger.mock(); gitHubConfig = { host: 'github.com' }; @@ -1016,7 +1016,7 @@ describe('GithubMultiOrgEntityProvider', () => { }; beforeEach(async () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); events = DefaultEventsService.create({ logger }); const config = new ConfigReader({ integrations: { diff --git a/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.test.ts b/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.test.ts index dade7d7983..82c93b0d57 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.test.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { GroupEntity, UserEntity } from '@backstage/catalog-model'; import { GithubCredentialsProvider, @@ -28,6 +27,7 @@ import { } from '@backstage/plugin-events-node'; import { GithubOrgEntityProvider } from './GithubOrgEntityProvider'; import { withLocations } from '../lib/withLocations'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('@octokit/graphql'); @@ -48,7 +48,7 @@ describe('GithubOrgEntityProvider', () => { refresh: jest.fn(), }; - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const gitHubConfig = { host: 'https://github.com', }; @@ -269,7 +269,7 @@ describe('GithubOrgEntityProvider', () => { refresh: jest.fn(), }; - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const events = DefaultEventsService.create({ logger }); const gitHubConfig: GithubIntegrationConfig = { host: 'github.com', @@ -356,7 +356,7 @@ describe('GithubOrgEntityProvider', () => { refresh: jest.fn(), }; - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const events = DefaultEventsService.create({ logger }); const gitHubConfig: GithubIntegrationConfig = { host: 'github.com', @@ -443,7 +443,7 @@ describe('GithubOrgEntityProvider', () => { refresh: jest.fn(), }; - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const events = DefaultEventsService.create({ logger }); const gitHubConfig: GithubIntegrationConfig = { host: 'github.com', @@ -536,7 +536,7 @@ describe('GithubOrgEntityProvider', () => { refresh: jest.fn(), }; - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const events = DefaultEventsService.create({ logger }); const gitHubConfig: GithubIntegrationConfig = { host: 'github.com', @@ -630,7 +630,7 @@ describe('GithubOrgEntityProvider', () => { refresh: jest.fn(), }; - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const events = DefaultEventsService.create({ logger }); const gitHubConfig: GithubIntegrationConfig = { host: 'github.com', @@ -881,7 +881,7 @@ describe('GithubOrgEntityProvider', () => { refresh: jest.fn(), }; - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const events = DefaultEventsService.create({ logger }); const gitHubConfig: GithubIntegrationConfig = { host: 'github.com', @@ -1129,7 +1129,7 @@ describe('GithubOrgEntityProvider', () => { refresh: jest.fn(), }; - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const events = DefaultEventsService.create({ logger }); const gitHubConfig: GithubIntegrationConfig = { host: 'github.com', diff --git a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts index f836500c6e..c1608cd386 100644 --- a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts @@ -14,8 +14,10 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { LocationSpec } from '@backstage/plugin-catalog-node'; import { rest, RestRequest } from 'msw'; @@ -148,7 +150,7 @@ function getProcessor({ return GitLabDiscoveryProcessor.fromConfig( new ConfigReader(config || getConfig()), { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), ...options, }, ); diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts index 9dfe8f8525..7d40eb1204 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts @@ -14,8 +14,10 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { readGitLabIntegrationConfig } from '@backstage/integration'; import { setupServer } from 'msw/node'; @@ -34,14 +36,14 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); expect(client.isSelfManaged()).toBeTruthy(); }); it('returns false if gitlab.com', () => { const client = new GitLabClient({ config: readGitLabIntegrationConfig(new ConfigReader(mock.config_saas)), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); expect(client.isSelfManaged()).toBeFalsy(); }); @@ -53,7 +55,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const { items } = await client.pagedRequest(mock.paged_endpoint); @@ -66,7 +68,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const requestedPage = 2; @@ -87,7 +89,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const { items, nextPage } = await client.pagedRequest( @@ -106,7 +108,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); // non-200 status code should throw await expect(() => @@ -122,7 +124,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const groupProjectsGen = paginated( @@ -146,7 +148,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const instanceProjects = paginated( @@ -167,7 +169,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const allUsers: GitLabUser[] = []; @@ -188,7 +190,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const allGroups: GitLabGroup[] = []; @@ -207,7 +209,7 @@ describe('GitLabClient', () => { it('gets all users under group', async () => { const client = new GitLabClient({ config: readGitLabIntegrationConfig(new ConfigReader(mock.config_saas)), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const saasMembers = ( await client.getGroupMembers('saas-multi-user-group', [ @@ -221,7 +223,7 @@ describe('GitLabClient', () => { it('gets all users with token without full permissions', async () => { const client = new GitLabClient({ config: readGitLabIntegrationConfig(new ConfigReader(mock.config_saas)), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const saasMembers = ( await client.getGroupMembers('', ['DIRECT, DESCENDANTS']) @@ -231,7 +233,7 @@ describe('GitLabClient', () => { it('rejects when GraphQL returns errors', async () => { const client = new GitLabClient({ config: readGitLabIntegrationConfig(new ConfigReader(mock.config_saas)), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); await expect(() => client.getGroupMembers('error-group', ['DIRECT, DESCENDANTS']), @@ -244,7 +246,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const saasMembers = ( await client.getGroupMembers('multi-page-saas', ['DIRECT, DESCENDANTS']) @@ -262,7 +264,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const allGroups = (await client.listDescendantGroups('group-with-parent')) @@ -277,7 +279,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const allGroups = ( @@ -292,7 +294,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); await expect(() => @@ -306,7 +308,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const saasGroups = (await client.listDescendantGroups('root')).items; @@ -323,7 +325,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const members = await client.getGroupMembers('group1', ['DIRECT']); @@ -346,7 +348,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const members = await client.getGroupMembers('non-existing-group', [ @@ -362,7 +364,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); await expect(() => @@ -377,7 +379,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const members = await client.getGroupMembers('multi-page', ['DIRECT']); @@ -393,7 +395,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const group = await client.getGroupById(1); @@ -405,7 +407,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); await expect(() => client.getGroupById(42)).rejects.toThrow( @@ -420,7 +422,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const project = await client.getProjectById(1); @@ -432,7 +434,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); await expect(() => client.getProjectById(42)).rejects.toThrow( @@ -447,7 +449,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const user = await client.getUserById(1); @@ -459,7 +461,7 @@ describe('GitLabClient', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); await expect(() => client.getUserById(42)).rejects.toThrow( @@ -475,7 +477,7 @@ describe('paginated', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const paginatedItems = paginated( @@ -499,7 +501,7 @@ describe('hasFile', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); }); @@ -528,7 +530,7 @@ describe('pagedRequest search params', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const { items } = await client.pagedRequest<{ endpoint: string }>( @@ -546,7 +548,7 @@ describe('pagedRequest search params', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const { items } = await client.pagedRequest<{ endpoint: string }>( @@ -567,7 +569,7 @@ describe('pagedRequest search params', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const { items } = await client.pagedRequest<{ endpoint: string }>( @@ -588,7 +590,7 @@ describe('pagedRequest search params', () => { config: readGitLabIntegrationConfig( new ConfigReader(mock.config_self_managed), ), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const { items } = await client.pagedRequest<{ endpoint: string }>( diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.test.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.test.ts index 7167fc1c2d..febaa00d28 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.test.ts @@ -14,13 +14,15 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { PluginTaskScheduler, TaskInvocationDefinition, TaskRunner, } from '@backstage/backend-tasks'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { DefaultEventsService } from '@backstage/plugin-events-node'; @@ -31,7 +33,7 @@ import { GitlabDiscoveryEntityProvider } from './GitlabDiscoveryEntityProvider'; const server = setupServer(...handlers); setupRequestMockHandlers(server); -afterEach(() => jest.resetAllMocks()); +afterEach(() => jest.clearAllMocks()); class PersistingTaskRunner implements TaskRunner { private tasks: TaskInvocationDefinition[] = []; @@ -46,7 +48,7 @@ class PersistingTaskRunner implements TaskRunner { } } -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('GitlabDiscoveryEntityProvider - configuration', () => { it('should not instantiate providers when no config found', () => { diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts index b5a049538d..dfbf39267f 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts @@ -14,13 +14,15 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { PluginTaskScheduler, TaskInvocationDefinition, TaskRunner, } from '@backstage/backend-tasks'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { DefaultEventsService } from '@backstage/plugin-events-node'; @@ -32,7 +34,7 @@ import { GitlabOrgDiscoveryEntityProvider } from './GitlabOrgDiscoveryEntityProv const server = setupServer(...handlers); setupRequestMockHandlers(server); -afterEach(() => jest.resetAllMocks()); +afterEach(() => jest.clearAllMocks()); class PersistingTaskRunner implements TaskRunner { private tasks: TaskInvocationDefinition[] = []; @@ -47,7 +49,7 @@ class PersistingTaskRunner implements TaskRunner { } } -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('GitlabOrgDiscoveryEntityProvider - configuration', () => { it('should not instantiate providers when no config found', () => { diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.test.ts b/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.test.ts index 9416fa27eb..eccfaee655 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.test.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.test.ts @@ -14,9 +14,8 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; -import { TestDatabases } from '@backstage/backend-test-utils'; +import { TestDatabases, mockServices } from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { IncrementalEntityProvider } from '../types'; import { WrapperProviders } from './WrapperProviders'; @@ -29,13 +28,13 @@ describe('WrapperProviders', () => { ids: ['POSTGRES_16', 'POSTGRES_12', 'SQLITE_3', 'MYSQL_8'], }); const config = new ConfigReader({}); - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const scheduler = { scheduleTask: jest.fn(), }; beforeEach(() => { - jest.resetAllMocks(); + jest.clearAllMocks(); }); it.each(databases.eachSupportedId())( diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts index 9f4b9ee08c..8821ffd2db 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts @@ -25,7 +25,7 @@ import { readMicrosoftGraphUsersInGroups, resolveRelations, } from './read'; -import { getVoidLogger } from '@backstage/backend-common'; +import { mockServices } from '@backstage/backend-test-utils'; function user(data: Partial): UserEntity { return merge( @@ -106,7 +106,7 @@ describe('read microsoft graph', () => { const { users } = await readMicrosoftGraphUsers(client, { userFilter: 'accountEnabled eq true', - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); expect(users).toEqual([ @@ -153,7 +153,7 @@ describe('read microsoft graph', () => { const { users } = await readMicrosoftGraphUsers(client, { queryMode: 'advanced', userFilter: 'accountEnabled eq true', - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); expect(users).toEqual([ @@ -206,7 +206,7 @@ describe('read microsoft graph', () => { metadata: { name: 'x' }, spec: { memberOf: [] }, }), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); expect(users).toEqual([ @@ -246,7 +246,7 @@ describe('read microsoft graph', () => { const { users } = await readMicrosoftGraphUsersInGroups(client, { userGroupMemberFilter: 'securityEnabled eq true', - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); expect(users).toEqual([ @@ -304,7 +304,7 @@ describe('read microsoft graph', () => { const { users } = await readMicrosoftGraphUsersInGroups(client, { queryMode: 'advanced', userGroupMemberFilter: 'securityEnabled eq true', - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); expect(users).toEqual([ @@ -369,7 +369,7 @@ describe('read microsoft graph', () => { metadata: { name: 'x' }, spec: { memberOf: [] }, }), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); expect(users).toEqual([ @@ -893,7 +893,7 @@ describe('read microsoft graph', () => { ); await readMicrosoftGraphOrg(client, 'tenantid', { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), groupFilter: 'securityEnabled eq false', }); @@ -930,7 +930,7 @@ describe('read microsoft graph', () => { ); await readMicrosoftGraphOrg(client, 'tenantid', { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), userExpand: 'manager', userFilter: 'accountEnabled eq true', groupFilter: 'securityEnabled eq false', @@ -970,7 +970,7 @@ describe('read microsoft graph', () => { ); await readMicrosoftGraphOrg(client, 'tenantid', { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), loadUserPhotos: false, }); @@ -1007,7 +1007,7 @@ describe('read microsoft graph', () => { client.getGroupMembers.mockImplementation(getExampleGroupMembers); await readMicrosoftGraphOrg(client, 'tenantid', { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), userSelect: ['mail'], }); @@ -1040,7 +1040,7 @@ describe('read microsoft graph', () => { ); await readMicrosoftGraphOrg(client, 'tenantid', { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), userGroupMemberFilter: 'name eq backstage-group', groupFilter: 'securityEnabled eq false', }); @@ -1089,7 +1089,7 @@ describe('read microsoft graph', () => { ); const { users } = await readMicrosoftGraphOrg(client, 'tenantid', { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), loadUserPhotos: false, }); diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.test.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.test.ts index dccf7ed53d..78efa1b3c1 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.test.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.test.ts @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { PluginTaskScheduler, TaskInvocationDefinition, @@ -36,6 +35,7 @@ import { MicrosoftGraphOrgEntityProvider, withLocations, } from './MicrosoftGraphOrgEntityProvider'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('../microsoftGraph', () => { return { @@ -98,7 +98,7 @@ describe('MicrosoftGraphOrgEntityProvider', () => { afterEach(() => jest.resetAllMocks()); - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const taskRunner = new PersistingTaskRunner(); const scheduler = { createScheduledTaskRunner: (_: any) => taskRunner, diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.test.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.test.ts index a33108c8fd..dfc1ff6bcc 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.test.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.test.ts @@ -14,10 +14,10 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { GroupEntity, UserEntity } from '@backstage/catalog-model'; import { MicrosoftGraphClient, readMicrosoftGraphOrg } from '../microsoftGraph'; import { MicrosoftGraphOrgReaderProcessor } from './MicrosoftGraphOrgReaderProcessor'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('../microsoftGraph', () => { return { @@ -45,7 +45,7 @@ describe('MicrosoftGraphOrgReaderProcessor', () => { clientSecret: 'clientsecret', }, ], - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); jest diff --git a/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.test.ts b/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.test.ts index 78568fd19f..ea165b74a7 100644 --- a/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.test.ts +++ b/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.test.ts @@ -13,11 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { LocationSpec } from '@backstage/plugin-catalog-backend'; import { OpenApiRefProcessor } from './OpenApiRefProcessor'; import { bundleFileWithRefs } from './lib'; +import { mockServices } from '@backstage/backend-test-utils'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; jest.mock('./lib', () => ({ bundleFileWithRefs: jest.fn(), @@ -53,7 +54,7 @@ describe('OpenApiRefProcessor', () => { search: jest.fn(), }; const processor = OpenApiRefProcessor.fromConfig(config, { - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), reader, }); diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts index 660ddc2bdd..bd76aa2048 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts @@ -16,7 +16,6 @@ import { TaskInvocationDefinition, TaskRunner } from '@backstage/backend-tasks'; import { ConfigReader } from '@backstage/config'; -import { getVoidLogger } from '@backstage/backend-common'; import { PuppetDbEntityProvider } from './PuppetDbEntityProvider'; import { DeferredEntity, @@ -30,6 +29,7 @@ import { ResourceEntity, } from '@backstage/catalog-model'; import { DEFAULT_ENTITY_OWNER, ENDPOINT_NODES } from '../puppet/constants'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('../puppet/read', () => { return { @@ -37,7 +37,7 @@ jest.mock('../puppet/read', () => { }; }); -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); class PersistingTaskRunner implements TaskRunner { private tasks: TaskInvocationDefinition[] = []; diff --git a/plugins/catalog-backend/src/database/operations/stitcher/performStitching.test.ts b/plugins/catalog-backend/src/database/operations/stitcher/performStitching.test.ts index e43424b361..4b12a9bf28 100644 --- a/plugins/catalog-backend/src/database/operations/stitcher/performStitching.test.ts +++ b/plugins/catalog-backend/src/database/operations/stitcher/performStitching.test.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { TestDatabases } from '@backstage/backend-test-utils'; +import { TestDatabases, mockServices } from '@backstage/backend-test-utils'; import { Entity } from '@backstage/catalog-model'; import { applyDatabaseMigrations } from '../../migrations'; import { @@ -31,7 +30,7 @@ jest.setTimeout(60_000); describe('performStitching', () => { const databases = TestDatabases.create(); - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); // NOTE(freben): Testing the deferred path since it's a superset of the immediate one it.each(databases.eachSupportedId())( diff --git a/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.test.ts b/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.test.ts index 6c2774a6fb..dd019f530f 100644 --- a/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.test.ts +++ b/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.test.ts @@ -14,10 +14,10 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { CodeOwnersProcessor } from './CodeOwnersProcessor'; import { LocationSpec } from '@backstage/plugin-catalog-common'; +import { mockServices } from '@backstage/backend-test-utils'; const mockCodeOwnersText = () => ` * @acme/team-foo @acme/team-bar @@ -52,7 +52,7 @@ describe('CodeOwnersProcessor', () => { }), }; const processor = CodeOwnersProcessor.fromConfig(config, { - logger: getVoidLogger(), + logger: mockServices.logger.mock(), reader, }); diff --git a/plugins/catalog-backend/src/modules/core/UrlReaderProcessor.test.ts b/plugins/catalog-backend/src/modules/core/UrlReaderProcessor.test.ts index c9575ce5cd..dd80f8f0c4 100644 --- a/plugins/catalog-backend/src/modules/core/UrlReaderProcessor.test.ts +++ b/plugins/catalog-backend/src/modules/core/UrlReaderProcessor.test.ts @@ -14,12 +14,11 @@ * limitations under the License. */ +import { UrlReader, UrlReaders } from '@backstage/backend-common'; import { - getVoidLogger, - UrlReader, - UrlReaders, -} from '@backstage/backend-common'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; @@ -47,7 +46,7 @@ describe('UrlReaderProcessor', () => { }); it('should load from url', async () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const reader = UrlReaders.default({ logger, config: new ConfigReader({ @@ -105,7 +104,7 @@ describe('UrlReaderProcessor', () => { }); it('should use cached data when available', async () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const reader = UrlReaders.default({ logger, config: new ConfigReader({ @@ -153,7 +152,7 @@ describe('UrlReaderProcessor', () => { }); it('should fail load from url with error', async () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const reader = UrlReaders.default({ logger, config: new ConfigReader({ @@ -191,7 +190,7 @@ describe('UrlReaderProcessor', () => { }); it('uses search when there are globs', async () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const reader: jest.Mocked = { readUrl: jest.fn(), diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.test.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.test.ts index fba5e387a9..3f283a5b38 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.test.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { Hash } from 'crypto'; import { DateTime } from 'luxon'; import waitForExpect from 'wait-for-expect'; @@ -23,6 +22,7 @@ import { DefaultCatalogProcessingEngine } from './DefaultCatalogProcessingEngine import { CatalogProcessingOrchestrator } from './types'; import { Stitcher } from '../stitching/types'; import { ConfigReader } from '@backstage/config'; +import { mockServices } from '@backstage/backend-test-utils'; describe('DefaultCatalogProcessingEngine', () => { const db = { @@ -64,7 +64,7 @@ describe('DefaultCatalogProcessingEngine', () => { }); const engine = new DefaultCatalogProcessingEngine({ config: new ConfigReader({}), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), processingDatabase: db, knex: {} as any, orchestrator: orchestrator, @@ -132,7 +132,7 @@ describe('DefaultCatalogProcessingEngine', () => { }); const engine = new DefaultCatalogProcessingEngine({ config: new ConfigReader({}), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), processingDatabase: db, knex: {} as any, orchestrator: orchestrator, @@ -216,7 +216,7 @@ describe('DefaultCatalogProcessingEngine', () => { const engine = new DefaultCatalogProcessingEngine({ config: new ConfigReader({}), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), processingDatabase: db, knex: {} as any, orchestrator: orchestrator, @@ -293,7 +293,7 @@ describe('DefaultCatalogProcessingEngine', () => { const engine = new DefaultCatalogProcessingEngine({ config: new ConfigReader({}), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), processingDatabase: db, knex: {} as any, orchestrator: orchestrator, @@ -352,7 +352,7 @@ describe('DefaultCatalogProcessingEngine', () => { it('should stitch both the previous and new sources when relations change', async () => { const engine = new DefaultCatalogProcessingEngine({ config: new ConfigReader({}), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), processingDatabase: db, knex: {} as any, orchestrator: orchestrator, @@ -467,7 +467,7 @@ describe('DefaultCatalogProcessingEngine', () => { it('should not stitch sources entities when relations are the same', async () => { const engine = new DefaultCatalogProcessingEngine({ config: new ConfigReader({}), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), processingDatabase: db, knex: {} as any, orchestrator: orchestrator, @@ -550,7 +550,7 @@ describe('DefaultCatalogProcessingEngine', () => { it('should stitch sources entities when new relation of different type added', async () => { const engine = new DefaultCatalogProcessingEngine({ config: new ConfigReader({}), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), processingDatabase: db, knex: {} as any, orchestrator: orchestrator, @@ -638,7 +638,7 @@ describe('DefaultCatalogProcessingEngine', () => { it('should stitch sources entities when relation is removed', async () => { const engine = new DefaultCatalogProcessingEngine({ config: new ConfigReader({}), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), processingDatabase: db, knex: {} as any, orchestrator: orchestrator, diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts index fc6855f6df..e8d05e3f25 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, @@ -37,6 +36,7 @@ import { DefaultCatalogProcessingOrchestrator } from './DefaultCatalogProcessing import { defaultEntityDataParser } from '../modules/util/parse'; import { ConfigReader } from '@backstage/config'; import { InputError } from '@backstage/errors'; +import { mockServices } from '@backstage/backend-test-utils'; class FooBarProcessor implements CatalogProcessor { getProcessorName = () => 'foo-bar'; @@ -93,7 +93,7 @@ describe('DefaultCatalogProcessingOrchestrator', () => { const orchestrator = new DefaultCatalogProcessingOrchestrator({ processors: [new FooBarProcessor()], integrations: ScmIntegrations.fromConfig(new ConfigReader({})), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), parser: defaultEntityDataParser, policy: EntityPolicies.allOf([]), rulesEnforcer: { isAllowed: () => true }, @@ -209,7 +209,7 @@ describe('DefaultCatalogProcessingOrchestrator', () => { processor2 as CatalogProcessor, ], integrations: ScmIntegrations.fromConfig(new ConfigReader({})), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), parser: defaultEntityDataParser, policy: EntityPolicies.allOf([]), rulesEnforcer: { isAllowed: () => true }, @@ -222,7 +222,7 @@ describe('DefaultCatalogProcessingOrchestrator', () => { processor2 as CatalogProcessor, ], integrations: ScmIntegrations.fromConfig(new ConfigReader({})), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), parser: defaultEntityDataParser, policy: EntityPolicies.allOf([]), rulesEnforcer: { isAllowed: () => true }, @@ -287,7 +287,7 @@ describe('DefaultCatalogProcessingOrchestrator', () => { const orchestrator = new DefaultCatalogProcessingOrchestrator({ processors: [processor], integrations, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), parser, policy: EntityPolicies.allOf([]), rulesEnforcer, @@ -329,7 +329,7 @@ describe('DefaultCatalogProcessingOrchestrator', () => { const orchestrator = new DefaultCatalogProcessingOrchestrator({ processors: [processor], integrations, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), parser, policy: EntityPolicies.allOf([new FailingEntityPolicy()]), rulesEnforcer, diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts index 4d8dc7c7a4..3c98f2a8bc 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { TestDatabaseId, TestDatabases, mockCredentials, + mockServices, } from '@backstage/backend-test-utils'; import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; import { Knex } from 'knex'; @@ -163,7 +163,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); const result = await catalog.entityAncestry('k:default/root'); @@ -196,7 +196,7 @@ describe('DefaultEntitiesCatalog', () => { await createDatabase(databaseId); const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); await expect(() => @@ -242,7 +242,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); const result = await catalog.entityAncestry('k:default/root'); @@ -301,7 +301,7 @@ describe('DefaultEntitiesCatalog', () => { await addEntityToSearch(entity2); const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -340,7 +340,7 @@ describe('DefaultEntitiesCatalog', () => { await addEntityToSearch(entity2); const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -393,7 +393,7 @@ describe('DefaultEntitiesCatalog', () => { await addEntityToSearch(entity4); const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -452,7 +452,7 @@ describe('DefaultEntitiesCatalog', () => { await addEntityToSearch(entity2); const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -499,7 +499,7 @@ describe('DefaultEntitiesCatalog', () => { await addEntityToSearch(entity2); const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -547,7 +547,7 @@ describe('DefaultEntitiesCatalog', () => { ); const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -610,7 +610,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -701,7 +701,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -756,7 +756,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -804,7 +804,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -958,7 +958,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -1113,7 +1113,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -1174,7 +1174,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -1273,7 +1273,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -1353,7 +1353,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -1382,7 +1382,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -1503,7 +1503,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -1567,7 +1567,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -1718,7 +1718,7 @@ describe('DefaultEntitiesCatalog', () => { const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); await catalog.removeEntityByUid(uid); @@ -1768,7 +1768,7 @@ describe('DefaultEntitiesCatalog', () => { }); const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -1827,7 +1827,7 @@ describe('DefaultEntitiesCatalog', () => { }); const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); @@ -1876,7 +1876,7 @@ describe('DefaultEntitiesCatalog', () => { }); const catalog = new DefaultEntitiesCatalog({ database: knex, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), stitcher, }); diff --git a/plugins/catalog-backend/src/service/createRouter.test.ts b/plugins/catalog-backend/src/service/createRouter.test.ts index a2fae0e8bd..5687bc1f85 100644 --- a/plugins/catalog-backend/src/service/createRouter.test.ts +++ b/plugins/catalog-backend/src/service/createRouter.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { NotFoundError } from '@backstage/errors'; import type { Location } from '@backstage/catalog-client'; @@ -78,7 +77,7 @@ describe('createRouter readonly disabled', () => { entitiesCatalog, locationService, orchestrator, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), refreshService, config: new ConfigReader(undefined), permissionIntegrationRouter: express.Router(), @@ -869,7 +868,7 @@ describe('createRouter readonly enabled', () => { const router = await createRouter({ entitiesCatalog, locationService, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), config: new ConfigReader({ catalog: { readonly: true, @@ -1079,7 +1078,7 @@ describe('NextRouter permissioning', () => { const router = await createRouter({ entitiesCatalog, locationService, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), refreshService, config: new ConfigReader(undefined), permissionIntegrationRouter: createPermissionIntegrationRouter({ diff --git a/plugins/catalog-backend/src/stitching/DefaultStitcher.test.ts b/plugins/catalog-backend/src/stitching/DefaultStitcher.test.ts index 5e7ba7ef71..251aaa9080 100644 --- a/plugins/catalog-backend/src/stitching/DefaultStitcher.test.ts +++ b/plugins/catalog-backend/src/stitching/DefaultStitcher.test.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { TestDatabases } from '@backstage/backend-test-utils'; +import { TestDatabases, mockServices } from '@backstage/backend-test-utils'; import { Entity } from '@backstage/catalog-model'; import { applyDatabaseMigrations } from '../database/migrations'; import { @@ -31,7 +30,7 @@ jest.setTimeout(60_000); describe('Stitcher', () => { const databases = TestDatabases.create(); - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); it.each(databases.eachSupportedId())( 'runs the happy path for %p', diff --git a/plugins/catalog-backend/src/tests/integration.test.ts b/plugins/catalog-backend/src/tests/integration.test.ts index 6ed2188773..0c07b0fd4d 100644 --- a/plugins/catalog-backend/src/tests/integration.test.ts +++ b/plugins/catalog-backend/src/tests/integration.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { DatabaseManager, getVoidLogger } from '@backstage/backend-common'; import { Entity, EntityPolicies, @@ -55,6 +54,7 @@ import { RefreshOptions, RefreshService } from '../service/types'; import { DefaultStitcher } from '../stitching/DefaultStitcher'; import { mockServices } from '@backstage/backend-test-utils'; import { LoggerService } from '@backstage/backend-plugin-api'; +import { DatabaseManager } from '@backstage/backend-common'; const voidLogger = mockServices.logger.mock(); @@ -223,7 +223,7 @@ class TestHarness { }, }, ); - const logger = options?.logger ?? getVoidLogger(); + const logger = options?.logger ?? mockServices.logger.mock(); const db = options?.db ?? (await DatabaseManager.fromConfig(config, { logger }) diff --git a/plugins/devtools-backend/src/service/router.test.ts b/plugins/devtools-backend/src/service/router.test.ts index fe4f176a04..9f9db0a8d4 100644 --- a/plugins/devtools-backend/src/service/router.test.ts +++ b/plugins/devtools-backend/src/service/router.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import express from 'express'; import request from 'supertest'; @@ -38,7 +37,7 @@ describe('createRouter', () => { beforeAll(async () => { const router = await createRouter({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), config: new ConfigReader({ healthCheck: { endpoint: [ diff --git a/plugins/events-backend-module-aws-sqs/src/publisher/AwsSqsConsumingEventPublisher.test.ts b/plugins/events-backend-module-aws-sqs/src/publisher/AwsSqsConsumingEventPublisher.test.ts index 60930fdcf7..db4f4ffa32 100644 --- a/plugins/events-backend-module-aws-sqs/src/publisher/AwsSqsConsumingEventPublisher.test.ts +++ b/plugins/events-backend-module-aws-sqs/src/publisher/AwsSqsConsumingEventPublisher.test.ts @@ -19,12 +19,12 @@ import { ReceiveMessageCommand, SQSClient, } from '@aws-sdk/client-sqs'; -import { getVoidLogger } from '@backstage/backend-common'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { ConfigReader } from '@backstage/config'; import { TestEventsService } from '@backstage/plugin-events-backend-test-utils'; import { mockClient } from 'aws-sdk-client-mock'; import { AwsSqsConsumingEventPublisher } from './AwsSqsConsumingEventPublisher'; +import { mockServices } from '@backstage/backend-test-utils'; describe('AwsSqsConsumingEventPublisher', () => { it('creates one publisher instance per configured topic', async () => { @@ -52,7 +52,7 @@ describe('AwsSqsConsumingEventPublisher', () => { }, }, }); - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const events = new TestEventsService(); const scheduler = { scheduleTask: jest.fn(), @@ -86,7 +86,7 @@ describe('AwsSqsConsumingEventPublisher', () => { }, }, }); - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const events = new TestEventsService(); const scheduler = { scheduleTask: jest.fn(), @@ -134,7 +134,7 @@ describe('AwsSqsConsumingEventPublisher', () => { }, }, }); - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const events = new TestEventsService(); let taskFn: (() => Promise) | undefined = undefined; const scheduler = { diff --git a/plugins/events-backend/src/service/DefaultEventBroker.test.ts b/plugins/events-backend/src/service/DefaultEventBroker.test.ts index 5317251726..f47f2a60bf 100644 --- a/plugins/events-backend/src/service/DefaultEventBroker.test.ts +++ b/plugins/events-backend/src/service/DefaultEventBroker.test.ts @@ -14,12 +14,12 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { TestEventSubscriber } from '@backstage/plugin-events-backend-test-utils'; import { EventParams, EventSubscriber } from '@backstage/plugin-events-node'; import { DefaultEventBroker } from './DefaultEventBroker'; +import { mockServices } from '@backstage/backend-test-utils'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('DefaultEventBroker', () => { it('passes events to interested subscribers', () => { diff --git a/plugins/events-backend/src/service/EventsBackend.test.ts b/plugins/events-backend/src/service/EventsBackend.test.ts index c2041b57ac..5f9a257ebc 100644 --- a/plugins/events-backend/src/service/EventsBackend.test.ts +++ b/plugins/events-backend/src/service/EventsBackend.test.ts @@ -14,15 +14,16 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { TestEventBroker, TestEventPublisher, TestEventSubscriber, } from '@backstage/plugin-events-backend-test-utils'; import { EventsBackend } from './EventsBackend'; +import { mockServices } from '@backstage/backend-test-utils'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('EventsBackend', () => { it('wires up all components', async () => { @@ -30,7 +31,7 @@ describe('EventsBackend', () => { const publisher1 = new TestEventPublisher(); const publisher2 = new TestEventPublisher(); - await new EventsBackend(logger) + await new EventsBackend(loggerToWinstonLogger(logger)) .setEventBroker(eventBroker) .addPublishers(publisher1, [publisher2]) .addSubscribers(new TestEventSubscriber('one', ['topicA']), [ diff --git a/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.test.ts b/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.test.ts index 665ac0b4a9..2bffa4e511 100644 --- a/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.test.ts +++ b/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.test.ts @@ -14,16 +14,16 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { TestEventsService } from '@backstage/plugin-events-backend-test-utils'; import express from 'express'; import Router from 'express-promise-router'; import request from 'supertest'; import { HttpPostIngressEventPublisher } from './HttpPostIngressEventPublisher'; +import { mockServices } from '@backstage/backend-test-utils'; describe('HttpPostIngressEventPublisher', () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); it('should set up routes correctly', async () => { const config = new ConfigReader({ diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json index c082da2eab..69028e9860 100644 --- a/plugins/events-node/package.json +++ b/plugins/events-node/package.json @@ -49,6 +49,7 @@ }, "devDependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^" } } diff --git a/plugins/events-node/src/api/DefaultEventsService.test.ts b/plugins/events-node/src/api/DefaultEventsService.test.ts index 33df923892..6e005e9e36 100644 --- a/plugins/events-node/src/api/DefaultEventsService.test.ts +++ b/plugins/events-node/src/api/DefaultEventsService.test.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { DefaultEventsService } from './DefaultEventsService'; import { EventParams } from './EventParams'; +import { mockServices } from '@backstage/backend-test-utils'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('DefaultEventsService', () => { it('passes events to interested subscribers', async () => { diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 15a9d16ee9..f65810ffec 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -43,6 +43,7 @@ "yn": "^4.0.0" }, "devDependencies": { + "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "@types/uuid": "^9.0.0", diff --git a/plugins/example-todo-list-backend/src/service/router.test.ts b/plugins/example-todo-list-backend/src/service/router.test.ts index 3a1ce458f2..e9abb5a76c 100644 --- a/plugins/example-todo-list-backend/src/service/router.test.ts +++ b/plugins/example-todo-list-backend/src/service/router.test.ts @@ -14,19 +14,19 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { DefaultIdentityClient } from '@backstage/plugin-auth-node'; import express from 'express'; import request from 'supertest'; import { createRouter } from './router'; +import { mockServices } from '@backstage/backend-test-utils'; describe('createRouter', () => { let app: express.Express; beforeAll(async () => { const router = await createRouter({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), identity: {} as DefaultIdentityClient, }); app = express().use(router); diff --git a/plugins/kubernetes-backend/src/auth/AzureIdentityStrategy.test.ts b/plugins/kubernetes-backend/src/auth/AzureIdentityStrategy.test.ts index 7e1f99aeeb..3317071893 100644 --- a/plugins/kubernetes-backend/src/auth/AzureIdentityStrategy.test.ts +++ b/plugins/kubernetes-backend/src/auth/AzureIdentityStrategy.test.ts @@ -15,10 +15,10 @@ */ import { AccessToken, TokenCredential } from '@azure/identity'; -import { getVoidLogger } from '@backstage/backend-common'; import { AzureIdentityStrategy } from './AzureIdentityStrategy'; +import { mockServices } from '@backstage/backend-test-utils'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); class StaticTokenCredential implements TokenCredential { private count: number = 0; diff --git a/plugins/kubernetes-backend/src/cluster-locator/index.test.ts b/plugins/kubernetes-backend/src/cluster-locator/index.test.ts index 1ac2a49737..64b4bfbd0a 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/index.test.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/index.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { Config, ConfigReader } from '@backstage/config'; import { CatalogApi } from '@backstage/catalog-client'; import { ANNOTATION_KUBERNETES_AUTH_PROVIDER } from '@backstage/plugin-kubernetes-common'; @@ -65,7 +64,7 @@ describe('getCombinedClusterSupplier', () => { config, catalogApi, mockStrategy, - getVoidLogger(), + mockServices.logger.mock(), undefined, auth, ); @@ -109,7 +108,7 @@ describe('getCombinedClusterSupplier', () => { config, catalogApi, new DispatchStrategy({ authStrategyMap: {} }), - getVoidLogger(), + mockServices.logger.mock(), undefined, auth, ), @@ -119,7 +118,7 @@ describe('getCombinedClusterSupplier', () => { }); it('logs a warning when two clusters have the same name', async () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const warn = jest.spyOn(logger, 'warn'); const config: Config = new ConfigReader( { diff --git a/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.test.ts b/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.test.ts index bf735cdb28..a433374a2c 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ClusterDetails, CustomResource, @@ -27,7 +26,10 @@ import { KubernetesFanOutHandler } from './KubernetesFanOutHandler'; import { KubernetesClientBasedFetcher } from './KubernetesFetcher'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { FetchResponse, KubernetesRequestAuth, @@ -189,7 +191,7 @@ describe('KubernetesFanOutHandler', () => { const getKubernetesFanOutHandler = (customResources: CustomResource[]) => { return new KubernetesFanOutHandler({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), fetcher: { fetchObjectsForService, fetchPodMetricsByNamespaces, @@ -1169,7 +1171,7 @@ describe('KubernetesFanOutHandler', () => { ], }), }; - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const kubernetesFanOutHandler = new KubernetesFanOutHandler({ logger, fetcher: new KubernetesClientBasedFetcher({ logger }), diff --git a/plugins/kubernetes-backend/src/service/KubernetesFetcher.test.ts b/plugins/kubernetes-backend/src/service/KubernetesFetcher.test.ts index 3b435fad74..dafb073bb1 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesFetcher.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesFetcher.test.ts @@ -15,7 +15,6 @@ */ import { ANNOTATION_KUBERNETES_AUTH_PROVIDER } from '@backstage/plugin-kubernetes-common'; -import { getVoidLogger } from '@backstage/backend-common'; import { KubernetesClientBasedFetcher } from './KubernetesFetcher'; import { ObjectToFetch } from '../types/types'; import { @@ -28,6 +27,7 @@ import { import { setupServer } from 'msw/node'; import { createMockDirectory, + mockServices, setupRequestMockHandlers, } from '@backstage/backend-test-utils'; import { Config } from '@kubernetes/client-node'; @@ -115,7 +115,7 @@ describe('KubernetesFetcher', () => { describe('fetchObjectsForService', () => { let sut: KubernetesClientBasedFetcher; - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const testErrorResponse = async ( errorResponse: any, @@ -1095,7 +1095,7 @@ describe('KubernetesFetcher', () => { beforeEach(() => { sut = new KubernetesClientBasedFetcher({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); }); diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts index a22642b543..02eeb8c7ed 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts @@ -16,9 +16,10 @@ import 'buffer'; import { resolve as resolvePath } from 'path'; -import { errorHandler, getVoidLogger } from '@backstage/backend-common'; +import { errorHandler } from '@backstage/backend-common'; import { createMockDirectory, + mockServices, setupRequestMockHandlers, } from '@backstage/backend-test-utils'; import { NotFoundError } from '@backstage/errors'; @@ -70,7 +71,7 @@ describe('KubernetesProxy', () => { let proxy: KubernetesProxy; let authStrategy: jest.Mocked; const worker = setupServer(); - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); const clusterSupplier: jest.Mocked = { getClusters: jest.fn< @@ -549,7 +550,7 @@ describe('KubernetesProxy', () => { }; proxy = new KubernetesProxy({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), clusterSupplier: clusterSupplier, authStrategy: strategy, discovery: mockDisocveryApi, @@ -671,7 +672,7 @@ describe('KubernetesProxy', () => { it('returns a response with a localKubectlProxy auth provider configuration', async () => { proxy = new KubernetesProxy({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), clusterSupplier: new LocalKubectlProxyClusterLocator(), authStrategy: new AnonymousStrategy(), discovery: mockDisocveryApi, diff --git a/plugins/kubernetes-node/src/auth/PinnipedHelper.test.ts b/plugins/kubernetes-node/src/auth/PinnipedHelper.test.ts index 3cb25d7934..fdfea030a5 100644 --- a/plugins/kubernetes-node/src/auth/PinnipedHelper.test.ts +++ b/plugins/kubernetes-node/src/auth/PinnipedHelper.test.ts @@ -32,15 +32,15 @@ import { KubernetesRequestAuth, } from '@backstage/plugin-kubernetes-common'; import { PinnipedHelper, PinnipedParameters } from './PinnipedHelper'; -import { getVoidLogger } from '@backstage/backend-common'; import { HEADER_KUBERNETES_CLUSTER } from '@backstage/plugin-kubernetes-backend'; import { JsonObject } from '@backstage/types'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; describe('Pinniped - tokenCredentialRequest', () => { let app: ExtendedHttpServer; - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); let httpsRequest: jest.SpyInstance; const worker = setupServer(); setupRequestMockHandlers(worker); diff --git a/plugins/notifications-backend/src/service/router.test.ts b/plugins/notifications-backend/src/service/router.test.ts index 3f091bac4b..804b0ff088 100644 --- a/plugins/notifications-backend/src/service/router.test.ts +++ b/plugins/notifications-backend/src/service/router.test.ts @@ -15,7 +15,6 @@ */ import { DatabaseManager, - getVoidLogger, PluginDatabaseManager, } from '@backstage/backend-common'; import express from 'express'; @@ -53,7 +52,7 @@ describe('createRouter', () => { beforeAll(async () => { const router = await createRouter({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), database: createDatabase(), discovery, signals: signalService, diff --git a/plugins/permission-backend/src/service/router.test.ts b/plugins/permission-backend/src/service/router.test.ts index 0da9ecd748..be90c5f628 100644 --- a/plugins/permission-backend/src/service/router.test.ts +++ b/plugins/permission-backend/src/service/router.test.ts @@ -16,7 +16,6 @@ import express from 'express'; import request from 'supertest'; -import { getVoidLogger } from '@backstage/backend-common'; import { AuthorizeResult } from '@backstage/plugin-permission-common'; import { ApplyConditionsRequestEntry, @@ -67,7 +66,7 @@ describe('createRouter', () => { beforeAll(async () => { const router = await createRouter({ config: new ConfigReader({ permission: { enabled: true } }), - logger: getVoidLogger(), + logger: mockServices.logger.mock(), discovery: mockServices.discovery(), auth: mockServices.auth(), httpAuth: mockServices.httpAuth({ diff --git a/plugins/permission-node/src/ServerPermissionClient.test.ts b/plugins/permission-node/src/ServerPermissionClient.test.ts index 8f050bcfff..215f624fe9 100644 --- a/plugins/permission-node/src/ServerPermissionClient.test.ts +++ b/plugins/permission-node/src/ServerPermissionClient.test.ts @@ -29,7 +29,6 @@ import { } from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { - getVoidLogger, PluginEndpointDiscovery, ServerTokenManager, } from '@backstage/backend-common'; @@ -62,7 +61,7 @@ const config = new ConfigReader({ permission: { enabled: true }, backend: { auth: { keys: [{ secret: 'a-secret-key' }] } }, }); -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); describe('ServerPermissionClient', () => { setupRequestMockHandlers(server); diff --git a/plugins/proxy-backend/src/service/router.config.test.ts b/plugins/proxy-backend/src/service/router.config.test.ts index 8643ee67c0..282f2cfe96 100644 --- a/plugins/proxy-backend/src/service/router.config.test.ts +++ b/plugins/proxy-backend/src/service/router.config.test.ts @@ -14,7 +14,10 @@ * limitations under the License. */ -import { getVoidLogger, HostDiscovery } from '@backstage/backend-common'; +import { + HostDiscovery, + loggerToWinstonLogger, +} from '@backstage/backend-common'; import { ConfigSources, MutableConfigSource, @@ -25,6 +28,7 @@ import { rest } from 'msw'; import { setupServer } from 'msw/node'; import request from 'supertest'; import { createRouter } from './router'; +import { mockServices } from '@backstage/backend-test-utils'; // this test is stored in its own file to work around the mocked // http-proxy-middleware module used in the rest of the tests @@ -57,7 +61,7 @@ describe('createRouter reloadable configuration', () => { afterEach(() => server.resetHandlers()); it('should be able to observe the config', async () => { - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); // Grab the subscriber function and use mutable config data to mock a config file change const mutableConfigSource = MutableConfigSource.create({ data: {} }); diff --git a/plugins/proxy-backend/src/service/router.test.ts b/plugins/proxy-backend/src/service/router.test.ts index 9149f36015..8dcabed16b 100644 --- a/plugins/proxy-backend/src/service/router.test.ts +++ b/plugins/proxy-backend/src/service/router.test.ts @@ -14,7 +14,10 @@ * limitations under the License. */ -import { getVoidLogger, HostDiscovery } from '@backstage/backend-common'; +import { + HostDiscovery, + loggerToWinstonLogger, +} from '@backstage/backend-common'; import { mockServices } from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { Request, Response } from 'express'; @@ -37,7 +40,7 @@ const mockCreateProxyMiddleware = createProxyMiddleware as jest.MockedFunction< describe('createRouter', () => { describe('where all proxy config are valid', () => { - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); const config = new ConfigReader({ backend: { baseUrl: 'https://example.com:7007', @@ -130,7 +133,7 @@ describe('createRouter', () => { describe('where buildMiddleware would fail', () => { it('throws an error if skip failures is not set', async () => { - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); logger.warn = jest.fn(); const config = new ConfigReader({ backend: { @@ -165,7 +168,7 @@ describe('createRouter', () => { }); it('works if skip failures is set', async () => { - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); logger.warn = jest.fn(); const config = new ConfigReader({ backend: { @@ -201,7 +204,7 @@ describe('createRouter', () => { }); describe('buildMiddleware', () => { - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); beforeEach(() => { mockCreateProxyMiddleware.mockClear(); diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.examples.test.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.examples.test.ts index 18ff0ad3ec..da82849c1e 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.examples.test.ts +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.examples.test.ts @@ -14,12 +14,12 @@ * limitations under the License. */ import { createConfluenceToMarkdownAction } from './confluenceToMarkdown'; -import { getVoidLogger } from '@backstage/backend-common'; -import { UrlReader } from '@backstage/backend-common'; +import { UrlReader, loggerToWinstonLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { ScmIntegrations } from '@backstage/integration'; import { createMockDirectory, + mockServices, setupRequestMockHandlers, } from '@backstage/backend-test-utils'; import { rest } from 'msw'; @@ -57,7 +57,7 @@ describe('confluence:transform:markdown examples', () => { repoUrl: string; }>; - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); jest.spyOn(logger, 'info'); const mockDir = createMockDirectory(); diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts index eccb66f79e..b19259b3df 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts @@ -15,12 +15,12 @@ */ import { createConfluenceToMarkdownAction } from './confluenceToMarkdown'; -import { getVoidLogger } from '@backstage/backend-common'; -import { UrlReader } from '@backstage/backend-common'; +import { UrlReader, loggerToWinstonLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { ScmIntegrations } from '@backstage/integration'; import { createMockDirectory, + mockServices, setupRequestMockHandlers, } from '@backstage/backend-test-utils'; import type { ActionContext } from '@backstage/plugin-scaffolder-node'; @@ -56,7 +56,7 @@ describe('confluence:transform:markdown', () => { repoUrl: string; }>; - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); jest.spyOn(logger, 'info'); const mockDir = createMockDirectory(); diff --git a/plugins/scaffolder-backend-module-github/src/actions/githubRepoPush.examples.test.ts b/plugins/scaffolder-backend-module-github/src/actions/githubRepoPush.examples.test.ts index 691cebd367..2ec4effe56 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/githubRepoPush.examples.test.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/githubRepoPush.examples.test.ts @@ -53,12 +53,13 @@ const mockGit = { }; jest.mock('@backstage/backend-common', () => ({ + loggerToWinstonLogger: jest.requireActual('@backstage/backend-common') + .loggerToWinstonLogger, Git: { fromAuth() { return mockGit; }, }, - getVoidLogger: jest.requireActual('@backstage/backend-common').getVoidLogger, })); jest.mock('./helpers', () => { diff --git a/plugins/scaffolder-backend-module-github/src/actions/githubRepoPush.test.ts b/plugins/scaffolder-backend-module-github/src/actions/githubRepoPush.test.ts index 206d4f067d..4d16a25774 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/githubRepoPush.test.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/githubRepoPush.test.ts @@ -27,12 +27,13 @@ const mockGit = { }; jest.mock('@backstage/backend-common', () => ({ + loggerToWinstonLogger: jest.requireActual('@backstage/backend-common') + .loggerToWinstonLogger, Git: { fromAuth() { return mockGit; }, }, - getVoidLogger: jest.requireActual('@backstage/backend-common').getVoidLogger, })); jest.mock('./gitHelpers', () => { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 2e19da669f..5d70e5bfba 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { NunjucksWorkflowRunner } from './NunjucksWorkflowRunner'; import { TemplateActionRegistry } from '../actions'; import { ScmIntegrations } from '@backstage/integration'; @@ -37,11 +36,14 @@ import { RESOURCE_TYPE_SCAFFOLDER_ACTION } from '@backstage/plugin-scaffolder-co import { createMockDirectory, mockCredentials, + mockServices, } from '@backstage/backend-test-utils'; import stripAnsi from 'strip-ansi'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; +import { LoggerService } from '@backstage/backend-plugin-api'; describe('NunjucksWorkflowRunner', () => { - const logger = getVoidLogger(); + let logger: LoggerService; let actionRegistry = new TemplateActionRegistry(); let runner: NunjucksWorkflowRunner; let fakeActionHandler: jest.Mock; @@ -94,6 +96,7 @@ describe('NunjucksWorkflowRunner', () => { mockDir.clear(); jest.resetAllMocks(); + logger = mockServices.logger.mock(); actionRegistry = new TemplateActionRegistry(); fakeActionHandler = jest.fn(); fakeTaskLog = jest.fn(); @@ -173,7 +176,7 @@ describe('NunjucksWorkflowRunner', () => { actionRegistry, integrations, workingDirectory: mockDir.path, - logger, + logger: loggerToWinstonLogger(logger), permissions: mockedPermissionApi, }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index f4bae43dbf..ec2a81680d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -14,7 +14,10 @@ * limitations under the License. */ -import { getVoidLogger, DatabaseManager } from '@backstage/backend-common'; +import { + DatabaseManager, + loggerToWinstonLogger, +} from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { @@ -23,6 +26,7 @@ import { } from '@backstage/plugin-scaffolder-node'; import { DatabaseTaskStore } from './DatabaseTaskStore'; import { StorageTaskBroker, TaskManager } from './StorageTaskBroker'; +import { mockServices } from '@backstage/backend-test-utils'; async function createStore(): Promise { const manager = DatabaseManager.fromConfig( @@ -55,7 +59,7 @@ describe('StorageTaskBroker', () => { secrets: fakeSecrets, }; - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); it('should claim a dispatched work item', async () => { const broker = new StorageTaskBroker(storage, logger); await broker.dispatch(emptyTaskSpec); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts index 70308c420c..013d5d3296 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts @@ -15,7 +15,10 @@ */ import os from 'os'; -import { DatabaseManager, getVoidLogger } from '@backstage/backend-common'; +import { + DatabaseManager, + loggerToWinstonLogger, +} from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { DatabaseTaskStore } from './DatabaseTaskStore'; import { StorageTaskBroker } from './StorageTaskBroker'; @@ -31,6 +34,7 @@ import { import { WorkflowRunner } from './types'; import ObservableImpl from 'zen-observable'; import waitForExpect from 'wait-for-expect'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('./NunjucksWorkflowRunner'); const MockedNunjucksWorkflowRunner = @@ -74,7 +78,7 @@ describe('TaskWorker', () => { MockedNunjucksWorkflowRunner.mockImplementation(() => workflowRunner); }); - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); it('should call the default workflow runner when the apiVersion is beta3', async () => { const broker = new StorageTaskBroker(storage, logger); @@ -167,7 +171,7 @@ describe('Concurrent TaskWorker', () => { MockedNunjucksWorkflowRunner.mockImplementation(() => workflowRunner); }); - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); it('should be able to run multiple tasks at once', async () => { const broker = new StorageTaskBroker(storage, logger); @@ -228,7 +232,7 @@ describe('Cancellable TaskWorker', () => { MockedNunjucksWorkflowRunner.mockImplementation(() => workflowRunner); }); - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); it('should be able to cancel the running task', async () => { const taskBroker = new StorageTaskBroker(storage, logger); diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 2118f46b22..4d04699f2a 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -16,7 +16,7 @@ import { DatabaseManager, - getVoidLogger, + loggerToWinstonLogger, PluginDatabaseManager, UrlReaders, } from '@backstage/backend-common'; @@ -76,7 +76,7 @@ function createDatabase(): PluginDatabaseManager { } const mockUrlReader = UrlReaders.default({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), config: new ConfigReader({}), }); @@ -183,7 +183,7 @@ describe('createRouter', () => { describe('not providing an identity api', () => { beforeEach(async () => { - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); const databaseTaskStore = await DatabaseTaskStore.create({ database: createDatabase(), }); @@ -238,7 +238,7 @@ describe('createRouter', () => { }); afterEach(() => { - jest.resetAllMocks(); + jest.clearAllMocks(); }); describe('GET /v2/actions', () => { @@ -690,7 +690,7 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ describe('providing an identity api', () => { beforeEach(async () => { - const logger = getVoidLogger(); + const logger = loggerToWinstonLogger(mockServices.logger.mock()); const databaseTaskStore = await DatabaseTaskStore.create({ database: createDatabase(), }); diff --git a/plugins/scaffolder-node-test-utils/src/actions/mockActionConext.ts b/plugins/scaffolder-node-test-utils/src/actions/mockActionConext.ts index 15ad5eb769..b178a1d51d 100644 --- a/plugins/scaffolder-node-test-utils/src/actions/mockActionConext.ts +++ b/plugins/scaffolder-node-test-utils/src/actions/mockActionConext.ts @@ -15,10 +15,11 @@ */ import { PassThrough } from 'stream'; -import { getVoidLogger } from '@backstage/backend-common'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; import { createMockDirectory, mockCredentials, + mockServices, } from '@backstage/backend-test-utils'; import { JsonObject } from '@backstage/types'; import { ActionContext } from '@backstage/plugin-scaffolder-node'; @@ -37,7 +38,7 @@ export const createMockActionContext = < ): ActionContext => { const credentials = mockCredentials.user(); const defaultContext = { - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), logStream: new PassThrough(), output: jest.fn(), createTemporaryDirectory: jest.fn(), diff --git a/plugins/scaffolder-node/src/actions/gitHelpers.test.ts b/plugins/scaffolder-node/src/actions/gitHelpers.test.ts index 64281d660f..85fb9ba2e6 100644 --- a/plugins/scaffolder-node/src/actions/gitHelpers.test.ts +++ b/plugins/scaffolder-node/src/actions/gitHelpers.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; import { Git } from '../scm'; import { commitAndPushRepo, @@ -24,6 +24,7 @@ import { createBranch, cloneRepo, } from './gitHelpers'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('../scm', () => ({ Git: { @@ -40,14 +41,13 @@ jest.mock('../scm', () => ({ clone: jest.fn(), }), }, - getVoidLogger: jest.requireActual('@backstage/backend-common').getVoidLogger, })); jest.mock('fs-extra', () => ({ cpSync: jest.fn(), })); const mockedGit = Git.fromAuth({ - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), }); describe('initRepoAndPush', () => { @@ -64,7 +64,7 @@ describe('initRepoAndPush', () => { username: 'test-user', password: 'test-password', }, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), }); }); @@ -120,7 +120,7 @@ describe('initRepoAndPush', () => { auth: { token: 'test-token', }, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), }); expect(mockedGit.init).toHaveBeenCalledWith({ @@ -138,7 +138,7 @@ describe('initRepoAndPush', () => { username: 'test-user', password: 'test-password', }, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), }); expect(mockedGit.init).toHaveBeenCalledWith({ @@ -159,7 +159,7 @@ describe('initRepoAndPush', () => { username: 'test-user', password: 'test-password', }, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), }); expect(mockedGit.commit).toHaveBeenCalledWith({ @@ -190,7 +190,7 @@ describe('commitAndPushRepo', () => { username: 'test-user', password: 'test-password', }, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), commitMessage: 'commit message', }); }); @@ -246,7 +246,7 @@ describe('commitAndPushRepo', () => { username: 'test-user', password: 'test-password', }, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), commitMessage: 'commit message', branch: 'otherbranch', }); @@ -269,7 +269,7 @@ describe('commitAndPushRepo', () => { username: 'test-user', password: 'test-password', }, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), commitMessage: 'commit message', remoteRef: 'refs/for/master', }); @@ -297,7 +297,7 @@ describe('commitAndPushRepo', () => { username: 'test-user', password: 'test-password', }, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), branch: 'master', }); @@ -560,7 +560,7 @@ describe('commitAndPushBranch', () => { name: 'gitCommitter', email: 'gitCommitter@backstage.io', }, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), }); expect(mockedGit.commit).toHaveBeenCalledWith({ diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 128bc0e28c..1cd9bfc854 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -62,6 +62,7 @@ }, "devDependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@elastic/elasticsearch-mock": "^1.0.0", "@short.io/opensearch-mock": "^0.3.1" diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts index 602a158b98..3f64e0b768 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { errors } from '@elastic/elasticsearch'; import Mock from '@elastic/elasticsearch-mock'; @@ -26,6 +25,7 @@ import { encodePageCursor, } from './ElasticSearchSearchEngine'; import { ElasticSearchSearchEngineIndexer } from './ElasticSearchSearchEngineIndexer'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('uuid', () => ({ v4: () => 'tag' })); @@ -86,14 +86,14 @@ describe('ElasticSearchSearchEngine', () => { options, 'search', '', - getVoidLogger(), + mockServices.logger.mock(), 1000, ); inspectableSearchEngine = new ElasticSearchSearchEngineForTranslatorTests( options, 'search', '', - getVoidLogger(), + mockServices.logger.mock(), 1000, ); // eslint-disable-next-line dot-notation @@ -915,7 +915,7 @@ describe('ElasticSearchSearchEngine', () => { const getOptional = jest.spyOn(config, 'getOptional'); await ElasticSearchSearchEngine.fromConfig({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), config, }); @@ -940,7 +940,7 @@ describe('ElasticSearchSearchEngine', () => { expect( async () => await ElasticSearchSearchEngine.fromConfig({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), config, }), ).not.toThrow(); diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts index 453a825574..44d33c27a5 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts @@ -14,12 +14,12 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { TestPipeline } from '@backstage/plugin-search-backend-node'; import Mock from '@elastic/elasticsearch-mock'; import { range } from 'lodash'; import { ElasticSearchClientWrapper } from './ElasticSearchClientWrapper'; import { ElasticSearchSearchEngineIndexer } from './ElasticSearchSearchEngineIndexer'; +import { mockServices } from '@backstage/backend-test-utils'; const mock = new Mock(); const clientWrapper = ElasticSearchClientWrapper.fromClientOptions({ @@ -43,7 +43,7 @@ describe('ElasticSearchSearchEngineIndexer', () => { indexPrefix: '', indexSeparator: '-index__', alias: 'some-type-index__search', - logger: getVoidLogger(), + logger: mockServices.logger.mock(), elasticSearchClientWrapper: clientWrapper, batchSize: 1000, skipRefresh: false, @@ -270,7 +270,7 @@ describe('ElasticSearchSearchEngineIndexer', () => { indexPrefix: '', indexSeparator: '-index__', alias: 'some-type-index__search', - logger: getVoidLogger(), + logger: mockServices.logger.mock(), elasticSearchClientWrapper: mockClientWrapper, batchSize: 1000, skipRefresh: false, @@ -292,7 +292,7 @@ describe('ElasticSearchSearchEngineIndexer', () => { indexPrefix: '', indexSeparator: '-index__', alias: 'some-type-index__search', - logger: getVoidLogger(), + logger: mockServices.logger.mock(), elasticSearchClientWrapper: clientWrapper, batchSize: 1000, skipRefresh: true, diff --git a/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.test.ts b/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.test.ts index 498a4d9fbf..82305d0d86 100644 --- a/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.test.ts +++ b/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.test.ts @@ -14,19 +14,21 @@ * limitations under the License. */ import { - getVoidLogger, PluginEndpointDiscovery, TokenManager, } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { TestPipeline } from '@backstage/plugin-search-backend-node'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; import { Readable } from 'stream'; import { ToolDocumentCollatorFactory } from './ToolDocumentCollatorFactory'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); const mockTools = { tools: [ diff --git a/plugins/search-backend-module-stack-overflow-collator/src/collators/StackOverflowQuestionsCollatorFactory.test.ts b/plugins/search-backend-module-stack-overflow-collator/src/collators/StackOverflowQuestionsCollatorFactory.test.ts index 5d2f65923c..f4d4a77c3c 100644 --- a/plugins/search-backend-module-stack-overflow-collator/src/collators/StackOverflowQuestionsCollatorFactory.test.ts +++ b/plugins/search-backend-module-stack-overflow-collator/src/collators/StackOverflowQuestionsCollatorFactory.test.ts @@ -13,19 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { StackOverflowQuestionsCollatorFactory, StackOverflowQuestionsCollatorFactoryOptions, } from './StackOverflowQuestionsCollatorFactory'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { TestPipeline } from '@backstage/plugin-search-backend-node'; import { ConfigReader } from '@backstage/config'; import { Readable } from 'stream'; import { setupServer } from 'msw/node'; import { rest } from 'msw'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); const mockQuestion = { items: [ diff --git a/plugins/search-backend-module-techdocs/src/collators/DefaultTechDocsCollatorFactory.test.ts b/plugins/search-backend-module-techdocs/src/collators/DefaultTechDocsCollatorFactory.test.ts index 8f56a92096..26329e5ed6 100644 --- a/plugins/search-backend-module-techdocs/src/collators/DefaultTechDocsCollatorFactory.test.ts +++ b/plugins/search-backend-module-techdocs/src/collators/DefaultTechDocsCollatorFactory.test.ts @@ -14,14 +14,16 @@ * limitations under the License. */ import { - getVoidLogger, PluginEndpointDiscovery, TokenManager, } from '@backstage/backend-common'; import { Entity } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { TestPipeline } from '@backstage/plugin-search-backend-node'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; import { Readable } from 'stream'; @@ -29,7 +31,7 @@ import { DefaultTechDocsCollatorFactory } from './DefaultTechDocsCollatorFactory import { defaultTechDocsCollatorEntityTransformer } from './defaultTechDocsCollatorEntityTransformer'; import { TechDocsCollatorEntityTransformer } from './TechDocsCollatorEntityTransformer'; -const logger = getVoidLogger(); +const logger = mockServices.logger.mock(); const mockSearchDocIndex = { config: { @@ -89,8 +91,8 @@ describe('DefaultTechDocsCollatorFactory', () => { authenticate: jest.fn(), }; const options = { + logger, discovery: mockDiscoveryApi, - logger: getVoidLogger(), tokenManager: mockTokenManager, }; diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index a3c9e16f95..cd2981d792 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -60,6 +60,7 @@ }, "devDependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/ndjson": "^2.0.1" } diff --git a/plugins/search-backend-node/src/IndexBuilder.test.ts b/plugins/search-backend-node/src/IndexBuilder.test.ts index 70d00f6974..6796c7c01e 100644 --- a/plugins/search-backend-node/src/IndexBuilder.test.ts +++ b/plugins/search-backend-node/src/IndexBuilder.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { TaskInvocationDefinition, TaskRunner } from '@backstage/backend-tasks'; import { DocumentCollatorFactory, @@ -23,6 +22,7 @@ import { import { Readable, Transform } from 'stream'; import { IndexBuilder } from './IndexBuilder'; import { LunrSearchEngine, SearchEngine } from './index'; +import { mockServices } from '@backstage/backend-test-utils'; class TestDocumentCollatorFactory implements DocumentCollatorFactory { readonly type: string = 'anything'; @@ -57,7 +57,7 @@ describe('IndexBuilder', () => { let testScheduledTaskRunner: TaskRunner; beforeEach(() => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); testScheduledTaskRunner = { run: async (task: TaskInvocationDefinition & { fn: () => void }) => { task.fn(); diff --git a/plugins/search-backend-node/src/Scheduler.test.ts b/plugins/search-backend-node/src/Scheduler.test.ts index 6daae3013d..f7e68988d2 100644 --- a/plugins/search-backend-node/src/Scheduler.test.ts +++ b/plugins/search-backend-node/src/Scheduler.test.ts @@ -14,14 +14,14 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { Scheduler } from './index'; +import { mockServices } from '@backstage/backend-test-utils'; describe('Scheduler', () => { let testScheduler: Scheduler; beforeEach(() => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); testScheduler = new Scheduler({ logger, }); diff --git a/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts b/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts index addcb87497..45cc98e9ba 100644 --- a/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts +++ b/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts @@ -15,7 +15,6 @@ */ import { - getVoidLogger, ReadUrlResponse, UrlReader, UrlReaders, @@ -24,10 +23,11 @@ import { ConfigReader } from '@backstage/config'; import { Readable } from 'stream'; import { NewlineDelimitedJsonCollatorFactory } from './NewlineDelimitedJsonCollatorFactory'; import { TestPipeline } from '../test-utils'; +import { mockServices } from '@backstage/backend-test-utils'; describe('DefaultCatalogCollatorFactory', () => { const config = new ConfigReader({}); - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); it('has expected type', () => { const factory = NewlineDelimitedJsonCollatorFactory.fromConfig(config, { diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts index e5347b3cb1..407fa779ab 100644 --- a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts +++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import lunr from 'lunr'; import { IndexableDocument } from '@backstage/plugin-search-common'; import { @@ -27,6 +26,7 @@ import { import { LunrSearchEngineIndexer } from './LunrSearchEngineIndexer'; import { SearchEngine } from '../types'; import { TestPipeline } from '../test-utils'; +import { mockServices } from '@backstage/backend-test-utils'; /** * Just used to test the default translator shipped with LunrSearchEngine. @@ -77,7 +77,9 @@ describe('LunrSearchEngine', () => { let testLunrSearchEngine: SearchEngine; beforeEach(() => { - testLunrSearchEngine = new LunrSearchEngine({ logger: getVoidLogger() }); + testLunrSearchEngine = new LunrSearchEngine({ + logger: mockServices.logger.mock(), + }); jest.clearAllMocks(); }); @@ -107,7 +109,7 @@ describe('LunrSearchEngine', () => { it('should return translated query', async () => { const inspectableSearchEngine = new LunrSearchEngineForTests({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const translatorUnderTest = inspectableSearchEngine.getTranslator(); @@ -149,7 +151,7 @@ describe('LunrSearchEngine', () => { it('should have default offset and limit', async () => { const inspectableSearchEngine = new LunrSearchEngineForTests({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const translatorUnderTest = inspectableSearchEngine.getTranslator(); @@ -190,7 +192,7 @@ describe('LunrSearchEngine', () => { it('should return translated query with 1 filter', async () => { const inspectableSearchEngine = new LunrSearchEngineForTests({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const translatorUnderTest = inspectableSearchEngine.getTranslator(); @@ -235,7 +237,7 @@ describe('LunrSearchEngine', () => { it('should handle single-item array filter as scalar value', async () => { const inspectableSearchEngine = new LunrSearchEngineForTests({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const translatorUnderTest = inspectableSearchEngine.getTranslator(); @@ -266,7 +268,7 @@ describe('LunrSearchEngine', () => { it('should return translated query with multiple filters', async () => { const inspectableSearchEngine = new LunrSearchEngineForTests({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const translatorUnderTest = inspectableSearchEngine.getTranslator(); @@ -315,7 +317,7 @@ describe('LunrSearchEngine', () => { it('should throw if translated query references missing field', async () => { const inspectableSearchEngine = new LunrSearchEngineForTests({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const translatorUnderTest = inspectableSearchEngine.getTranslator(); @@ -477,7 +479,7 @@ describe('LunrSearchEngine', () => { it('should perform search query and return highlight metadata on match', async () => { const inspectableSearchEngine = new LunrSearchEngineForTests({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); const mockDocuments = [ @@ -1012,7 +1014,7 @@ describe('LunrSearchEngine', () => { // Set up an inspectable search engine to pre-set some data. const inspectableSearchEngine = new LunrSearchEngineForTests({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); inspectableSearchEngine.setDocStore({ 'existing-location': doc }); @@ -1047,7 +1049,7 @@ describe('LunrSearchEngine', () => { // Set up an inspectable search engine to pre-set some data. const doc = { title: 'A doc', text: 'test', location: 'some-location' }; const inspectableSearchEngine = new LunrSearchEngineForTests({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); inspectableSearchEngine.setDocStore({ 'existing-location': doc }); @@ -1073,7 +1075,7 @@ describe('LunrSearchEngine', () => { // Set up an inspectable search engine to pre-set some data. const doc = { title: 'A doc', text: 'test', location: 'some-location' }; const inspectableSearchEngine = new LunrSearchEngineForTests({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), }); inspectableSearchEngine.setDocStore({ 'existing-location': doc }); @@ -1178,7 +1180,9 @@ describe('stopword testing', () => { let testLunrSearchEngine: SearchEngine; beforeEach(() => { - testLunrSearchEngine = new LunrSearchEngine({ logger: getVoidLogger() }); + testLunrSearchEngine = new LunrSearchEngine({ + logger: mockServices.logger.mock(), + }); jest.clearAllMocks(); }); diff --git a/plugins/search-backend/src/service/router.test.ts b/plugins/search-backend/src/service/router.test.ts index 59f2f95afe..81b45bc7e6 100644 --- a/plugins/search-backend/src/service/router.test.ts +++ b/plugins/search-backend/src/service/router.test.ts @@ -14,10 +14,7 @@ * limitations under the License. */ -import { - PluginEndpointDiscovery, - getVoidLogger, -} from '@backstage/backend-common'; +import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { @@ -55,7 +52,7 @@ describe('createRouter', () => { }; beforeAll(async () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); mockSearchEngine = { getIndexer: jest.fn(), setTranslator: jest.fn(), @@ -259,7 +256,7 @@ describe('createRouter', () => { describe('search result filtering', () => { beforeAll(async () => { - const logger = getVoidLogger(); + const logger = mockServices.logger.mock(); mockSearchEngine = { getIndexer: jest.fn(), setTranslator: jest.fn(), diff --git a/plugins/signals-backend/package.json b/plugins/signals-backend/package.json index b148d4d5e5..846d77d661 100644 --- a/plugins/signals-backend/package.json +++ b/plugins/signals-backend/package.json @@ -46,6 +46,7 @@ }, "devDependencies": { "@backstage/backend-defaults": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@backstage/plugin-auth-backend": "workspace:^", "@backstage/plugin-auth-backend-module-guest-provider": "workspace:^", diff --git a/plugins/signals-backend/src/service/SignalManager.test.ts b/plugins/signals-backend/src/service/SignalManager.test.ts index 7d3a6ddf59..eccc715d1b 100644 --- a/plugins/signals-backend/src/service/SignalManager.test.ts +++ b/plugins/signals-backend/src/service/SignalManager.test.ts @@ -16,8 +16,8 @@ import { WebSocket } from 'ws'; import { EventsServiceSubscribeOptions } from '@backstage/plugin-events-node'; import { SignalManager } from './SignalManager'; -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; +import { mockServices } from '@backstage/backend-test-utils'; class MockWebSocket { closed: boolean = false; @@ -76,7 +76,7 @@ describe('SignalManager', () => { const manager = SignalManager.create({ events: mockEvents, - logger: getVoidLogger(), + logger: mockServices.logger.mock(), config: new ConfigReader({}), lifecycle: mockLifecycle as any, }); diff --git a/plugins/signals-backend/src/service/router.test.ts b/plugins/signals-backend/src/service/router.test.ts index c081031c54..000afec23c 100644 --- a/plugins/signals-backend/src/service/router.test.ts +++ b/plugins/signals-backend/src/service/router.test.ts @@ -13,10 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { - getVoidLogger, - PluginEndpointDiscovery, -} from '@backstage/backend-common'; +import { PluginEndpointDiscovery } from '@backstage/backend-common'; import express from 'express'; import request from 'supertest'; @@ -25,6 +22,7 @@ import { EventsService } from '@backstage/plugin-events-node'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { UserInfoService } from '@backstage/backend-plugin-api'; import { ConfigReader } from '@backstage/config'; +import { mockServices } from '@backstage/backend-test-utils'; const eventsServiceMock: jest.Mocked = { subscribe: jest.fn(), @@ -49,7 +47,7 @@ describe('createRouter', () => { beforeAll(async () => { const router = await createRouter({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), identity: identityApiMock, events: eventsServiceMock, discovery, diff --git a/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts b/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts index fa4c81682c..7dff7069db 100644 --- a/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts +++ b/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts @@ -14,9 +14,10 @@ * limitations under the License. */ -import { CacheClient, getVoidLogger } from '@backstage/backend-common'; +import { CacheClient, loggerToWinstonLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { CacheInvalidationError, TechDocsCache } from './TechDocsCache'; +import { mockServices } from '@backstage/backend-test-utils'; const cached = (str: string): string => { return Buffer.from(str).toString('base64'); @@ -35,7 +36,7 @@ describe('TechDocsCache', () => { }; CacheUnderTest = TechDocsCache.fromConfig(new ConfigReader({}), { cache: MockClient, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), }); }); @@ -82,7 +83,7 @@ describe('TechDocsCache', () => { }), { cache: MockClient, - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), }, ); diff --git a/plugins/techdocs-backend/src/cache/cacheMiddleware.test.ts b/plugins/techdocs-backend/src/cache/cacheMiddleware.test.ts index 4dd993a163..1d814c3caa 100644 --- a/plugins/techdocs-backend/src/cache/cacheMiddleware.test.ts +++ b/plugins/techdocs-backend/src/cache/cacheMiddleware.test.ts @@ -14,11 +14,12 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; import express from 'express'; import request from 'supertest'; import { createCacheMiddleware } from './cacheMiddleware'; import { TechDocsCache } from './TechDocsCache'; +import { mockServices } from '@backstage/backend-test-utils'; /** * Mocks cached HTTP response. @@ -57,7 +58,7 @@ describe('createCacheMiddleware', () => { invalidateMultiple: jest.fn().mockResolvedValue(undefined), } as unknown as jest.Mocked; const router = await createCacheMiddleware({ - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), cache, }); app = express().use(router); diff --git a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts index 3f1a857c4d..a0fc908ee5 100644 --- a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts +++ b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts @@ -16,17 +16,20 @@ import { PluginEndpointDiscovery, - getVoidLogger, TokenManager, + loggerToWinstonLogger, } from '@backstage/backend-common'; import { Entity } from '@backstage/catalog-model'; import { DefaultTechDocsCollator } from './DefaultTechDocsCollator'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { + mockServices, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; import { setupServer } from 'msw/node'; import { rest } from 'msw'; import { ConfigReader } from '@backstage/config'; -const logger = getVoidLogger(); +const logger = loggerToWinstonLogger(mockServices.logger.mock()); const mockSearchDocIndex = { config: { diff --git a/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts b/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts index ff714eee63..bb66c303b7 100644 --- a/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts +++ b/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts @@ -15,7 +15,7 @@ */ import { - getVoidLogger, + loggerToWinstonLogger, PluginEndpointDiscovery, } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; @@ -30,6 +30,7 @@ import * as winston from 'winston'; import { TechDocsCache } from '../cache'; import { DocsBuilder, shouldCheckForUpdate } from '../DocsBuilder'; import { DocsSynchronizer, DocsSynchronizerSyncOpts } from './DocsSynchronizer'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('../DocsBuilder'); jest.useFakeTimers(); @@ -97,7 +98,7 @@ describe('DocsSynchronizer', () => { docsSynchronizer = new DocsSynchronizer({ publisher, config: new ConfigReader({}), - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), buildLogTransport: mockBuildLogTransport, scmIntegrations: ScmIntegrations.fromConfig(new ConfigReader({})), cache, @@ -346,7 +347,7 @@ describe('DocsSynchronizer', () => { config: new ConfigReader({ techdocs: { legacyUseCaseSensitiveTripletPaths: true }, }), - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), buildLogTransport: new winston.transports.Stream({ stream: new PassThrough(), }), diff --git a/plugins/techdocs-backend/src/service/router.test.ts b/plugins/techdocs-backend/src/service/router.test.ts index 224a87cb43..72da3023b0 100644 --- a/plugins/techdocs-backend/src/service/router.test.ts +++ b/plugins/techdocs-backend/src/service/router.test.ts @@ -16,7 +16,7 @@ import { errorHandler, - getVoidLogger, + loggerToWinstonLogger, PluginCacheManager, PluginEndpointDiscovery, } from '@backstage/backend-common'; @@ -33,6 +33,7 @@ import { DocsSynchronizer, DocsSynchronizerSyncOpts } from './DocsSynchronizer'; import { CachedEntityLoader } from './CachedEntityLoader'; import { createEventStream, createRouter, RouterOptions } from './router'; import { TechDocsCache } from '../cache'; +import { mockServices } from '@backstage/backend-test-utils'; jest.mock('@backstage/catalog-client'); jest.mock('@backstage/config'); @@ -126,7 +127,7 @@ describe('createRouter', () => { generators, publisher, config: new ConfigReader({}), - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), discovery, cache, docsBuildStrategy, @@ -134,7 +135,7 @@ describe('createRouter', () => { const recommendedOptions = { publisher, config: new ConfigReader({}), - logger: getVoidLogger(), + logger: loggerToWinstonLogger(mockServices.logger.mock()), discovery, cache, docsBuildStrategy, diff --git a/plugins/techdocs-node/src/stages/generate/generators.test.ts b/plugins/techdocs-node/src/stages/generate/generators.test.ts index a1c585e795..3e0571af54 100644 --- a/plugins/techdocs-node/src/stages/generate/generators.test.ts +++ b/plugins/techdocs-node/src/stages/generate/generators.test.ts @@ -14,12 +14,16 @@ * limitations under the License. */ -import { ContainerRunner, getVoidLogger } from '@backstage/backend-common'; +import { + ContainerRunner, + loggerToWinstonLogger, +} from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { Generators } from './generators'; import { TechdocsGenerator } from './techdocs'; +import { mockServices } from '@backstage/backend-test-utils'; -const logger = getVoidLogger(); +const logger = loggerToWinstonLogger(mockServices.logger.mock()); const mockEntity = { apiVersion: 'version', diff --git a/plugins/techdocs-node/src/stages/generate/helpers.test.ts b/plugins/techdocs-node/src/stages/generate/helpers.test.ts index 1b47cfb05c..3589b71c60 100644 --- a/plugins/techdocs-node/src/stages/generate/helpers.test.ts +++ b/plugins/techdocs-node/src/stages/generate/helpers.test.ts @@ -14,10 +14,12 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { ScmIntegrations } from '@backstage/integration'; -import { createMockDirectory } from '@backstage/backend-test-utils'; +import { + createMockDirectory, + mockServices, +} from '@backstage/backend-test-utils'; import fs from 'fs-extra'; import path, { resolve as resolvePath } from 'path'; import { ParsedLocationAnnotation } from '../../helpers'; @@ -35,6 +37,7 @@ import { patchMkdocsYmlWithPlugins, } from './mkdocsPatchers'; import yaml from 'js-yaml'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; const mockEntity = { apiVersion: 'version', @@ -90,7 +93,7 @@ const mkdocsYmlWithAdditionalPluginsWithConfig = fs.readFileSync( const mkdocsYmlWithEnvTag = fs.readFileSync( resolvePath(__filename, '../__fixtures__/mkdocs_with_env_tag.yml'), ); -const mockLogger = getVoidLogger(); +const mockLogger = loggerToWinstonLogger(mockServices.logger.mock()); const warn = jest.spyOn(mockLogger, 'warn'); const scmIntegrations = ScmIntegrations.fromConfig(new ConfigReader({})); diff --git a/plugins/techdocs-node/src/stages/prepare/dir.test.ts b/plugins/techdocs-node/src/stages/prepare/dir.test.ts index 164cfde687..5fbd56264e 100644 --- a/plugins/techdocs-node/src/stages/prepare/dir.test.ts +++ b/plugins/techdocs-node/src/stages/prepare/dir.test.ts @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { getVoidLogger, UrlReader } from '@backstage/backend-common'; +import { UrlReader, loggerToWinstonLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { DirectoryPreparer } from './dir'; +import { mockServices } from '@backstage/backend-test-utils'; function normalizePath(path: string) { return path @@ -28,7 +29,7 @@ jest.mock('../../helpers', () => ({ ...jest.requireActual<{}>('../../helpers'), })); -const logger = getVoidLogger(); +const logger = loggerToWinstonLogger(mockServices.logger.mock()); const createMockEntity = (annotations: {}) => { return { diff --git a/plugins/techdocs-node/src/stages/publish/awsS3.test.ts b/plugins/techdocs-node/src/stages/publish/awsS3.test.ts index 9a9c9b4542..e43b303dd4 100644 --- a/plugins/techdocs-node/src/stages/publish/awsS3.test.ts +++ b/plugins/techdocs-node/src/stages/publish/awsS3.test.ts @@ -24,7 +24,6 @@ import { S3Client, UploadPartCommand, } from '@aws-sdk/client-s3'; -import { getVoidLogger } from '@backstage/backend-common'; import { Entity, DEFAULT_NAMESPACE } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { @@ -39,7 +38,11 @@ import path from 'path'; import fs from 'fs-extra'; import { AwsS3Publish } from './awsS3'; import { Readable } from 'stream'; -import { createMockDirectory } from '@backstage/backend-test-utils'; +import { + createMockDirectory, + mockServices, +} from '@backstage/backend-test-utils'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; const env = process.env; let s3Mock: AwsClientStub; @@ -87,7 +90,7 @@ class ErrorReadable extends Readable { } } -const logger = getVoidLogger(); +const logger = loggerToWinstonLogger(mockServices.logger.mock()); const loggerInfoSpy = jest.spyOn(logger, 'info'); const loggerErrorSpy = jest.spyOn(logger, 'error'); diff --git a/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts b/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts index 50e0863f3c..6cbfa76c81 100644 --- a/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts +++ b/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; import { Entity, DEFAULT_NAMESPACE } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import express from 'express'; @@ -27,7 +27,10 @@ import { BlobUploadCommonResponse, ContainerGetPropertiesResponse, } from '@azure/storage-blob'; -import { createMockDirectory } from '@backstage/backend-test-utils'; +import { + createMockDirectory, + mockServices, +} from '@backstage/backend-test-utils'; const mockDir = createMockDirectory(); @@ -221,7 +224,7 @@ const getEntityRootDir = (entity: Entity) => { return mockDir.resolve(namespace || DEFAULT_NAMESPACE, kind, name); }; -const logger = getVoidLogger(); +const logger = loggerToWinstonLogger(mockServices.logger.mock()); jest.spyOn(logger, 'error').mockReturnValue(logger); const createPublisherFromConfig = ({ diff --git a/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts b/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts index 17bfb3e3c4..0c94a69d6a 100644 --- a/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts +++ b/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; import { Entity, DEFAULT_NAMESPACE } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import express from 'express'; @@ -23,7 +23,10 @@ import path from 'path'; import fs from 'fs-extra'; import { Readable } from 'stream'; import { GoogleGCSPublish } from './googleStorage'; -import { createMockDirectory } from '@backstage/backend-test-utils'; +import { + createMockDirectory, + mockServices, +} from '@backstage/backend-test-utils'; const mockDir = createMockDirectory(); @@ -136,7 +139,7 @@ const getEntityRootDir = (entity: Entity) => { return mockDir.resolve(namespace || DEFAULT_NAMESPACE, kind, name); }; -const logger = getVoidLogger(); +const logger = loggerToWinstonLogger(mockServices.logger.mock()); jest.spyOn(logger, 'info').mockReturnValue(logger); jest.spyOn(logger, 'error').mockReturnValue(logger); diff --git a/plugins/techdocs-node/src/stages/publish/local.test.ts b/plugins/techdocs-node/src/stages/publish/local.test.ts index 89a38c7ed2..e5e71c51ec 100644 --- a/plugins/techdocs-node/src/stages/publish/local.test.ts +++ b/plugins/techdocs-node/src/stages/publish/local.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { - getVoidLogger, + loggerToWinstonLogger, PluginEndpointDiscovery, } from '@backstage/backend-common'; import { overridePackagePathResolution } from '@backstage/backend-plugin-api/testUtils'; @@ -24,7 +24,10 @@ import request from 'supertest'; import * as os from 'os'; import { LocalPublish } from './local'; import path from 'path'; -import { createMockDirectory } from '@backstage/backend-test-utils'; +import { + createMockDirectory, + mockServices, +} from '@backstage/backend-test-utils'; const createMockEntity = (annotations = {}, lowerCase = false) => { return { @@ -53,7 +56,7 @@ overridePackagePathResolution({ }, }); -const logger = getVoidLogger(); +const logger = loggerToWinstonLogger(mockServices.logger.mock()); describe('local publisher', () => { const mockDir = createMockDirectory(); diff --git a/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts b/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts index 93fe54ac27..aa0e5f0afa 100644 --- a/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts +++ b/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; +import { loggerToWinstonLogger } from '@backstage/backend-common'; import { Entity, CompoundEntityRef, @@ -28,7 +28,10 @@ import path from 'path'; import { OpenStackSwiftPublish } from './openStackSwift'; import { PublisherBase, TechDocsMetadata } from './types'; import { Stream, Readable } from 'stream'; -import { createMockDirectory } from '@backstage/backend-test-utils'; +import { + createMockDirectory, + mockServices, +} from '@backstage/backend-test-utils'; const mockDir = createMockDirectory(); @@ -169,7 +172,7 @@ const getPosixEntityRootDir = (entity: Entity) => { ); }; -const logger = getVoidLogger(); +const logger = loggerToWinstonLogger(mockServices.logger.mock()); let publisher: PublisherBase; diff --git a/plugins/techdocs-node/src/stages/publish/publish.test.ts b/plugins/techdocs-node/src/stages/publish/publish.test.ts index ab300412a4..4059eccfeb 100644 --- a/plugins/techdocs-node/src/stages/publish/publish.test.ts +++ b/plugins/techdocs-node/src/stages/publish/publish.test.ts @@ -14,8 +14,8 @@ * limitations under the License. */ import { - getVoidLogger, PluginEndpointDiscovery, + loggerToWinstonLogger, } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { Publisher } from './publish'; @@ -24,8 +24,9 @@ import { GoogleGCSPublish } from './googleStorage'; import { AwsS3Publish } from './awsS3'; import { AzureBlobStoragePublish } from './azureBlobStorage'; import { OpenStackSwiftPublish } from './openStackSwift'; +import { mockServices } from '@backstage/backend-test-utils'; -const logger = getVoidLogger(); +const logger = loggerToWinstonLogger(mockServices.logger.mock()); const discovery: jest.Mocked = { getBaseUrl: jest.fn().mockResolvedValueOnce('http://localhost:7007'), getExternalBaseUrl: jest.fn(), diff --git a/yarn.lock b/yarn.lock index f10de89d74..8ff4221b13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5770,6 +5770,7 @@ __metadata: dependencies: "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" languageName: unknown linkType: soft @@ -6892,6 +6893,7 @@ __metadata: dependencies: "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/integration-aws-node": "workspace:^" @@ -6995,6 +6997,7 @@ __metadata: "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" @@ -7125,6 +7128,7 @@ __metadata: "@backstage/backend-common": "workspace:^" "@backstage/backend-defaults": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/plugin-auth-backend": "workspace:^" @@ -9481,6 +9485,7 @@ __metadata: dependencies: "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^"