From 9596bfa3632b845bf192401dd2c702c35c24fb5b Mon Sep 17 00:00:00 2001 From: Adam Setch <adam.setch@outlook.com> Date: Tue, 20 Sep 2022 01:34:42 -0400 Subject: [PATCH] feat(platform/bitbucket): update to use effective default reviewers (#17869) --- lib/modules/platform/bitbucket/index.spec.ts | 84 ++++++++++++++------ lib/modules/platform/bitbucket/index.ts | 9 ++- lib/modules/platform/bitbucket/utils.ts | 6 ++ 3 files changed, 69 insertions(+), 30 deletions(-) diff --git a/lib/modules/platform/bitbucket/index.spec.ts b/lib/modules/platform/bitbucket/index.spec.ts index 16dafb7141..35aef41c28 100644 --- a/lib/modules/platform/bitbucket/index.spec.ts +++ b/lib/modules/platform/bitbucket/index.spec.ts @@ -696,11 +696,29 @@ describe('modules/platform/bitbucket/index', () => { describe('createPr()', () => { it('posts PR', async () => { + const projectReviewer = { + type: 'default_reviewer', + reviewer_type: 'project', + user: { + display_name: 'Bob Smith', + uuid: '{d2238482-2e9f-48b3-8630-de22ccb9e42f}', + account_id: '123', + }, + }; + const repoReviewer = { + type: 'default_reviewer', + reviewer_type: 'repository', + user: { + display_name: 'Jane Smith', + uuid: '{90b6646d-1724-4a64-9fd9-539515fe94e9}', + account_id: '456', + }, + }; const scope = await initRepoMock(); scope - .get('/2.0/repositories/some/repo/default-reviewers') + .get('/2.0/repositories/some/repo/effective-default-reviewers') .reply(200, { - values: [{ uuid: '{1234-5678}' }], + values: [projectReviewer, repoReviewer], }) .post('/2.0/repositories/some/repo/pullrequests') .reply(200, { id: 5 }); @@ -718,18 +736,22 @@ describe('modules/platform/bitbucket/index', () => { it('removes inactive reviewers when updating pr', async () => { const inactiveReviewer = { - display_name: 'Bob Smith', - uuid: '{d2238482-2e9f-48b3-8630-de22ccb9e42f}', - account_id: '123', + user: { + display_name: 'Bob Smith', + uuid: '{d2238482-2e9f-48b3-8630-de22ccb9e42f}', + account_id: '123', + }, }; const activeReviewer = { - display_name: 'Jane Smith', - uuid: '{90b6646d-1724-4a64-9fd9-539515fe94e9}', - account_id: '456', + user: { + display_name: 'Jane Smith', + uuid: '{90b6646d-1724-4a64-9fd9-539515fe94e9}', + account_id: '456', + }, }; const scope = await initRepoMock(); scope - .get('/2.0/repositories/some/repo/default-reviewers') + .get('/2.0/repositories/some/repo/effective-default-reviewers') .reply(200, { values: [activeReviewer, inactiveReviewer], }) @@ -767,18 +789,22 @@ describe('modules/platform/bitbucket/index', () => { it('removes default reviewers no longer member of the workspace when creating pr', async () => { const notMemberReviewer = { - display_name: 'Bob Smith', - uuid: '{d2238482-2e9f-48b3-8630-de22ccb9e42f}', - account_id: '123', + user: { + display_name: 'Bob Smith', + uuid: '{d2238482-2e9f-48b3-8630-de22ccb9e42f}', + account_id: '123', + }, }; const memberReviewer = { - display_name: 'Jane Smith', - uuid: '{90b6646d-1724-4a64-9fd9-539515fe94e9}', - account_id: '456', + user: { + display_name: 'Jane Smith', + uuid: '{90b6646d-1724-4a64-9fd9-539515fe94e9}', + account_id: '456', + }, }; const scope = await initRepoMock(); scope - .get('/2.0/repositories/some/repo/default-reviewers') + .get('/2.0/repositories/some/repo/effective-default-reviewers') .reply(200, { values: [memberReviewer, notMemberReviewer], }) @@ -819,13 +845,15 @@ describe('modules/platform/bitbucket/index', () => { it('throws exception when unable to check default reviewers workspace membership', async () => { const reviewer = { - display_name: 'Bob Smith', - uuid: '{d2238482-2e9f-48b3-8630-de22ccb9e42f}', - account_id: '123', + user: { + display_name: 'Bob Smith', + uuid: '{d2238482-2e9f-48b3-8630-de22ccb9e42f}', + account_id: '123', + }, }; const scope = await initRepoMock(); scope - .get('/2.0/repositories/some/repo/default-reviewers') + .get('/2.0/repositories/some/repo/effective-default-reviewers') .reply(200, { values: [reviewer], }) @@ -861,13 +889,15 @@ describe('modules/platform/bitbucket/index', () => { it('rethrows exception when PR create error due to unknown reviewers error', async () => { const reviewer = { - display_name: 'Jane Smith', - uuid: '{90b6646d-1724-4a64-9fd9-539515fe94e9}', + user: { + display_name: 'Jane Smith', + uuid: '{90b6646d-1724-4a64-9fd9-539515fe94e9}', + }, }; const scope = await initRepoMock(); scope - .get('/2.0/repositories/some/repo/default-reviewers') + .get('/2.0/repositories/some/repo/effective-default-reviewers') .reply(200, { values: [reviewer], }) @@ -896,13 +926,15 @@ describe('modules/platform/bitbucket/index', () => { it('rethrows exception when PR create error not due to reviewers field', async () => { const reviewer = { - display_name: 'Jane Smith', - uuid: '{90b6646d-1724-4a64-9fd9-539515fe94e9}', + user: { + display_name: 'Jane Smith', + uuid: '{90b6646d-1724-4a64-9fd9-539515fe94e9}', + }, }; const scope = await initRepoMock(); scope - .get('/2.0/repositories/some/repo/default-reviewers') + .get('/2.0/repositories/some/repo/effective-default-reviewers') .reply(200, { values: [reviewer], }) diff --git a/lib/modules/platform/bitbucket/index.ts b/lib/modules/platform/bitbucket/index.ts index 299a39e6d1..b839c2ecdf 100644 --- a/lib/modules/platform/bitbucket/index.ts +++ b/lib/modules/platform/bitbucket/index.ts @@ -35,6 +35,7 @@ import * as comments from './comments'; import * as utils from './utils'; import { Account, + EffectiveReviewer, PrResponse, RepoInfoBody, mergeBodyTransformer, @@ -738,12 +739,12 @@ export async function createPr({ if (platformOptions?.bbUseDefaultReviewers) { const reviewersResponse = ( - await bitbucketHttp.getJson<utils.PagedResult<Account>>( - `/2.0/repositories/${config.repository}/default-reviewers` + await bitbucketHttp.getJson<utils.PagedResult<EffectiveReviewer>>( + `/2.0/repositories/${config.repository}/effective-default-reviewers` ) ).body; - reviewers = reviewersResponse.values.map((reviewer: Account) => ({ - uuid: reviewer.uuid, + reviewers = reviewersResponse.values.map((reviewer: EffectiveReviewer) => ({ + uuid: reviewer.user.uuid, })); } diff --git a/lib/modules/platform/bitbucket/utils.ts b/lib/modules/platform/bitbucket/utils.ts index aa24d538a9..6eb16508ee 100644 --- a/lib/modules/platform/bitbucket/utils.ts +++ b/lib/modules/platform/bitbucket/utils.ts @@ -201,3 +201,9 @@ export interface Account { nickname?: string; account_status?: string; } + +export interface EffectiveReviewer { + type: string; + reviewer_type: string; + user: Account; +} -- GitLab