From 7ef9bf8c6e90beaa8458e7acb41ccdd8055de742 Mon Sep 17 00:00:00 2001 From: Kyle Leonhard Date: Tue, 13 Dec 2022 15:54:23 -0800 Subject: [PATCH 1/5] Add option to require Github conversation resolution Signed-off-by: Kyle Leonhard --- plugins/scaffolder-backend/api-report.md | 3 +++ .../actions/builtin/github/githubRepoCreate.ts | 3 +++ .../actions/builtin/github/githubRepoPush.test.ts | 15 +++++++++++++++ .../actions/builtin/github/githubRepoPush.ts | 5 +++++ .../scaffolder/actions/builtin/github/helpers.ts | 2 ++ .../actions/builtin/github/inputProperties.ts | 7 +++++++ .../src/scaffolder/actions/builtin/helpers.ts | 3 +++ .../actions/builtin/publish/github.test.ts | 14 ++++++++++++++ .../scaffolder/actions/builtin/publish/github.ts | 5 +++++ 9 files changed, 57 insertions(+) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index fd5af19fe2..40a0ec11a0 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -207,6 +207,7 @@ export function createGithubRepoCreateAction(options: { | undefined; requiredStatusCheckContexts?: string[] | undefined; requireBranchesToBeUpToDate?: boolean | undefined; + requiredConversationResolution?: boolean | undefined; repoVisibility?: 'internal' | 'private' | 'public' | undefined; collaborators?: | ( @@ -253,6 +254,7 @@ export function createGithubRepoPushAction(options: { | undefined; requiredStatusCheckContexts?: string[] | undefined; requireBranchesToBeUpToDate?: boolean | undefined; + requiredConversationResolution?: boolean | undefined; sourcePath?: string | undefined; token?: string | undefined; }>; @@ -392,6 +394,7 @@ export function createPublishGithubAction(options: { dismissStaleReviews?: boolean | undefined; requiredStatusCheckContexts?: string[] | undefined; requireBranchesToBeUpToDate?: boolean | undefined; + requiredConversationResolution?: boolean | undefined; repoVisibility?: 'internal' | 'private' | 'public' | undefined; collaborators?: | ( diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts index 760f42eade..4f2cf4a71e 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts @@ -59,6 +59,7 @@ export function createGithubRepoCreateAction(options: { }; requiredStatusCheckContexts?: string[]; requireBranchesToBeUpToDate?: boolean; + requiredConversationResolution?: boolean; repoVisibility?: 'private' | 'internal' | 'public'; collaborators?: Array< | { @@ -93,6 +94,8 @@ export function createGithubRepoCreateAction(options: { bypassPullRequestAllowances: inputProps.bypassPullRequestAllowances, requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts, requireBranchesToBeUpToDate: inputProps.requireBranchesToBeUpToDate, + requiredConversationResolution: + inputProps.requiredConversationResolution, repoVisibility: inputProps.repoVisibility, deleteBranchOnMerge: inputProps.deleteBranchOnMerge, allowMergeCommit: inputProps.allowMergeCommit, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts index 46f33a823d..e7afc26fb8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts @@ -284,6 +284,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -305,6 +306,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: true, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -326,6 +328,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -350,6 +353,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -371,6 +375,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -392,6 +397,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: false, dismissStaleReviews: false, }); @@ -416,6 +422,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -426,6 +433,7 @@ describe('github:repo:push', () => { ...mockContext.input, requiredStatusCheckContexts: ['statusCheck'], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, }, }); @@ -438,6 +446,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: ['statusCheck'], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -460,6 +469,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: ['statusCheck'], requireBranchesToBeUpToDate: false, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -470,6 +480,7 @@ describe('github:repo:push', () => { ...mockContext.input, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, }, }); @@ -482,6 +493,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -525,6 +537,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -546,6 +559,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: true, }); @@ -567,6 +581,7 @@ describe('github:repo:push', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.ts index 4c931e029c..9d470790fa 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.ts @@ -59,6 +59,7 @@ export function createGithubRepoPushAction(options: { | undefined; requiredStatusCheckContexts?: string[]; requireBranchesToBeUpToDate?: boolean; + requiredConversationResolution?: boolean; sourcePath?: string; token?: string; }>({ @@ -76,6 +77,8 @@ export function createGithubRepoPushAction(options: { requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts, bypassPullRequestAllowances: inputProps.bypassPullRequestAllowances, requireBranchesToBeUpToDate: inputProps.requireBranchesToBeUpToDate, + requiredConversationResolution: + inputProps.requiredConversationResolution, defaultBranch: inputProps.defaultBranch, protectDefaultBranch: inputProps.protectDefaultBranch, protectEnforceAdmins: inputProps.protectEnforceAdmins, @@ -108,6 +111,7 @@ export function createGithubRepoPushAction(options: { bypassPullRequestAllowances, requiredStatusCheckContexts = [], requireBranchesToBeUpToDate = true, + requiredConversationResolution = false, token: providedToken, } = ctx.input; @@ -146,6 +150,7 @@ export function createGithubRepoPushAction(options: { bypassPullRequestAllowances, requiredStatusCheckContexts, requireBranchesToBeUpToDate, + requiredConversationResolution, config, ctx.logger, gitCommitMessage, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts index 4dc7034f18..216a94ac57 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts @@ -258,6 +258,7 @@ export async function initRepoPushAndProtect( | undefined, requiredStatusCheckContexts: string[], requireBranchesToBeUpToDate: boolean, + requiredConversationResolution: boolean, config: Config, logger: any, gitCommitMessage?: string, @@ -303,6 +304,7 @@ export async function initRepoPushAndProtect( requireCodeOwnerReviews, requiredStatusCheckContexts, requireBranchesToBeUpToDate, + requiredConversationResolution, enforceAdmins: protectEnforceAdmins, dismissStaleReviews: dismissStaleReviews, }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts index 6c3bebf47e..a99a3030ac 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts @@ -58,6 +58,12 @@ const requireBranchesToBeUpToDate = { description: `Require branches to be up to date before merging. The default value is 'true'`, type: 'boolean', }; +const requiredConversationResolution = { + title: 'Required Conversation Resolution', + description: + 'Requires all conversations on code to be resolved before a pull request can be merged into this branch', + type: 'boolean', +}; const repoVisibility = { title: 'Repository Visibility', type: 'string', @@ -216,6 +222,7 @@ export { requireCodeOwnerReviews }; export { dismissStaleReviews }; export { requiredStatusCheckContexts }; export { requireBranchesToBeUpToDate }; +export { requiredConversationResolution }; export { sourcePath }; export { token }; export { topics }; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts index a7d29ec756..74e5d4580b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts @@ -191,6 +191,7 @@ type BranchProtectionOptions = { apps?: string[]; }; requireBranchesToBeUpToDate?: boolean; + requiredConversationResolution?: boolean; defaultBranch?: string; enforceAdmins?: boolean; dismissStaleReviews?: boolean; @@ -205,6 +206,7 @@ export const enableBranchProtectionOnDefaultRepoBranch = async ({ bypassPullRequestAllowances, requiredStatusCheckContexts = [], requireBranchesToBeUpToDate = true, + requiredConversationResolution = false, defaultBranch = 'master', enforceAdmins = true, dismissStaleReviews = false, @@ -237,6 +239,7 @@ export const enableBranchProtectionOnDefaultRepoBranch = async ({ bypass_pull_request_allowances: bypassPullRequestAllowances, dismiss_stale_reviews: dismissStaleReviews, }, + required_conversation_resolution: requiredConversationResolution, }); } catch (e) { assertError(e); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts index b5bda4c5d0..99a8753452 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts @@ -670,6 +670,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -691,6 +692,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: true, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -712,6 +714,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -739,6 +742,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -760,6 +764,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: false, dismissStaleReviews: false, }); @@ -781,6 +786,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -808,6 +814,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -818,6 +825,7 @@ describe('publish:github', () => { ...mockContext.input, requiredStatusCheckContexts: ['statusCheck'], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, }, }); @@ -830,6 +838,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: ['statusCheck'], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -852,6 +861,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: ['statusCheck'], requireBranchesToBeUpToDate: false, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -873,6 +883,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -955,6 +966,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); @@ -976,6 +988,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: true, }); @@ -997,6 +1010,7 @@ describe('publish:github', () => { requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, enforceAdmins: true, dismissStaleReviews: false, }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts index 1d3cce8067..e246234d2c 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts @@ -71,6 +71,7 @@ export function createPublishGithubAction(options: { dismissStaleReviews?: boolean; requiredStatusCheckContexts?: string[]; requireBranchesToBeUpToDate?: boolean; + requiredConversationResolution?: boolean; repoVisibility?: 'private' | 'internal' | 'public'; collaborators?: Array< | { @@ -107,6 +108,8 @@ export function createPublishGithubAction(options: { dismissStaleReviews: inputProps.dismissStaleReviews, requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts, requireBranchesToBeUpToDate: inputProps.requireBranchesToBeUpToDate, + requiredConversationResolution: + inputProps.requiredConversationResolution, repoVisibility: inputProps.repoVisibility, defaultBranch: inputProps.defaultBranch, protectDefaultBranch: inputProps.protectDefaultBranch, @@ -144,6 +147,7 @@ export function createPublishGithubAction(options: { bypassPullRequestAllowances, requiredStatusCheckContexts = [], requireBranchesToBeUpToDate = true, + requiredConversationResolution = false, repoVisibility = 'private', defaultBranch = 'master', protectDefaultBranch = true, @@ -211,6 +215,7 @@ export function createPublishGithubAction(options: { bypassPullRequestAllowances, requiredStatusCheckContexts, requireBranchesToBeUpToDate, + requiredConversationResolution, config, ctx.logger, gitCommitMessage, From a20a0ea69829695434d028c2d7916af281b5b125 Mon Sep 17 00:00:00 2001 From: Kyle Leonhard Date: Tue, 13 Dec 2022 15:55:07 -0800 Subject: [PATCH 2/5] Add changeset Signed-off-by: Kyle Leonhard --- .changeset/healthy-shrimps-notice.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/healthy-shrimps-notice.md diff --git a/.changeset/healthy-shrimps-notice.md b/.changeset/healthy-shrimps-notice.md new file mode 100644 index 0000000000..cca15de504 --- /dev/null +++ b/.changeset/healthy-shrimps-notice.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +Add option to require Github conversation resolution From bd74fe12c0356aebf7e6993c6afc79f65336dab8 Mon Sep 17 00:00:00 2001 From: Kyle Leonhard Date: Wed, 14 Dec 2022 09:40:09 -0800 Subject: [PATCH 3/5] Update .changeset/healthy-shrimps-notice.md Co-authored-by: Johan Haals Signed-off-by: Kyle Leonhard --- .changeset/healthy-shrimps-notice.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/healthy-shrimps-notice.md b/.changeset/healthy-shrimps-notice.md index cca15de504..2b06935d64 100644 --- a/.changeset/healthy-shrimps-notice.md +++ b/.changeset/healthy-shrimps-notice.md @@ -2,4 +2,4 @@ '@backstage/plugin-scaffolder-backend': minor --- -Add option to require Github conversation resolution +Added `requireConversationResolution` template option to `github:repo:create`, `github:repo:push` and `publish:github` From e0e49bb0b23d2e48bc40ba90d863852f6bcd413a Mon Sep 17 00:00:00 2001 From: Kyle Leonhard Date: Wed, 14 Dec 2022 09:55:45 -0800 Subject: [PATCH 4/5] Add tests Signed-off-by: Kyle Leonhard --- .../builtin/github/githubRepoPush.test.ts | 69 ++++++++++++++++++ .../actions/builtin/publish/github.test.ts | 71 +++++++++++++++++++ 2 files changed, 140 insertions(+) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts index e7afc26fb8..f8b45093e6 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts @@ -586,4 +586,73 @@ describe('github:repo:push', () => { dismissStaleReviews: false, }); }); + + it('should call enableBranchProtectionOnDefaultRepoBranch with the correct values of requiredConversationResolution', async () => { + mockOctokit.rest.repos.get.mockResolvedValue({ + data: { + clone_url: 'https://github.com/clone/url.git', + html_url: 'https://github.com/html/url', + }, + }); + + await action.handler(mockContext); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repository', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, + enforceAdmins: true, + dismissStaleReviews: false, + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + requiredConversationResolution: true, + }, + }); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repository', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + requireBranchesToBeUpToDate: true, + requiredConversationResolution: true, + enforceAdmins: true, + dismissStaleReviews: false, + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + requiredConversationResolution: false, + }, + }); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repository', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, + enforceAdmins: true, + dismissStaleReviews: false, + }); + }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts index 99a8753452..fa3b3c9b45 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts @@ -1001,6 +1001,77 @@ describe('publish:github', () => { }, }); + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repo', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, + enforceAdmins: true, + dismissStaleReviews: false, + }); + }); + it('should call enableBranchProtectionOnDefaultRepoBranch with the correct values of requiredConversationResolution', async () => { + mockOctokit.rest.users.getByUsername.mockResolvedValue({ + data: { type: 'User' }, + }); + + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + data: { + name: 'repo', + }, + }); + + await action.handler(mockContext); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repo', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + requireBranchesToBeUpToDate: true, + requiredConversationResolution: false, + enforceAdmins: true, + dismissStaleReviews: false, + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + requiredConversationResolution: true, + }, + }); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repo', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + requireBranchesToBeUpToDate: true, + requiredConversationResolution: true, + enforceAdmins: true, + dismissStaleReviews: false, + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + requiredConversationResolution: false, + }, + }); + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ owner: 'owner', client: mockOctokit, From dbafba6304ef3e7c6cb0d67abe32d8682619fe22 Mon Sep 17 00:00:00 2001 From: Kyle Leonhard Date: Thu, 15 Dec 2022 09:01:04 -0800 Subject: [PATCH 5/5] Update .changeset/healthy-shrimps-notice.md Co-authored-by: Johan Haals Signed-off-by: Kyle Leonhard --- .changeset/healthy-shrimps-notice.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/healthy-shrimps-notice.md b/.changeset/healthy-shrimps-notice.md index 2b06935d64..2c8e894e8a 100644 --- a/.changeset/healthy-shrimps-notice.md +++ b/.changeset/healthy-shrimps-notice.md @@ -2,4 +2,4 @@ '@backstage/plugin-scaffolder-backend': minor --- -Added `requireConversationResolution` template option to `github:repo:create`, `github:repo:push` and `publish:github` +Added `requiredConversationResolution` template option to `github:repo:create`, `github:repo:push` and `publish:github`