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:
Patrick Jungermann
2024-08-14 18:23:30 +02:00
parent a9a70d2662
commit c1eb809f8b
3 changed files with 19 additions and 7 deletions
+7
View File
@@ -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;
}