From 647d2cc8fddb2a38288120e523a925d8fc355bfd Mon Sep 17 00:00:00 2001 From: Boris Gershanik Date: Wed, 14 Jun 2023 17:57:04 +0300 Subject: [PATCH 1/2] Fix getGroupMembers with token that don't have sufficient permissions Signed-off-by: Boris Gershanik --- .../src/lib/client.test.ts | 22 +++++++++++++++++++ .../src/lib/client.ts | 8 +++++++ 2 files changed, 30 insertions(+) diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts index 122aae7f54..f4504e8937 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.test.ts @@ -429,6 +429,28 @@ describe('GitLabClient', () => { expect(members).toEqual([1]); }); + it('gets member IDs with token without full permissions', async () => { + server.use( + graphql + .link(`${MOCK_CONFIG.baseUrl}/api/graphql`) + .operation((_, res, ctx) => + res( + ctx.data({ + group: {}, + }), + ), + ), + ); + const client = new GitLabClient({ + config: MOCK_CONFIG, + logger: getVoidLogger(), + }); + + const members = await client.getGroupMembers('group1'); + + expect(members).toEqual([]); + }); + it('rejects when GraphQL returns errors', async () => { server.use( graphql diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.ts index 46932c95c6..f0e169d8df 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.ts @@ -127,6 +127,14 @@ export class GitLabClient { if (response.errors) { throw new Error(`GraphQL errors: ${JSON.stringify(response.errors)}`); } + + if (!response.data.group?.groupMembers?.nodes) { + this.logger.warn( + `Couldn't get members for group ${groupPath}. The provided token might not have sufficient permissions`, + ); + continue; + } + memberIds.push( ...response.data.group.groupMembers.nodes .filter(n => n.user) From 571f78ed0ea7710cb2db6d24aaef2567e92b332d Mon Sep 17 00:00:00 2001 From: Boris Gershanik Date: Wed, 14 Jun 2023 18:10:03 +0300 Subject: [PATCH 2/2] added changeset + formatting Signed-off-by: Boris Gershanik --- .changeset/young-mice-shake.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/young-mice-shake.md diff --git a/.changeset/young-mice-shake.md b/.changeset/young-mice-shake.md new file mode 100644 index 0000000000..6acd0239c6 --- /dev/null +++ b/.changeset/young-mice-shake.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab': patch +--- + +Fix getGroupMembers with token that don't have sufficient permissions