fix(events,github): reliably extract org name
Use `$.organization.login` instead of `$.repository.organization`. The latter is set at `push` events, but not at events of i.e. type `repository`. The replacement is available at both of them. Fixes: #25951 Signed-off-by: Patrick Jungermann <Patrick.Jungermann@gmail.com>
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-github': patch
|
||||
---
|
||||
|
||||
Fix GitHub `repository` event support.
|
||||
|
||||
`$.repository.organization` is only provided for `push` events. Switched to `$.organization.login` instead.
|
||||
@@ -702,6 +702,9 @@ describe('GithubEntityProvider', () => {
|
||||
const event = {
|
||||
ref: options?.ref ?? 'refs/heads/main',
|
||||
repository: repo as PushEvent['repository'],
|
||||
organization: {
|
||||
login: organization,
|
||||
},
|
||||
created: true,
|
||||
deleted: false,
|
||||
forced: false,
|
||||
@@ -963,7 +966,6 @@ describe('GithubEntityProvider', () => {
|
||||
url: 'https://github.com/test-org/test-repo',
|
||||
default_branch: 'main',
|
||||
master_branch: 'main',
|
||||
organization: 'test-org',
|
||||
topics: [],
|
||||
archived: action === 'archived',
|
||||
private: action !== 'publicized',
|
||||
@@ -972,6 +974,9 @@ describe('GithubEntityProvider', () => {
|
||||
const event = {
|
||||
action,
|
||||
repository: repo as RepositoryEvent['repository'],
|
||||
organization: {
|
||||
login: 'test-org',
|
||||
},
|
||||
} as RepositoryEvent;
|
||||
|
||||
if (action === 'renamed') {
|
||||
@@ -1285,7 +1290,7 @@ describe('GithubEntityProvider', () => {
|
||||
const event = createRepoEvent(
|
||||
'renamed',
|
||||
) as EventParams<RepositoryRenamedEvent>;
|
||||
const urlOldRepo = `https://github.com/${event.eventPayload.repository.organization}/${event.eventPayload.changes.repository.name.from}/blob/main/catalog-info.yaml`;
|
||||
const urlOldRepo = `https://github.com/${event.eventPayload.organization?.login}/${event.eventPayload.changes.repository.name.from}/blob/main/catalog-info.yaml`;
|
||||
const expectedEntitiesRemoved =
|
||||
createExpectedEntitiesForUrl(urlOldRepo);
|
||||
|
||||
@@ -1314,7 +1319,7 @@ describe('GithubEntityProvider', () => {
|
||||
const event = createRepoEvent(
|
||||
'renamed',
|
||||
) as EventParams<RepositoryRenamedEvent>;
|
||||
const urlOldRepo = `https://github.com/${event.eventPayload.repository.organization}/${event.eventPayload.changes.repository.name.from}/blob/main/catalog-info.yaml`;
|
||||
const urlOldRepo = `https://github.com/${event.eventPayload.organization?.login}/${event.eventPayload.changes.repository.name.from}/blob/main/catalog-info.yaml`;
|
||||
const expectedEntitiesRemoved =
|
||||
createExpectedEntitiesForUrl(urlOldRepo);
|
||||
const expectedEntitiesAdded = createExpectedEntitiesForEvent(event);
|
||||
|
||||
@@ -323,9 +323,9 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber {
|
||||
}
|
||||
|
||||
private async onPush(event: PushEvent) {
|
||||
if (this.config.organization !== event.repository.organization) {
|
||||
if (this.config.organization !== event.organization?.login) {
|
||||
this.logger.debug(
|
||||
`skipping push event from organization ${event.repository.organization}`,
|
||||
`skipping push event from organization ${event.organization?.login}`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -408,9 +408,9 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber {
|
||||
}
|
||||
|
||||
private async onRepoChange(event: RepositoryEvent) {
|
||||
if (this.config.organization !== event.repository.organization) {
|
||||
if (this.config.organization !== event.organization?.login) {
|
||||
this.logger.debug(
|
||||
`skipping repository event from organization ${event.repository.organization}`,
|
||||
`skipping repository event from organization ${event.organization?.login}`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user