Fixed all catalog update tests

Signed-off-by: David Lilienfeld <davidlilienfeld4@gmail.com>
This commit is contained in:
David Lilienfeld
2024-11-09 22:25:34 -05:00
parent cf3bb62037
commit cb417ca111
11 changed files with 69 additions and 31 deletions
@@ -50,7 +50,6 @@
"test": "backstage-cli package test"
},
"dependencies": {
"@backstage/backend-common": "workspace:^",
"@backstage/backend-plugin-api": "workspace:^",
"@backstage/catalog-client": "workspace:^",
"@backstage/catalog-model": "workspace:^",
@@ -4,6 +4,7 @@
```ts
import { BackendFeature } from '@backstage/backend-plugin-api';
import { AuthService } from '@backstage/backend-plugin-api';
import { BitbucketServerIntegrationConfig } from '@backstage/integration';
import { CatalogApi } from '@backstage/catalog-client';
import { Config } from '@backstage/config';
@@ -15,7 +16,6 @@ import { LocationSpec } from '@backstage/plugin-catalog-common';
import { LoggerService } from '@backstage/backend-plugin-api';
import { SchedulerService } from '@backstage/backend-plugin-api';
import { SchedulerServiceTaskRunner } from '@backstage/backend-plugin-api';
import { TokenManager } from '@backstage/backend-common';
// @public
export class BitbucketServerClient {
@@ -55,6 +55,8 @@ export class BitbucketServerClient {
};
}
// Warning: (ae-missing-release-tag) "BitbucketServerDefaultBranch" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type BitbucketServerDefaultBranch = {
id: string;
@@ -78,7 +80,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
schedule?: SchedulerServiceTaskRunner;
scheduler?: SchedulerService;
catalogApi?: CatalogApi;
tokenManager?: TokenManager;
auth?: AuthService;
},
): BitbucketServerEntityProvider[];
getProviderName(): string;
@@ -86,6 +88,8 @@ export class BitbucketServerEntityProvider implements EntityProvider {
refresh(logger: LoggerService): Promise<void>;
}
// Warning: (ae-missing-release-tag) "BitbucketServerEvents" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export namespace BitbucketServerEvents {
// (undocumented)
@@ -156,11 +160,15 @@ export type BitbucketServerPagedResponse<T> = {
nextPageStart: number;
};
// Warning: (ae-missing-release-tag) "BitbucketServerProject" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type BitbucketServerProject = {
key: string;
};
// Warning: (ae-missing-release-tag) "BitbucketServerRepository" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type BitbucketServerRepository = {
project: {
@@ -14,7 +14,6 @@
* limitations under the License.
*/
/** @public */
type BitbucketServerRepository = {
project: {
key: string;
@@ -31,12 +30,10 @@ type BitbucketServerRepository = {
defaultBranch: string;
};
/** @public */
type BitbucketServerProject = {
key: string;
};
/** @public */
type BitbucketServerDefaultBranch = {
id: string;
displayId: string;
@@ -46,7 +43,6 @@ type BitbucketServerDefaultBranch = {
isDefault: boolean;
};
/** @public */
namespace BitbucketServerEvents {
interface Event {
eventKey: string;
@@ -40,13 +40,23 @@ export const catalogModuleBitbucketServerEntityProvider = createBackendModule({
events: eventsServiceRef,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
auth: coreServices.auth,
},
async init({ catalog, catalogApi, config, events, logger, scheduler }) {
async init({
catalog,
catalogApi,
config,
events,
logger,
scheduler,
auth,
}) {
const providers = BitbucketServerEntityProvider.fromConfig(config, {
catalogApi,
events,
logger,
scheduler,
auth,
});
catalog.addEntityProvider(providers);
@@ -14,11 +14,11 @@
* limitations under the License.
*/
import { TokenManager } from '@backstage/backend-common';
import {
SchedulerService,
SchedulerServiceTaskRunner,
SchedulerServiceTaskInvocationDefinition,
AuthService,
} from '@backstage/backend-plugin-api';
import {
mockServices,
@@ -69,6 +69,8 @@ function pagedResponse(values: any): BitbucketServerPagedResponse<any> {
const logger = mockServices.logger.mock();
const authService = mockServices.auth.mock();
const events = DefaultEventsService.create({ logger });
const server = setupServer();
@@ -161,11 +163,11 @@ function setupRepositoryReqHandler(defaultBranch: string) {
);
}
const tokenManager = {
getToken: async () => {
return { token: 'fake-token' };
},
} as any as TokenManager;
// const authService = {
// getPluginRequestToken: async ({onBehalfOf, targetPluginId}) => {
// return { token: 'fake-token' };
// },
// } as any as AuthService;
const repoPushEvent: BitbucketServerEvents.RefsChangedEvent = {
eventKey: 'repo:refs_changed',
date: '2017-09-19T09:45:32+1000',
@@ -769,6 +771,10 @@ describe('BitbucketServerEntityProvider', () => {
setupRepositoryReqHandler('master');
authService.getPluginRequestToken.mockResolvedValue({
token: 'fake-token',
});
const config = new ConfigReader({
integrations: {
bitbucketServer: [
@@ -809,12 +815,13 @@ describe('BitbucketServerEntityProvider', () => {
};
},
};
const provider = BitbucketServerEntityProvider.fromConfig(config, {
catalogApi: catalogApi as any as CatalogApi,
logger,
schedule,
events,
tokenManager,
auth: authService as any as AuthService,
})[0];
await provider.connect(entityProviderConnection);
@@ -885,7 +892,7 @@ describe('BitbucketServerEntityProvider', () => {
logger,
schedule,
events,
tokenManager,
auth: authService as any as AuthService,
})[0];
await provider.connect(entityProviderConnection);
@@ -898,6 +905,9 @@ describe('BitbucketServerEntityProvider', () => {
it('add onRepoPush', async () => {
const schedule = new PersistingTaskRunner();
setupRepositoryReqHandler('master');
authService.getPluginRequestToken.mockResolvedValue({
token: 'fake-token',
});
const addedModule = createLocationEntity(
test1RepoUrl,
`/added-module:${targetPath}`,
@@ -945,7 +955,7 @@ describe('BitbucketServerEntityProvider', () => {
logger,
schedule,
events,
tokenManager,
auth: authService as any as AuthService,
})[0];
await provider.connect(entityProviderConnection);
@@ -1015,7 +1025,7 @@ describe('BitbucketServerEntityProvider', () => {
logger,
schedule,
events,
tokenManager,
auth: authService as any as AuthService,
})[0];
await provider.connect(entityProviderConnection);
@@ -37,6 +37,7 @@ import {
defaultBitbucketServerLocationParser,
} from './BitbucketServerLocationParser';
import {
AuthService,
LoggerService,
SchedulerService,
SchedulerServiceTaskRunner,
@@ -44,7 +45,6 @@ import {
import { BitbucketServerEvents } from '../lib';
import { EventsService } from '@backstage/plugin-events-node';
import { CatalogApi } from '@backstage/catalog-client';
import { TokenManager } from '@backstage/backend-common';
const TOPIC_REPO_REFS_CHANGED = 'bitbucketServer.repo:refs_changed';
@@ -65,7 +65,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
private connection?: EntityProviderConnection;
private readonly catalogApi?: CatalogApi;
private readonly events?: EventsService;
private readonly tokenManager?: TokenManager;
private readonly auth?: AuthService;
private eventConfigErrorThrown = false;
private readonly targetAnnotation: string;
private readonly defaultBranchAnnotation: string;
@@ -79,7 +79,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
schedule?: SchedulerServiceTaskRunner;
scheduler?: SchedulerService;
catalogApi?: CatalogApi;
tokenManager?: TokenManager;
auth?: AuthService;
},
): BitbucketServerEntityProvider[] {
const integrations = ScmIntegrations.fromConfig(config);
@@ -116,7 +116,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
options.parser,
options.catalogApi,
options.events,
options.tokenManager,
options.auth,
);
});
}
@@ -129,7 +129,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
parser?: BitbucketServerLocationParser,
catalogApi?: CatalogApi,
events?: EventsService,
tokenManager?: TokenManager,
auth?: AuthService,
) {
this.integration = integration;
this.config = config;
@@ -139,7 +139,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
});
this.scheduleFn = this.createScheduleFn(taskRunner);
this.catalogApi = catalogApi;
this.tokenManager = tokenManager;
this.auth = auth;
this.targetAnnotation = `${this.config.host.split(':')[0]}/repo-url`;
this.defaultBranchAnnotation = 'bitbucket.org/default-branch';
this.events = events;
@@ -301,8 +301,8 @@ export class BitbucketServerEntityProvider implements EntityProvider {
if (
this.catalogApi !== undefined &&
this.catalogApi !== null &&
this.tokenManager !== undefined &&
this.tokenManager !== null
this.auth !== undefined &&
this.auth !== null
) {
return true;
}
@@ -451,7 +451,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
): Promise<void> {
if (!this.canHandleEvents()) {
this.logger.error(
'Bitbucket Server catalog entity provider is not set up to handle events. Missing tokenManager or catalogApi.',
'Bitbucket Server catalog entity provider is not set up to handle events. Missing authService or catalogApi.',
);
return;
}
@@ -468,7 +468,10 @@ export class BitbucketServerEntityProvider implements EntityProvider {
this.logger.error('Failed to create location entity.');
return;
}
const { token } = await this.tokenManager!.getToken();
const { token } = await this.auth!.getPluginRequestToken({
onBehalfOf: await this.auth!.getOwnServiceCredentials(),
targetPluginId: 'catalog', // e.g. 'catalog'
});
const existing = await this.findExistingLocations(catalogRepoUrl, token);
const stillExisting: LocationEntity[] = [];
const removed: DeferredEntity[] = [];
@@ -5,7 +5,7 @@
```ts
import { BackendFeature } from '@backstage/backend-plugin-api';
// @alpha
// @public
const eventsModuleBitbucketServerEventRouter: BackendFeature;
export default eventsModuleBitbucketServerEventRouter;
export { eventsModuleBitbucketServerEventRouter };
@@ -3,6 +3,7 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { BackendFeature } from '@backstage/backend-plugin-api';
import { EventParams } from '@backstage/plugin-events-node';
import { EventsService } from '@backstage/plugin-events-node';
import { SubTopicEventRouter } from '@backstage/plugin-events-node';
@@ -15,4 +16,14 @@ export class BitbucketServerEventRouter extends SubTopicEventRouter {
// (undocumented)
protected getSubscriberId(): string;
}
// @public
const eventsModuleBitbucketServerEventRouter: BackendFeature;
export default eventsModuleBitbucketServerEventRouter;
export { eventsModuleBitbucketServerEventRouter };
// Warnings were encountered during analysis:
//
// src/router/BitbucketServerEventRouter.d.ts:13:5 - (ae-undocumented) Missing documentation for "getSubscriberId".
// src/router/BitbucketServerEventRouter.d.ts:14:5 - (ae-undocumented) Missing documentation for "determineSubTopic".
```
@@ -22,3 +22,5 @@
*/
export { BitbucketServerEventRouter } from './router/BitbucketServerEventRouter';
export { eventsModuleBitbucketServerEventRouter } from './service/eventsModuleBitbucketServerEventRouter';
export { eventsModuleBitbucketServerEventRouter as default } from './service/eventsModuleBitbucketServerEventRouter';
@@ -23,7 +23,7 @@ import { BitbucketServerEventRouter } from '../router/BitbucketServerEventRouter
*
* Registers the `BitbucketServerEventRouter`.
*
* @alpha
* @public
*/
export const eventsModuleBitbucketServerEventRouter = createBackendModule({
pluginId: 'events',
-1
View File
@@ -5737,7 +5737,6 @@ __metadata:
version: 0.0.0-use.local
resolution: "@backstage/plugin-catalog-backend-module-bitbucket-server@workspace:plugins/catalog-backend-module-bitbucket-server"
dependencies:
"@backstage/backend-common": "workspace:^"
"@backstage/backend-plugin-api": "workspace:^"
"@backstage/backend-test-utils": "workspace:^"
"@backstage/catalog-client": "workspace:^"