From d5e15657451212b8e0532c40f86e6eedb606fa45 Mon Sep 17 00:00:00 2001 From: Max Morton Date: Fri, 2 Dec 2022 15:21:24 -0800 Subject: [PATCH 1/4] fix GitlabUrlReader to include private key header Signed-off-by: Max Morton --- packages/backend-common/src/reading/GitlabUrlReader.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/backend-common/src/reading/GitlabUrlReader.ts b/packages/backend-common/src/reading/GitlabUrlReader.ts index 522e81cd2f..6c3445d4bb 100644 --- a/packages/backend-common/src/reading/GitlabUrlReader.ts +++ b/packages/backend-common/src/reading/GitlabUrlReader.ts @@ -311,6 +311,11 @@ export class GitlabUrlReader implements UrlReader { `${ pathToProject.origin }${relativePath}/api/v4/projects/${encodeURIComponent(project)}`, + { + headers: { + ...getGitLabRequestOptions(this.integration.config).headers, + }, + }, ); const data = await result.json(); if (!result.ok) { From c676c0613cda46a1832aba90985a6aa6338448ea Mon Sep 17 00:00:00 2001 From: Max Morton Date: Fri, 2 Dec 2022 15:45:29 -0800 Subject: [PATCH 2/4] add tests to the fix Signed-off-by: Max Morton --- .../src/reading/GitlabUrlReader.test.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/backend-common/src/reading/GitlabUrlReader.test.ts b/packages/backend-common/src/reading/GitlabUrlReader.test.ts index 518e2efadc..31092e7707 100644 --- a/packages/backend-common/src/reading/GitlabUrlReader.test.ts +++ b/packages/backend-common/src/reading/GitlabUrlReader.test.ts @@ -44,6 +44,7 @@ const gitlabProcessor = new GitlabUrlReader( host: 'gitlab.com', apiBaseUrl: 'https://gitlab.com/api/v4', baseUrl: 'https://gitlab.com', + token: 'gl-dummy-token', }), ), ), @@ -57,6 +58,7 @@ const hostedGitlabProcessor = new GitlabUrlReader( host: 'gitlab.mycompany.com', apiBaseUrl: 'https://gitlab.mycompany.com/api/v4', baseUrl: 'https://gitlab.mycompany.com', + token: 'gl-dummy-token', }), ), ), @@ -656,4 +658,21 @@ describe('GitlabUrlReader', () => { ).rejects.toThrow(/^Unable to translate GitLab artifact URL:/); }); }); + + describe('resolveProjectToId', () => { + it('should resolve the project path to a valid project id', async () => { + worker.use( + rest.get('*/api/v4/projects/some%2Fproject', (req, res, ctx) => { + // the private-token header must be included on API calls + expect(req.headers.get('private-token')).toBe('gl-dummy-token'); + return res(ctx.status(200), ctx.json({ id: 12345 })); + }), + ); + await expect( + (gitlabProcessor as any).resolveProjectToId( + new URL('https://gitlab.com/some/project'), + ), + ).resolves.toEqual(12345); + }); + }); }); From 98776e638ac11109df0c162bb9df1a9210d6faac Mon Sep 17 00:00:00 2001 From: Max Morton Date: Fri, 2 Dec 2022 15:49:17 -0800 Subject: [PATCH 3/4] added changeset Signed-off-by: Max Morton --- .changeset/famous-crews-speak.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/famous-crews-speak.md diff --git a/.changeset/famous-crews-speak.md b/.changeset/famous-crews-speak.md new file mode 100644 index 0000000000..d2246472a0 --- /dev/null +++ b/.changeset/famous-crews-speak.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Fixed GitlabUrlReader to include api tokens in API calls From f6e5fa324222b7c273ff278ab992261c72e57fe1 Mon Sep 17 00:00:00 2001 From: Max Morton Date: Mon, 5 Dec 2022 15:07:34 -0800 Subject: [PATCH 4/4] don't unpack the gitlab options Signed-off-by: Max Morton --- packages/backend-common/src/reading/GitlabUrlReader.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/backend-common/src/reading/GitlabUrlReader.ts b/packages/backend-common/src/reading/GitlabUrlReader.ts index 6c3445d4bb..a582f02cf0 100644 --- a/packages/backend-common/src/reading/GitlabUrlReader.ts +++ b/packages/backend-common/src/reading/GitlabUrlReader.ts @@ -311,11 +311,7 @@ export class GitlabUrlReader implements UrlReader { `${ pathToProject.origin }${relativePath}/api/v4/projects/${encodeURIComponent(project)}`, - { - headers: { - ...getGitLabRequestOptions(this.integration.config).headers, - }, - }, + getGitLabRequestOptions(this.integration.config), ); const data = await result.json(); if (!result.ok) {