backend-test-utils: remove services from startTestBackend
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
This commit is contained in:
committed by
Patrik Oldsberg
parent
175e4c3516
commit
f66d490332
@@ -95,7 +95,7 @@ describe('featureDiscoveryServiceFactory', () => {
|
||||
const fn = jest.fn().mockResolvedValue({});
|
||||
|
||||
await startTestBackend({
|
||||
services: [
|
||||
features: [
|
||||
createServiceFactory({
|
||||
service: coreServices.identity,
|
||||
deps: {},
|
||||
|
||||
+1
-2
@@ -61,8 +61,7 @@ describe('schedulerFactory', () => {
|
||||
});
|
||||
|
||||
await startTestBackend({
|
||||
features: [plugin()],
|
||||
services: [subject],
|
||||
features: [plugin(), subject],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -31,7 +31,7 @@ const sf1 = createServiceFactory({
|
||||
async factory() {
|
||||
return { x: 1 };
|
||||
},
|
||||
})();
|
||||
});
|
||||
|
||||
const ref2 = createServiceRef<{ x: number }>({
|
||||
scope: 'root',
|
||||
@@ -43,14 +43,14 @@ const sf2 = createServiceFactory({
|
||||
async factory() {
|
||||
return { x: 2 };
|
||||
},
|
||||
})();
|
||||
});
|
||||
const sf2b = createServiceFactory({
|
||||
service: ref2,
|
||||
deps: {},
|
||||
async factory() {
|
||||
return { x: 22 };
|
||||
},
|
||||
})();
|
||||
});
|
||||
|
||||
const refDefault1 = createServiceRef<{ x: number }>({
|
||||
id: '1',
|
||||
@@ -61,7 +61,7 @@ const refDefault1 = createServiceRef<{ x: number }>({
|
||||
async factory() {
|
||||
return { x: 10 };
|
||||
},
|
||||
})(),
|
||||
}),
|
||||
});
|
||||
|
||||
const refDefault2a = createServiceRef<{ x: number }>({
|
||||
@@ -95,7 +95,7 @@ describe('ServiceRegistry', () => {
|
||||
});
|
||||
|
||||
it('should return an implementation for a registered ref', async () => {
|
||||
const registry = new ServiceRegistry([sf1]);
|
||||
const registry = new ServiceRegistry([sf1()]);
|
||||
await expect(registry.get(ref1, 'catalog')).resolves.toEqual({ x: 1 });
|
||||
await expect(registry.get(ref1, 'scaffolder')).resolves.toEqual({ x: 1 });
|
||||
expect(await registry.get(ref1, 'catalog')).toBe(
|
||||
@@ -110,7 +110,7 @@ describe('ServiceRegistry', () => {
|
||||
});
|
||||
|
||||
it('should handle multiple factories with different serviceRefs', async () => {
|
||||
const registry = new ServiceRegistry([sf1, sf2]);
|
||||
const registry = new ServiceRegistry([sf1(), sf2()]);
|
||||
|
||||
await expect(registry.get(ref1, 'catalog')).resolves.toEqual({
|
||||
x: 1,
|
||||
@@ -131,7 +131,7 @@ describe('ServiceRegistry', () => {
|
||||
return { x: 2 };
|
||||
},
|
||||
});
|
||||
const registry = new ServiceRegistry([factory(), sf1]);
|
||||
const registry = new ServiceRegistry([factory(), sf1()]);
|
||||
await expect(registry.get(ref2, 'catalog')).rejects.toThrow(
|
||||
"Failed to instantiate 'root' scoped service '2' because it depends on 'plugin' scoped service '1'.",
|
||||
);
|
||||
@@ -145,7 +145,7 @@ describe('ServiceRegistry', () => {
|
||||
return { x: rootDep.x };
|
||||
},
|
||||
});
|
||||
const registry = new ServiceRegistry([factory(), sf2]);
|
||||
const registry = new ServiceRegistry([factory(), sf2()]);
|
||||
await expect(registry.get(ref1, 'catalog')).resolves.toEqual({
|
||||
x: 2,
|
||||
});
|
||||
@@ -160,7 +160,7 @@ describe('ServiceRegistry', () => {
|
||||
return { x: rootDep.x };
|
||||
},
|
||||
});
|
||||
const registry = new ServiceRegistry([factory(), sf2]);
|
||||
const registry = new ServiceRegistry([factory(), sf2()]);
|
||||
await expect(registry.get(ref, 'catalog')).resolves.toEqual({
|
||||
x: 2,
|
||||
});
|
||||
@@ -182,7 +182,7 @@ describe('ServiceRegistry', () => {
|
||||
});
|
||||
|
||||
it('should use the last factory for each ref', async () => {
|
||||
const registry = new ServiceRegistry([sf2, sf2b]);
|
||||
const registry = new ServiceRegistry([sf2(), sf2b()]);
|
||||
await expect(registry.get(ref2, 'catalog')).resolves.toEqual({
|
||||
x: 22,
|
||||
});
|
||||
@@ -196,7 +196,7 @@ describe('ServiceRegistry', () => {
|
||||
});
|
||||
|
||||
it('should not use the defaultFactory from the ref if provided to the registry', async () => {
|
||||
const registry = new ServiceRegistry([sf1]);
|
||||
const registry = new ServiceRegistry([sf1()]);
|
||||
await expect(registry.get(refDefault1, 'catalog')).resolves.toEqual({
|
||||
x: 1,
|
||||
});
|
||||
|
||||
@@ -21,7 +21,6 @@ import { RootConfigService } from '@backstage/backend-plugin-api';
|
||||
import { RootLifecycleService } from '@backstage/backend-plugin-api';
|
||||
import { SchedulerService } from '@backstage/backend-plugin-api';
|
||||
import { ServiceFactory } from '@backstage/backend-plugin-api';
|
||||
import { ServiceRef } from '@backstage/backend-plugin-api';
|
||||
import { TokenManagerService } from '@backstage/backend-plugin-api';
|
||||
import { UrlReaderService } from '@backstage/backend-plugin-api';
|
||||
|
||||
@@ -127,11 +126,8 @@ export function setupRequestMockHandlers(worker: {
|
||||
}): void;
|
||||
|
||||
// @public (undocumented)
|
||||
export function startTestBackend<
|
||||
TServices extends any[],
|
||||
TExtensionPoints extends any[],
|
||||
>(
|
||||
options: TestBackendOptions<TServices, TExtensionPoints>,
|
||||
export function startTestBackend<TExtensionPoints extends any[]>(
|
||||
options: TestBackendOptions<TExtensionPoints>,
|
||||
): Promise<TestBackend>;
|
||||
|
||||
// @public (undocumented)
|
||||
@@ -140,10 +136,7 @@ export interface TestBackend extends Backend {
|
||||
}
|
||||
|
||||
// @public (undocumented)
|
||||
export interface TestBackendOptions<
|
||||
TServices extends any[],
|
||||
TExtensionPoints extends any[],
|
||||
> {
|
||||
export interface TestBackendOptions<TExtensionPoints extends any[]> {
|
||||
// (undocumented)
|
||||
extensionPoints?: readonly [
|
||||
...{
|
||||
@@ -154,16 +147,7 @@ export interface TestBackendOptions<
|
||||
},
|
||||
];
|
||||
// (undocumented)
|
||||
features?: BackendFeature[];
|
||||
// (undocumented)
|
||||
services?: readonly [
|
||||
...{
|
||||
[index in keyof TServices]:
|
||||
| ServiceFactory<TServices[index]>
|
||||
| (() => ServiceFactory<TServices[index]>)
|
||||
| [ServiceRef<TServices[index]>, Partial<TServices[index]>];
|
||||
},
|
||||
];
|
||||
features?: Array<BackendFeature | (() => BackendFeature)>;
|
||||
}
|
||||
|
||||
// @public
|
||||
|
||||
@@ -31,7 +31,6 @@ import { startTestBackend } from './TestBackend';
|
||||
let globalTestBackendHasBeenStopped = false;
|
||||
beforeAll(async () => {
|
||||
await startTestBackend({
|
||||
services: [],
|
||||
features: [
|
||||
createBackendModule({
|
||||
moduleId: 'test.module',
|
||||
@@ -46,7 +45,7 @@ beforeAll(async () => {
|
||||
},
|
||||
});
|
||||
},
|
||||
})(),
|
||||
}),
|
||||
],
|
||||
});
|
||||
});
|
||||
@@ -68,17 +67,37 @@ describe('TestBackend', () => {
|
||||
const extensionPoint5 = createExtensionPoint<Obj>({ id: 'b5' });
|
||||
await expect(
|
||||
startTestBackend({
|
||||
services: [
|
||||
features: [
|
||||
// @ts-expect-error
|
||||
[extensionPoint1, { a: 'a' }],
|
||||
[serviceRef, { a: 'a' }],
|
||||
[serviceRef, { a: 'a', b: 'b' }],
|
||||
// @ts-expect-error
|
||||
[serviceRef, { c: 'c' }],
|
||||
// @ts-expect-error
|
||||
[serviceRef, { a: 'a', c: 'c' }],
|
||||
// @ts-expect-error
|
||||
[serviceRef, { a: 'a', b: 'b', c: 'c' }],
|
||||
createServiceFactory(() => ({
|
||||
service: serviceRef,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
factory: async () => ({ a: 'a' }),
|
||||
})),
|
||||
createServiceFactory(() => ({
|
||||
service: serviceRef,
|
||||
deps: {},
|
||||
factory: async () => ({ a: 'a', b: 'b' }),
|
||||
})),
|
||||
createServiceFactory(() => ({
|
||||
service: serviceRef,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
factory: async () => ({ c: 'c' }),
|
||||
})),
|
||||
createServiceFactory(() => ({
|
||||
service: serviceRef,
|
||||
deps: {},
|
||||
// @ts-expect-error
|
||||
factory: async () => ({ a: 'a', c: 'c' }),
|
||||
})),
|
||||
createServiceFactory(() => ({
|
||||
service: serviceRef,
|
||||
deps: {},
|
||||
factory: async () => ({ a: 'a', b: 'b', c: 'c' }),
|
||||
})),
|
||||
],
|
||||
extensionPoints: [
|
||||
// @ts-expect-error
|
||||
@@ -124,8 +143,7 @@ describe('TestBackend', () => {
|
||||
});
|
||||
|
||||
await startTestBackend({
|
||||
services: [sf],
|
||||
features: [testModule()],
|
||||
features: [testModule(), sf()],
|
||||
});
|
||||
|
||||
expect(testFn).toHaveBeenCalledWith('winning');
|
||||
@@ -150,7 +168,6 @@ describe('TestBackend', () => {
|
||||
});
|
||||
|
||||
const backend = await startTestBackend({
|
||||
services: [],
|
||||
features: [testModule()],
|
||||
});
|
||||
|
||||
@@ -192,7 +209,6 @@ describe('TestBackend', () => {
|
||||
});
|
||||
|
||||
await startTestBackend({
|
||||
services: [],
|
||||
features: [testPlugin()],
|
||||
});
|
||||
});
|
||||
@@ -244,7 +260,7 @@ describe('TestBackend', () => {
|
||||
},
|
||||
});
|
||||
},
|
||||
})(),
|
||||
}),
|
||||
createBackendModule({
|
||||
pluginId: 'testB',
|
||||
moduleId: 'test',
|
||||
@@ -256,7 +272,7 @@ describe('TestBackend', () => {
|
||||
},
|
||||
});
|
||||
},
|
||||
})(),
|
||||
}),
|
||||
],
|
||||
}),
|
||||
).resolves.not.toBeUndefined();
|
||||
@@ -277,7 +293,7 @@ describe('TestBackend', () => {
|
||||
async init() {},
|
||||
});
|
||||
},
|
||||
})(),
|
||||
}),
|
||||
createBackendModule({
|
||||
pluginId: 'testB',
|
||||
moduleId: 'test',
|
||||
@@ -287,7 +303,7 @@ describe('TestBackend', () => {
|
||||
async init() {},
|
||||
});
|
||||
},
|
||||
})(),
|
||||
}),
|
||||
],
|
||||
}),
|
||||
).rejects.toThrow(
|
||||
|
||||
@@ -24,8 +24,6 @@ import {
|
||||
} from '@backstage/backend-app-api';
|
||||
import { HostDiscovery } from '@backstage/backend-common';
|
||||
import {
|
||||
ServiceFactory,
|
||||
ServiceRef,
|
||||
createServiceFactory,
|
||||
BackendFeature,
|
||||
ExtensionPoint,
|
||||
@@ -40,18 +38,7 @@ import express from 'express';
|
||||
import { InternalBackendFeature } from '@backstage/backend-plugin-api/src/wiring/types';
|
||||
|
||||
/** @public */
|
||||
export interface TestBackendOptions<
|
||||
TServices extends any[],
|
||||
TExtensionPoints extends any[],
|
||||
> {
|
||||
services?: readonly [
|
||||
...{
|
||||
[index in keyof TServices]:
|
||||
| ServiceFactory<TServices[index]>
|
||||
| (() => ServiceFactory<TServices[index]>)
|
||||
| [ServiceRef<TServices[index]>, Partial<TServices[index]>];
|
||||
},
|
||||
];
|
||||
export interface TestBackendOptions<TExtensionPoints extends any[]> {
|
||||
extensionPoints?: readonly [
|
||||
...{
|
||||
[index in keyof TExtensionPoints]: [
|
||||
@@ -60,7 +47,7 @@ export interface TestBackendOptions<
|
||||
];
|
||||
},
|
||||
];
|
||||
features?: BackendFeature[];
|
||||
features?: Array<BackendFeature | (() => BackendFeature)>;
|
||||
}
|
||||
|
||||
/** @public */
|
||||
@@ -95,17 +82,22 @@ const defaultServiceFactories = [
|
||||
* @returns
|
||||
*/
|
||||
function createExtensionPointTestModules(
|
||||
features: BackendFeature[],
|
||||
features: Array<BackendFeature | (() => BackendFeature)>,
|
||||
extensionPointTuples?: readonly [
|
||||
ref: ExtensionPoint<unknown>,
|
||||
impl: unknown,
|
||||
][],
|
||||
): BackendFeature[] {
|
||||
): Array<() => BackendFeature> {
|
||||
if (!extensionPointTuples) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const registrations = features.flatMap(feature => {
|
||||
const registrations = features.flatMap(featureOrFunction => {
|
||||
const feature =
|
||||
typeof featureOrFunction === 'function'
|
||||
? featureOrFunction()
|
||||
: featureOrFunction;
|
||||
|
||||
if (feature.$$type !== '@backstage/BackendFeature') {
|
||||
throw new Error(
|
||||
`Failed to add feature, invalid type '${feature.$$type}'`,
|
||||
@@ -170,7 +162,7 @@ function createExtensionPointTestModules(
|
||||
|
||||
reg.registerInit({ deps: {}, async init() {} });
|
||||
},
|
||||
})(),
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -180,18 +172,10 @@ function createExtensionPointTestModules(
|
||||
const backendInstancesToCleanUp = new Array<Backend>();
|
||||
|
||||
/** @public */
|
||||
export async function startTestBackend<
|
||||
TServices extends any[],
|
||||
TExtensionPoints extends any[],
|
||||
>(
|
||||
options: TestBackendOptions<TServices, TExtensionPoints>,
|
||||
export async function startTestBackend<TExtensionPoints extends any[]>(
|
||||
options: TestBackendOptions<TExtensionPoints>,
|
||||
): Promise<TestBackend> {
|
||||
const {
|
||||
services = [],
|
||||
extensionPoints,
|
||||
features = [],
|
||||
...otherOptions
|
||||
} = options;
|
||||
const { extensionPoints, features = [], ...otherOptions } = options;
|
||||
|
||||
let server: ExtendedHttpServer;
|
||||
|
||||
@@ -247,40 +231,10 @@ export async function startTestBackend<
|
||||
},
|
||||
});
|
||||
|
||||
const factories = services.map(serviceDef => {
|
||||
if (Array.isArray(serviceDef)) {
|
||||
// if type is ExtensionPoint?
|
||||
// do something differently?
|
||||
const [ref, impl] = serviceDef;
|
||||
if (ref.scope === 'plugin') {
|
||||
return createServiceFactory({
|
||||
service: ref as ServiceRef<unknown, 'plugin'>,
|
||||
deps: {},
|
||||
factory: async () => impl,
|
||||
})();
|
||||
}
|
||||
return createServiceFactory({
|
||||
service: ref as ServiceRef<unknown, 'root'>,
|
||||
deps: {},
|
||||
factory: async () => impl,
|
||||
})();
|
||||
}
|
||||
if (typeof serviceDef === 'function') {
|
||||
return serviceDef();
|
||||
}
|
||||
return serviceDef as ServiceFactory;
|
||||
});
|
||||
|
||||
for (const factory of defaultServiceFactories) {
|
||||
if (!factories.some(f => f.service.id === factory.service.id)) {
|
||||
factories.push(factory);
|
||||
}
|
||||
}
|
||||
|
||||
const backend = createSpecializedBackend({
|
||||
...otherOptions,
|
||||
defaultServiceFactories: [
|
||||
...factories,
|
||||
...defaultServiceFactories,
|
||||
rootHttpRouterFactory,
|
||||
discoveryFactory,
|
||||
],
|
||||
|
||||
@@ -39,8 +39,8 @@ describe('appPlugin', () => {
|
||||
|
||||
it('boots', async () => {
|
||||
const { server } = await startTestBackend({
|
||||
features: [appPlugin()],
|
||||
services: [
|
||||
features: [
|
||||
appPlugin(),
|
||||
mockServices.rootConfig.factory({
|
||||
data: {
|
||||
app: {
|
||||
|
||||
+20
-10
@@ -15,13 +15,15 @@
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
import { catalogModuleAwsS3EntityProvider } from './catalogModuleAwsS3EntityProvider';
|
||||
@@ -45,7 +47,7 @@ describe('catalogModuleAwsS3EntityProvider', () => {
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
|
||||
const config = new ConfigReader({
|
||||
const config = {
|
||||
catalog: {
|
||||
providers: {
|
||||
awsS3: {
|
||||
@@ -57,16 +59,24 @@ describe('catalogModuleAwsS3EntityProvider', () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
|
||||
services: [
|
||||
[coreServices.rootConfig, config],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
[coreServices.scheduler, scheduler],
|
||||
features: [
|
||||
catalogModuleAwsS3EntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
createServiceFactory(() => ({
|
||||
service: coreServices.logger,
|
||||
deps: {},
|
||||
factory: getVoidLogger,
|
||||
}))(),
|
||||
createServiceFactory(() => ({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: () => scheduler,
|
||||
}))(),
|
||||
],
|
||||
features: [catalogModuleAwsS3EntityProvider()],
|
||||
});
|
||||
|
||||
expect(usedSchedule?.frequency).toEqual(Duration.fromISO('P1M'));
|
||||
|
||||
+16
-11
@@ -14,14 +14,15 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
import { catalogModuleAzureDevOpsEntityProvider } from './catalogModuleAzureDevOpsEntityProvider';
|
||||
@@ -45,7 +46,7 @@ describe('catalogModuleAzureDevOpsEntityProvider', () => {
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
|
||||
const config = new ConfigReader({
|
||||
const config = {
|
||||
catalog: {
|
||||
providers: {
|
||||
azureDevOps: {
|
||||
@@ -60,16 +61,20 @@ describe('catalogModuleAzureDevOpsEntityProvider', () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
|
||||
services: [
|
||||
[coreServices.rootConfig, config],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
[coreServices.scheduler, scheduler],
|
||||
features: [
|
||||
catalogModuleAzureDevOpsEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
mockServices.logger.factory(),
|
||||
createServiceFactory(() => ({
|
||||
deps: {},
|
||||
service: coreServices.scheduler,
|
||||
factory: async () => scheduler,
|
||||
})),
|
||||
],
|
||||
features: [catalogModuleAzureDevOpsEntityProvider()],
|
||||
});
|
||||
|
||||
expect(usedSchedule?.frequency).toEqual(Duration.fromISO('P1M'));
|
||||
|
||||
+11
-4
@@ -14,7 +14,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
@@ -55,7 +58,8 @@ describe('catalogModuleBitbucketCloudEntityProvider', () => {
|
||||
[catalogProcessingExtensionPoint, catalogExtensionPointImpl],
|
||||
[eventsExtensionPoint, eventsExtensionPointImpl],
|
||||
],
|
||||
services: [
|
||||
features: [
|
||||
catalogModuleBitbucketCloudEntityProvider(),
|
||||
mockServices.rootConfig.factory({
|
||||
data: {
|
||||
catalog: {
|
||||
@@ -71,9 +75,12 @@ describe('catalogModuleBitbucketCloudEntityProvider', () => {
|
||||
},
|
||||
},
|
||||
}),
|
||||
[coreServices.scheduler, scheduler],
|
||||
createServiceFactory({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: async () => scheduler,
|
||||
}),
|
||||
],
|
||||
features: [catalogModuleBitbucketCloudEntityProvider()],
|
||||
});
|
||||
|
||||
expect(usedSchedule?.frequency).toEqual(Duration.fromISO('P1M'));
|
||||
|
||||
+16
-11
@@ -14,14 +14,15 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { catalogModuleBitbucketServerEntityProvider } from './catalogModuleBitbucketServerEntityProvider';
|
||||
import { Duration } from 'luxon';
|
||||
@@ -45,7 +46,7 @@ describe('catalogModuleBitbucketServerEntityProvider', () => {
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
|
||||
const config = new ConfigReader({
|
||||
const config = {
|
||||
catalog: {
|
||||
providers: {
|
||||
bitbucketServer: {
|
||||
@@ -64,16 +65,20 @@ describe('catalogModuleBitbucketServerEntityProvider', () => {
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
|
||||
services: [
|
||||
[coreServices.rootConfig, config],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
[coreServices.scheduler, scheduler],
|
||||
features: [
|
||||
catalogModuleBitbucketServerEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
mockServices.logger.factory(),
|
||||
createServiceFactory({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: async () => scheduler,
|
||||
}),
|
||||
],
|
||||
features: [catalogModuleBitbucketServerEntityProvider()],
|
||||
});
|
||||
|
||||
expect(usedSchedule?.frequency).toEqual(Duration.fromISO('P1M'));
|
||||
|
||||
+16
-11
@@ -14,14 +14,15 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
import { catalogModuleGerritEntityProvider } from './catalogModuleGerritEntityProvider';
|
||||
@@ -45,7 +46,7 @@ describe('catalogModuleGerritEntityProvider', () => {
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
|
||||
const config = new ConfigReader({
|
||||
const config = {
|
||||
catalog: {
|
||||
providers: {
|
||||
gerrit: {
|
||||
@@ -70,16 +71,20 @@ describe('catalogModuleGerritEntityProvider', () => {
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
|
||||
services: [
|
||||
[coreServices.rootConfig, config],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
[coreServices.scheduler, scheduler],
|
||||
features: [
|
||||
catalogModuleGerritEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
mockServices.logger.factory(),
|
||||
createServiceFactory({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: async () => scheduler,
|
||||
}),
|
||||
],
|
||||
features: [catalogModuleGerritEntityProvider()],
|
||||
});
|
||||
|
||||
expect(usedSchedule?.frequency).toEqual(Duration.fromISO('P1M'));
|
||||
|
||||
+15
-11
@@ -14,18 +14,19 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
import { catalogModuleGithubEntityProvider } from './catalogModuleGithubEntityProvider';
|
||||
import { GithubEntityProvider } from '../providers/GithubEntityProvider';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
|
||||
describe('catalogModuleGithubEntityProvider', () => {
|
||||
it('should register provider at the catalog extension point', async () => {
|
||||
@@ -45,7 +46,7 @@ describe('catalogModuleGithubEntityProvider', () => {
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
|
||||
const config = new ConfigReader({
|
||||
const config = {
|
||||
catalog: {
|
||||
providers: {
|
||||
github: {
|
||||
@@ -57,16 +58,19 @@ describe('catalogModuleGithubEntityProvider', () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
|
||||
services: [
|
||||
[coreServices.rootConfig, config],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
[coreServices.scheduler, scheduler],
|
||||
features: [
|
||||
catalogModuleGithubEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
createServiceFactory({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: async () => scheduler,
|
||||
}),
|
||||
],
|
||||
features: [catalogModuleGithubEntityProvider()],
|
||||
});
|
||||
|
||||
expect(usedSchedule?.frequency).toEqual(Duration.fromISO('P1M'));
|
||||
|
||||
+16
-11
@@ -14,14 +14,15 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
import { catalogModuleGitlabDiscoveryEntityProvider } from './catalogModuleGitlabDiscoveryEntityProvider';
|
||||
@@ -45,7 +46,7 @@ describe('catalogModuleGitlabDiscoveryEntityProvider', () => {
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
|
||||
const config = new ConfigReader({
|
||||
const config = {
|
||||
integrations: {
|
||||
gitlab: [
|
||||
{
|
||||
@@ -69,16 +70,20 @@ describe('catalogModuleGitlabDiscoveryEntityProvider', () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
|
||||
services: [
|
||||
[coreServices.rootConfig, config],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
[coreServices.scheduler, scheduler],
|
||||
features: [
|
||||
catalogModuleGitlabDiscoveryEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
mockServices.logger.factory(),
|
||||
createServiceFactory({
|
||||
deps: {},
|
||||
service: coreServices.scheduler,
|
||||
factory: async () => scheduler,
|
||||
}),
|
||||
],
|
||||
features: [catalogModuleGitlabDiscoveryEntityProvider()],
|
||||
});
|
||||
|
||||
expect(usedSchedule?.frequency).toEqual(Duration.fromISO('P1M'));
|
||||
|
||||
+8
-23
@@ -14,13 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import {
|
||||
coreServices,
|
||||
createBackendModule,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { createBackendModule } from '@backstage/backend-plugin-api';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { IncrementalEntityProvider } from '../types';
|
||||
import {
|
||||
@@ -43,26 +38,16 @@ describe('catalogModuleIncrementalIngestionEntityProvider', () => {
|
||||
const addEntityProvider = jest.fn();
|
||||
const httpRouterUse = jest.fn();
|
||||
|
||||
const scheduler = {};
|
||||
const database = {
|
||||
getClient: jest.fn(),
|
||||
};
|
||||
const httpRouter = {
|
||||
use: httpRouterUse,
|
||||
};
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [
|
||||
[catalogProcessingExtensionPoint, { addEntityProvider }],
|
||||
],
|
||||
services: [
|
||||
[coreServices.rootConfig, new ConfigReader({})],
|
||||
[coreServices.database, database],
|
||||
[coreServices.httpRouter, httpRouter],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
[coreServices.scheduler, scheduler],
|
||||
],
|
||||
features: [
|
||||
mockServices.rootConfig.factory(),
|
||||
mockServices.database.factory(),
|
||||
mockServices.httpRouter.factory(),
|
||||
mockServices.logger.factory(),
|
||||
mockServices.scheduler.factory(),
|
||||
catalogModuleIncrementalIngestionEntityProvider(),
|
||||
createBackendModule({
|
||||
pluginId: 'catalog',
|
||||
@@ -82,7 +67,7 @@ describe('catalogModuleIncrementalIngestionEntityProvider', () => {
|
||||
},
|
||||
});
|
||||
},
|
||||
})(),
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ async function main() {
|
||||
},
|
||||
});
|
||||
},
|
||||
})(),
|
||||
}),
|
||||
);
|
||||
|
||||
await backend.start();
|
||||
|
||||
+15
-11
@@ -14,14 +14,15 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
import { catalogModuleMicrosoftGraphOrgEntityProvider } from './catalogModuleMicrosoftGraphOrgEntityProvider';
|
||||
@@ -45,7 +46,7 @@ describe('catalogModuleMicrosoftGraphOrgEntityProvider', () => {
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
|
||||
const config = new ConfigReader({
|
||||
const config = {
|
||||
catalog: {
|
||||
providers: {
|
||||
microsoftGraphOrg: {
|
||||
@@ -62,16 +63,19 @@ describe('catalogModuleMicrosoftGraphOrgEntityProvider', () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
|
||||
services: [
|
||||
[coreServices.rootConfig, config],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
[coreServices.scheduler, scheduler],
|
||||
features: [
|
||||
catalogModuleMicrosoftGraphOrgEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
createServiceFactory(() => ({
|
||||
deps: {},
|
||||
service: coreServices.scheduler,
|
||||
factory: async () => scheduler,
|
||||
})),
|
||||
],
|
||||
features: [catalogModuleMicrosoftGraphOrgEntityProvider()],
|
||||
});
|
||||
|
||||
expect(usedSchedule?.frequency).toEqual(Duration.fromISO('PT30M'));
|
||||
|
||||
+15
-11
@@ -14,14 +14,15 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { catalogModulePuppetDbEntityProvider } from './catalogModulePuppetDbEntityProvider';
|
||||
import { PuppetDbEntityProvider } from '../providers/PuppetDbEntityProvider';
|
||||
@@ -44,7 +45,7 @@ describe('catalogModulePuppetDbEntityProvider', () => {
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
|
||||
const config = new ConfigReader({
|
||||
const config = {
|
||||
catalog: {
|
||||
providers: {
|
||||
puppetdb: {
|
||||
@@ -56,16 +57,19 @@ describe('catalogModulePuppetDbEntityProvider', () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
|
||||
services: [
|
||||
[coreServices.rootConfig, config],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
[coreServices.scheduler, scheduler],
|
||||
features: [
|
||||
catalogModulePuppetDbEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
createServiceFactory(() => ({
|
||||
deps: {},
|
||||
service: coreServices.scheduler,
|
||||
factory: async () => scheduler,
|
||||
})),
|
||||
],
|
||||
features: [catalogModulePuppetDbEntityProvider()],
|
||||
});
|
||||
|
||||
expect(usedSchedule?.frequency).toEqual({ minutes: 10 });
|
||||
|
||||
@@ -180,7 +180,6 @@ describePerformanceTest('stitchingPerformance', () => {
|
||||
const tracker = new Tracker(knex, load);
|
||||
|
||||
const backend = await startTestBackend({
|
||||
services: [staticDatabase(knex)],
|
||||
features: [
|
||||
catalogPlugin(),
|
||||
createBackendModule({
|
||||
@@ -201,7 +200,8 @@ describePerformanceTest('stitchingPerformance', () => {
|
||||
},
|
||||
});
|
||||
},
|
||||
})(),
|
||||
}),
|
||||
staticDatabase(knex),
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
+40
-35
@@ -14,10 +14,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
SchedulerService,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { eventsExtensionPoint } from '@backstage/plugin-events-node/alpha';
|
||||
import { TestEventBroker } from '@backstage/plugin-events-backend-test-utils';
|
||||
import { eventsModuleAwsSqsConsumingEventPublisher } from './eventsModuleAwsSqsConsumingEventPublisher';
|
||||
@@ -25,31 +27,6 @@ import { AwsSqsConsumingEventPublisher } from '../publisher/AwsSqsConsumingEvent
|
||||
|
||||
describe('eventsModuleAwsSqsConsumingEventPublisher', () => {
|
||||
it('should be correctly wired and set up', async () => {
|
||||
const config = new ConfigReader({
|
||||
events: {
|
||||
modules: {
|
||||
awsSqs: {
|
||||
awsSqsConsumingEventPublisher: {
|
||||
topics: {
|
||||
fake1: {
|
||||
queue: {
|
||||
region: 'eu-west-1',
|
||||
url: 'https://fake1.queue.url',
|
||||
},
|
||||
},
|
||||
fake2: {
|
||||
queue: {
|
||||
region: 'us-east-1',
|
||||
url: 'https://fake2.queue.url',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
let addedPublishers: AwsSqsConsumingEventPublisher[] | undefined;
|
||||
const extensionPoint = {
|
||||
addPublishers: (publishers: any) => {
|
||||
@@ -59,16 +36,44 @@ describe('eventsModuleAwsSqsConsumingEventPublisher', () => {
|
||||
|
||||
const scheduler = {
|
||||
scheduleTask: jest.fn(),
|
||||
};
|
||||
} as unknown as SchedulerService;
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
|
||||
services: [
|
||||
[coreServices.rootConfig, config],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
[coreServices.scheduler, scheduler],
|
||||
features: [
|
||||
eventsModuleAwsSqsConsumingEventPublisher(),
|
||||
mockServices.rootConfig.factory({
|
||||
data: {
|
||||
events: {
|
||||
modules: {
|
||||
awsSqs: {
|
||||
awsSqsConsumingEventPublisher: {
|
||||
topics: {
|
||||
fake1: {
|
||||
queue: {
|
||||
region: 'eu-west-1',
|
||||
url: 'https://fake1.queue.url',
|
||||
},
|
||||
},
|
||||
fake2: {
|
||||
queue: {
|
||||
region: 'us-east-1',
|
||||
url: 'https://fake2.queue.url',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
createServiceFactory({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: () => scheduler,
|
||||
}),
|
||||
],
|
||||
features: [eventsModuleAwsSqsConsumingEventPublisher()],
|
||||
});
|
||||
|
||||
expect(addedPublishers).not.toBeUndefined();
|
||||
|
||||
-1
@@ -34,7 +34,6 @@ describe('eventsModuleAzureDevOpsEventRouter', () => {
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
|
||||
services: [],
|
||||
features: [eventsModuleAzureDevOpsEventRouter()],
|
||||
});
|
||||
|
||||
|
||||
-1
@@ -34,7 +34,6 @@ describe('eventsModuleBitbucketCloudEventRouter', () => {
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
|
||||
services: [],
|
||||
features: [eventsModuleBitbucketCloudEventRouter()],
|
||||
});
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ describe('eventsModuleGerritEventRouter', () => {
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
|
||||
services: [],
|
||||
features: [eventsModuleGerritEventRouter()],
|
||||
});
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ describe('eventsModuleGithubEventRouter', () => {
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
|
||||
services: [],
|
||||
features: [eventsModuleGithubEventRouter()],
|
||||
});
|
||||
|
||||
|
||||
+15
-15
@@ -14,9 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { eventsExtensionPoint } from '@backstage/plugin-events-node/alpha';
|
||||
import {
|
||||
HttpPostIngressOptions,
|
||||
@@ -47,20 +45,22 @@ describe('eventsModuleGithubWebhook', () => {
|
||||
},
|
||||
};
|
||||
|
||||
const config = new ConfigReader({
|
||||
events: {
|
||||
modules: {
|
||||
github: {
|
||||
webhookSecret: secret,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
|
||||
services: [[coreServices.rootConfig, config]],
|
||||
features: [eventsModuleGithubWebhook()],
|
||||
features: [
|
||||
eventsModuleGithubWebhook(),
|
||||
mockServices.rootConfig.factory({
|
||||
data: {
|
||||
events: {
|
||||
modules: {
|
||||
github: {
|
||||
webhookSecret: secret,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
expect(addedIngress).not.toBeUndefined();
|
||||
|
||||
@@ -34,7 +34,6 @@ describe('eventsModuleGitlabEventRouter', () => {
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
|
||||
services: [],
|
||||
features: [eventsModuleGitlabEventRouter()],
|
||||
});
|
||||
|
||||
|
||||
+15
-15
@@ -14,9 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { coreServices } from '@backstage/backend-plugin-api';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { eventsExtensionPoint } from '@backstage/plugin-events-node/alpha';
|
||||
import {
|
||||
HttpPostIngressOptions,
|
||||
@@ -42,20 +40,22 @@ describe('gitlabWebhookEventsModule', () => {
|
||||
},
|
||||
};
|
||||
|
||||
const config = new ConfigReader({
|
||||
events: {
|
||||
modules: {
|
||||
gitlab: {
|
||||
webhookSecret: 'test-secret',
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
|
||||
services: [[coreServices.rootConfig, config]],
|
||||
features: [eventsModuleGitlabWebhook()],
|
||||
features: [
|
||||
eventsModuleGitlabWebhook(),
|
||||
mockServices.rootConfig.factory({
|
||||
data: {
|
||||
events: {
|
||||
modules: {
|
||||
gitlab: {
|
||||
webhookSecret: 'test-secret',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
expect(addedIngress).not.toBeUndefined();
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { errorHandler, getVoidLogger } from '@backstage/backend-common';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { errorHandler } from '@backstage/backend-common';
|
||||
import {
|
||||
coreServices,
|
||||
createBackendModule,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { eventsExtensionPoint } from '@backstage/plugin-events-node/alpha';
|
||||
import {
|
||||
TestEventBroker,
|
||||
@@ -38,14 +38,6 @@ describe('eventPlugin', () => {
|
||||
const publisher = new TestEventPublisher();
|
||||
const subscriber = new TestEventSubscriber('sub', ['fake']);
|
||||
|
||||
const config = new ConfigReader({
|
||||
events: {
|
||||
http: {
|
||||
topics: ['fake'],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const httpRouter = Router();
|
||||
httpRouter.use(express.json());
|
||||
httpRouter.use(errorHandler());
|
||||
@@ -70,12 +62,25 @@ describe('eventPlugin', () => {
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [],
|
||||
services: [
|
||||
[coreServices.rootConfig, config],
|
||||
[coreServices.httpRouter, httpRouter],
|
||||
[coreServices.logger, getVoidLogger()],
|
||||
features: [
|
||||
eventsPlugin(),
|
||||
testModule(),
|
||||
mockServices.logger.factory(),
|
||||
mockServices.rootConfig.factory({
|
||||
data: {
|
||||
events: {
|
||||
http: {
|
||||
topics: ['fake'],
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
createServiceFactory({
|
||||
service: coreServices.httpRouter,
|
||||
deps: {},
|
||||
factory: async () => httpRouter,
|
||||
}),
|
||||
],
|
||||
features: [eventsPlugin(), testModule()],
|
||||
});
|
||||
|
||||
expect(publisher.eventBroker).toBe(eventBroker);
|
||||
|
||||
@@ -49,8 +49,8 @@ describe('searchModuleCatalogCollator', () => {
|
||||
},
|
||||
],
|
||||
],
|
||||
features: [searchModuleCatalogCollator()],
|
||||
services: [
|
||||
features: [
|
||||
searchModuleCatalogCollator(),
|
||||
mockServices.rootConfig.factory({
|
||||
data: {
|
||||
search: {
|
||||
|
||||
@@ -34,8 +34,8 @@ describe('searchModuleExploreCollator', () => {
|
||||
extensionPoints: [
|
||||
[searchIndexRegistryExtensionPoint, extensionPointMock],
|
||||
],
|
||||
features: [searchModuleExploreCollator()],
|
||||
services: [
|
||||
features: [
|
||||
searchModuleExploreCollator(),
|
||||
mockServices.rootConfig.factory({
|
||||
data: {
|
||||
search: {
|
||||
|
||||
@@ -34,8 +34,8 @@ describe('searchModuleTechDocsCollator', () => {
|
||||
extensionPoints: [
|
||||
[searchIndexRegistryExtensionPoint, extensionPointMock],
|
||||
],
|
||||
features: [searchModuleTechDocsCollator()],
|
||||
services: [
|
||||
features: [
|
||||
searchModuleTechDocsCollator(),
|
||||
mockServices.rootConfig.factory({
|
||||
data: {
|
||||
search: {
|
||||
|
||||
Reference in New Issue
Block a user