From 89ab7bc584e63dcf4634ee1aa066ca79ca52803e Mon Sep 17 00:00:00 2001 From: Oleg Krivtsov Date: Wed, 8 Dec 2021 18:09:11 +0700 Subject: [PATCH 1/4] fetchJSONFile handle branchOrTag --- .../__snapshots__/index.spec.ts.snap | 17 ++++++++++++++++ .../presets/bitbucket-server/index.spec.ts | 20 +++++++++++++++++++ lib/config/presets/bitbucket-server/index.ts | 9 +++++++-- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/lib/config/presets/bitbucket-server/__snapshots__/index.spec.ts.snap b/lib/config/presets/bitbucket-server/__snapshots__/index.spec.ts.snap index 26af38c45b1e11..38e6c240d77415 100644 --- a/lib/config/presets/bitbucket-server/__snapshots__/index.spec.ts.snap +++ b/lib/config/presets/bitbucket-server/__snapshots__/index.spec.ts.snap @@ -1,5 +1,22 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`config/presets/bitbucket-server/index fetchJSONFile() handles branches/tags 1`] = ` +Array [ + Object { + "headers": Object { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "authorization": "Bearer abc", + "host": "git.company.org", + "user-agent": "RenovateBot/0.0.0-semantic-release (https://github.com/renovatebot/renovate)", + "x-atlassian-token": "no-check", + }, + "method": "GET", + "url": "https://git.company.org/rest/api/1.0/projects/some/repos/repo/browse/some-filename.json?limit=20000&at=refs%2Fheads%2Ffeature%2Fbranch", + }, +] +`; + exports[`config/presets/bitbucket-server/index fetchJSONFile() returns JSON 1`] = ` Array [ Object { diff --git a/lib/config/presets/bitbucket-server/index.spec.ts b/lib/config/presets/bitbucket-server/index.spec.ts index 9e98bd01150243..d49b37aba9fc7b 100644 --- a/lib/config/presets/bitbucket-server/index.spec.ts +++ b/lib/config/presets/bitbucket-server/index.spec.ts @@ -36,6 +36,26 @@ describe('config/presets/bitbucket-server/index', () => { expect(httpMock.getTrace()).toMatchSnapshot(); }); + it('handles branches/tags', async () => { + httpMock + .scope(bitbucketApiHost) + .get(`${basePath}/some-filename.json`) + .query({ limit: 20000, at: 'refs/heads/feature/branch' }) + .reply(200, { + isLastPage: true, + lines: [{ text: '{"from":"api"' }, { text: '}' }], + }); + + const res = await bitbucketServer.fetchJSONFile( + 'some/repo', + 'some-filename.json', + bitbucketApiHost, + 'feature/branch' + ); + expect(res).toEqual({ from: 'api' }); + expect(httpMock.getTrace()).toMatchSnapshot(); + }); + it('throws 404', async () => { httpMock .scope(bitbucketApiHost) diff --git a/lib/config/presets/bitbucket-server/index.ts b/lib/config/presets/bitbucket-server/index.ts index 3dbe80cf46caaa..bfa951eee31486 100644 --- a/lib/config/presets/bitbucket-server/index.ts +++ b/lib/config/presets/bitbucket-server/index.ts @@ -17,11 +17,16 @@ const http = new BitbucketServerHttp(); export async function fetchJSONFile( repo: string, fileName: string, - endpoint: string + endpoint: string, + branchOrTag?: string ): Promise { const [projectKey, repositorySlug] = repo.split('/'); setBaseUrl(endpoint); - const url = `rest/api/1.0/projects/${projectKey}/repos/${repositorySlug}/browse/${fileName}?limit=20000`; + let url = `rest/api/1.0/projects/${projectKey}/repos/${repositorySlug}/browse/${fileName}?limit=20000`; + if (branchOrTag) { + url += '&at=' + encodeURIComponent(`refs/heads/${branchOrTag}`); + } + let res: { body: FileData }; try { res = await http.getJson(url); From b21a27a6f06b1d52ddc1d42bd8d01e13910fed28 Mon Sep 17 00:00:00 2001 From: Oleg Krivtsov Date: Thu, 9 Dec 2021 17:04:09 +0700 Subject: [PATCH 2/4] Changes after code review --- lib/config/presets/bitbucket-server/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/config/presets/bitbucket-server/index.ts b/lib/config/presets/bitbucket-server/index.ts index bfa951eee31486..5e655d96489516 100644 --- a/lib/config/presets/bitbucket-server/index.ts +++ b/lib/config/presets/bitbucket-server/index.ts @@ -24,7 +24,7 @@ export async function fetchJSONFile( setBaseUrl(endpoint); let url = `rest/api/1.0/projects/${projectKey}/repos/${repositorySlug}/browse/${fileName}?limit=20000`; if (branchOrTag) { - url += '&at=' + encodeURIComponent(`refs/heads/${branchOrTag}`); + url += '&at=' + encodeURIComponent(`${branchOrTag}`); } let res: { body: FileData }; From e92937fa2eb8a12150b4b6dc8a860f82dcdd1d35 Mon Sep 17 00:00:00 2001 From: Oleg Krivtsov Date: Thu, 9 Dec 2021 17:08:29 +0700 Subject: [PATCH 3/4] Fix tests --- .../bitbucket-server/__snapshots__/index.spec.ts.snap | 2 +- lib/config/presets/bitbucket-server/index.spec.ts | 2 +- lib/config/presets/bitbucket-server/index.ts | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/config/presets/bitbucket-server/__snapshots__/index.spec.ts.snap b/lib/config/presets/bitbucket-server/__snapshots__/index.spec.ts.snap index 38e6c240d77415..c76919ded3ccba 100644 --- a/lib/config/presets/bitbucket-server/__snapshots__/index.spec.ts.snap +++ b/lib/config/presets/bitbucket-server/__snapshots__/index.spec.ts.snap @@ -12,7 +12,7 @@ Array [ "x-atlassian-token": "no-check", }, "method": "GET", - "url": "https://git.company.org/rest/api/1.0/projects/some/repos/repo/browse/some-filename.json?limit=20000&at=refs%2Fheads%2Ffeature%2Fbranch", + "url": "https://git.company.org/rest/api/1.0/projects/some/repos/repo/browse/some-filename.json?limit=20000&at=feature%2Fbranch", }, ] `; diff --git a/lib/config/presets/bitbucket-server/index.spec.ts b/lib/config/presets/bitbucket-server/index.spec.ts index d49b37aba9fc7b..ba5e6d0c02f74e 100644 --- a/lib/config/presets/bitbucket-server/index.spec.ts +++ b/lib/config/presets/bitbucket-server/index.spec.ts @@ -40,7 +40,7 @@ describe('config/presets/bitbucket-server/index', () => { httpMock .scope(bitbucketApiHost) .get(`${basePath}/some-filename.json`) - .query({ limit: 20000, at: 'refs/heads/feature/branch' }) + .query({ limit: 20000, at: 'feature/branch' }) .reply(200, { isLastPage: true, lines: [{ text: '{"from":"api"' }, { text: '}' }], diff --git a/lib/config/presets/bitbucket-server/index.ts b/lib/config/presets/bitbucket-server/index.ts index 5e655d96489516..08c740d824c9b7 100644 --- a/lib/config/presets/bitbucket-server/index.ts +++ b/lib/config/presets/bitbucket-server/index.ts @@ -18,13 +18,13 @@ export async function fetchJSONFile( repo: string, fileName: string, endpoint: string, - branchOrTag?: string + packageTag?: string ): Promise { const [projectKey, repositorySlug] = repo.split('/'); setBaseUrl(endpoint); let url = `rest/api/1.0/projects/${projectKey}/repos/${repositorySlug}/browse/${fileName}?limit=20000`; - if (branchOrTag) { - url += '&at=' + encodeURIComponent(`${branchOrTag}`); + if (packageTag) { + url += '&at=' + encodeURIComponent(packageTag); } let res: { body: FileData }; From 611a086014587edfc1051ff417d1f10591cc5af5 Mon Sep 17 00:00:00 2001 From: Oleg Krivtsov Date: Fri, 10 Dec 2021 10:22:48 +0700 Subject: [PATCH 4/4] Apply suggestions from code review Co-authored-by: Michael Kriese --- lib/config/presets/bitbucket-server/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/config/presets/bitbucket-server/index.ts b/lib/config/presets/bitbucket-server/index.ts index 08c740d824c9b7..80a0f5d67e671b 100644 --- a/lib/config/presets/bitbucket-server/index.ts +++ b/lib/config/presets/bitbucket-server/index.ts @@ -18,13 +18,13 @@ export async function fetchJSONFile( repo: string, fileName: string, endpoint: string, - packageTag?: string + branchOrTag?: string ): Promise { const [projectKey, repositorySlug] = repo.split('/'); setBaseUrl(endpoint); let url = `rest/api/1.0/projects/${projectKey}/repos/${repositorySlug}/browse/${fileName}?limit=20000`; - if (packageTag) { - url += '&at=' + encodeURIComponent(packageTag); + if (branchOrTag) { + url += '&at=' + encodeURIComponent(branchOrTag); } let res: { body: FileData };