diff --git a/.changeset/dull-pumas-hope.md b/.changeset/dull-pumas-hope.md new file mode 100644 index 0000000000..e34b731749 --- /dev/null +++ b/.changeset/dull-pumas-hope.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Added back support for when no branch is provided to the `UrlReader` for Bitbucket Server diff --git a/packages/backend-common/src/reading/BitbucketServerUrlReader.test.ts b/packages/backend-common/src/reading/BitbucketServerUrlReader.test.ts index 4584ba75f8..f308b4d33d 100644 --- a/packages/backend-common/src/reading/BitbucketServerUrlReader.test.ts +++ b/packages/backend-common/src/reading/BitbucketServerUrlReader.test.ts @@ -109,6 +109,55 @@ describe('BitbucketServerUrlReader', () => { }); }); + describe('readTree without branch', () => { + const repoBuffer = fs.readFileSync( + path.resolve(__dirname, '__fixtures__/bitbucket-server-repo.tar.gz'), + ); + + beforeEach(() => { + worker.use( + rest.get( + 'https://api.bitbucket.mycompany.net/rest/api/1.0/projects/backstage/repos/mock/archive', + (_, res, ctx) => + res( + ctx.status(200), + ctx.set('Content-Type', 'application/zip'), + ctx.set( + 'content-disposition', + 'attachment; filename=backstage-mock.tgz', + ), + ctx.body(repoBuffer), + ), + ), + rest.get( + 'https://api.bitbucket.mycompany.net/rest/api/1.0/projects/backstage/repos/mock/commits/*', + (_, res, ctx) => + res( + ctx.status(200), + ctx.json({ + values: [{ id: '12ab34cd56ef78gh90ij12kl34mn56op78qr90st' }], + }), + ), + ), + ); + }); + + it('uses private bitbucket host', async () => { + const response = await reader.readTree( + 'https://bitbucket.mycompany.net/projects/backstage/repos/mock/browse/docs?at=some-branch', + ); + + expect(response.etag).toBe('12ab34cd56ef'); + + const files = await response.files(); + + expect(files.length).toBe(1); + const indexMarkdownFile = await files[0].content(); + + expect(indexMarkdownFile.toString()).toBe('# Test\n'); + }); + }); + describe('search private', () => { const repoBuffer = fs.readFileSync( path.resolve(__dirname, '__fixtures__/bitbucket-server-repo.tar.gz'), diff --git a/packages/backend-common/src/reading/BitbucketServerUrlReader.ts b/packages/backend-common/src/reading/BitbucketServerUrlReader.ts index 31894cf823..e9a229a1ff 100644 --- a/packages/backend-common/src/reading/BitbucketServerUrlReader.ts +++ b/packages/backend-common/src/reading/BitbucketServerUrlReader.ts @@ -205,10 +205,21 @@ export class BitbucketServerUrlReader implements UrlReader { const commits = await commitResponse.json(); + // Handles case when a branch is provided in the URL if (commits && commits.id) { return commits.id.substring(0, 12); } + // Handles case when no branch is provided in the URL + if ( + commits && + commits.values && + commits.values.length > 0 && + commits.values[0].id + ) { + return commits.values[0].id.substring(0, 12); + } + throw new Error(`Failed to read response from ${commitApiUrl}`); } }