Fixed all catalog update tests
Signed-off-by: David Lilienfeld <davidlilienfeld4@gmail.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
+11
-1
@@ -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);
|
||||
|
||||
+20
-10
@@ -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);
|
||||
|
||||
+13
-10
@@ -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[] = [];
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
```ts
|
||||
import { BackendFeature } from '@backstage/backend-plugin-api';
|
||||
|
||||
// @alpha
|
||||
// @public
|
||||
const eventsModuleBitbucketServerEventRouter: BackendFeature;
|
||||
export default eventsModuleBitbucketServerEventRouter;
|
||||
export { eventsModuleBitbucketServerEventRouter };
|
||||
+11
@@ -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';
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ import { BitbucketServerEventRouter } from '../router/BitbucketServerEventRouter
|
||||
*
|
||||
* Registers the `BitbucketServerEventRouter`.
|
||||
*
|
||||
* @alpha
|
||||
* @public
|
||||
*/
|
||||
export const eventsModuleBitbucketServerEventRouter = createBackendModule({
|
||||
pluginId: 'events',
|
||||
|
||||
@@ -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:^"
|
||||
|
||||
Reference in New Issue
Block a user