diff --git a/lib/modules/platform/bitbucket/index.spec.ts b/lib/modules/platform/bitbucket/index.spec.ts index 16dafb7141e89f0abef13cffa8c7ea7568080a1a..35aef41c28d062a27d868769791e95efb0b96f64 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 299a39e6d1acaf4ba916675ea61a65f27c5e568b..b839c2ecdf4a9ef6b645ded12a1d091ee864f5d7 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 aa24d538a93da4594ab2bcb6c9ac1f8c5f346a91..6eb16508ee55e2ad5027e4cd8b87c316f774dc35 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; +}