From 2ec5c54cf0612c192a426afb4f2cba0e2e9441f2 Mon Sep 17 00:00:00 2001
From: Oleg Krivtsov <olegkrivtsov@gmail.com>
Date: Wed, 24 Nov 2021 18:17:19 +0700
Subject: [PATCH] feat(platform/bitbucket-server): modify getJsonFile to use
 branchOrTag on Bitbucket server (#12824)

Co-authored-by: Rhys Arkins <rhys@arkins.net>
---
 .../__snapshots__/index.spec.ts.snap                 | 12 ++++++------
 lib/platform/bitbucket-server/index.spec.ts          |  4 ++--
 lib/platform/bitbucket-server/index.ts               |  4 +++-
 3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/lib/platform/bitbucket-server/__snapshots__/index.spec.ts.snap b/lib/platform/bitbucket-server/__snapshots__/index.spec.ts.snap
index e1dba3d9a6..a9dc459199 100644
--- a/lib/platform/bitbucket-server/__snapshots__/index.spec.ts.snap
+++ b/lib/platform/bitbucket-server/__snapshots__/index.spec.ts.snap
@@ -2027,7 +2027,7 @@ Array [
 ]
 `;
 
-exports[`platform/bitbucket-server/index endpoint with no path getJsonFile() ignores branchOrTag argument 1`] = `
+exports[`platform/bitbucket-server/index endpoint with no path getJsonFile() returns file content 1`] = `
 Array [
   Object {
     "headers": Object {
@@ -2068,7 +2068,7 @@ Array [
 ]
 `;
 
-exports[`platform/bitbucket-server/index endpoint with no path getJsonFile() returns file content 1`] = `
+exports[`platform/bitbucket-server/index endpoint with no path getJsonFile() returns file content from branch or tag 1`] = `
 Array [
   Object {
     "headers": Object {
@@ -2104,7 +2104,7 @@ Array [
       "x-atlassian-token": "no-check",
     },
     "method": "GET",
-    "url": "https://stash.renovatebot.com/rest/api/1.0/projects/SOME/repos/repo/browse/file.json?limit=20000",
+    "url": "https://stash.renovatebot.com/rest/api/1.0/projects/SOME/repos/repo/browse/file.json?limit=20000&at=dev",
   },
 ]
 `;
@@ -6525,7 +6525,7 @@ Array [
 ]
 `;
 
-exports[`platform/bitbucket-server/index endpoint with path getJsonFile() ignores branchOrTag argument 1`] = `
+exports[`platform/bitbucket-server/index endpoint with path getJsonFile() returns file content 1`] = `
 Array [
   Object {
     "headers": Object {
@@ -6566,7 +6566,7 @@ Array [
 ]
 `;
 
-exports[`platform/bitbucket-server/index endpoint with path getJsonFile() returns file content 1`] = `
+exports[`platform/bitbucket-server/index endpoint with path getJsonFile() returns file content from branch or tag 1`] = `
 Array [
   Object {
     "headers": Object {
@@ -6602,7 +6602,7 @@ Array [
       "x-atlassian-token": "no-check",
     },
     "method": "GET",
-    "url": "https://stash.renovatebot.com/vcs/rest/api/1.0/projects/SOME/repos/repo/browse/file.json?limit=20000",
+    "url": "https://stash.renovatebot.com/vcs/rest/api/1.0/projects/SOME/repos/repo/browse/file.json?limit=20000&at=dev",
   },
 ]
 `;
diff --git a/lib/platform/bitbucket-server/index.spec.ts b/lib/platform/bitbucket-server/index.spec.ts
index cdd64adf09..c031b8652c 100644
--- a/lib/platform/bitbucket-server/index.spec.ts
+++ b/lib/platform/bitbucket-server/index.spec.ts
@@ -2150,12 +2150,12 @@ Followed by some information.
           expect(httpMock.getTrace()).toMatchSnapshot();
         });
 
-        it('ignores branchOrTag argument', async () => {
+        it('returns file content from branch or tag', async () => {
           const data = { foo: 'bar' };
           const scope = await initRepo();
           scope
             .get(
-              `${urlPath}/rest/api/1.0/projects/SOME/repos/repo/browse/file.json?limit=20000`
+              `${urlPath}/rest/api/1.0/projects/SOME/repos/repo/browse/file.json?limit=20000&at=dev`
             )
             .reply(200, {
               isLastPage: true,
diff --git a/lib/platform/bitbucket-server/index.ts b/lib/platform/bitbucket-server/index.ts
index f7d2a194da..2a01c173fc 100644
--- a/lib/platform/bitbucket-server/index.ts
+++ b/lib/platform/bitbucket-server/index.ts
@@ -128,7 +128,9 @@ export async function getRawFile(
 ): Promise<string | null> {
   const repo = repoName ?? config.repository;
   const [project, slug] = repo.split('/');
-  const fileUrl = `./rest/api/1.0/projects/${project}/repos/${slug}/browse/${fileName}?limit=20000`;
+  const fileUrl =
+    `./rest/api/1.0/projects/${project}/repos/${slug}/browse/${fileName}?limit=20000` +
+    (branchOrTag ? '&at=' + branchOrTag : '');
   const res = await bitbucketServerHttp.getJson<FileData>(fileUrl);
   const { isLastPage, lines, size } = res.body;
   if (isLastPage) {
-- 
GitLab