Add tests to cover enableBranchProtectionOnDefaultRepoBranch parameters

Added new tests to cover requiredApprovingReviewCount, requiredCommitSigning, and restrictions.

Signed-off-by: Trevor Grieger <tgrieger@salesforce.com>
This commit is contained in:
Trevor Grieger
2023-01-11 14:49:31 -05:00
parent 2f893e9ca3
commit 35c6f2b741
@@ -1270,4 +1270,556 @@ describe('publish:github', () => {
requiredCommitSigning: false,
});
});
it('should call enableBranchProtectionOnDefaultRepoBranch with the correct values of requiredApprovingReviewCount', 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,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
requiredApprovingReviewCount: 2,
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 2,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
requiredApprovingReviewCount: 0,
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 0,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
});
it('should call enableBranchProtectionOnDefaultRepoBranch with the correct values of restrictions', 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,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
restrictions: {
users: ['user'],
teams: [],
},
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: {
users: ['user'],
teams: [],
},
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
restrictions: {
users: [],
teams: ['team'],
},
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: {
users: [],
teams: ['team'],
},
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
restrictions: {
users: [],
teams: [],
apps: ['app'],
},
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: {
users: [],
teams: [],
apps: ['app'],
},
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
restrictions: {
users: ['user'],
teams: ['team'],
apps: ['app'],
},
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: {
users: ['user'],
teams: ['team'],
apps: ['app'],
},
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
restrictions: {
users: ['user1', 'user2'],
teams: ['team1', 'team2'],
apps: ['app1', 'app2'],
},
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: {
users: ['user1', 'user2'],
teams: ['team1', 'team2'],
apps: ['app1', 'app2'],
},
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
});
it('should call enableBranchProtectionOnDefaultRepoBranch with the correct values of requiredCommitSigning', 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,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
requiredCommitSigning: false,
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
requiredCommitSigning: true,
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: true,
});
});
it('should call enableBranchProtectionOnDefaultRepoBranch with the correct values of bypassPullRequestAllowances', 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,
bypassPullRequestAllowances: undefined,
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
bypassPullRequestAllowances: {
users: ['user'],
},
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: {
users: ['user'],
},
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
bypassPullRequestAllowances: {
teams: ['team'],
},
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: {
teams: ['team'],
},
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
bypassPullRequestAllowances: {
apps: ['app'],
},
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: {
apps: ['app'],
},
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
bypassPullRequestAllowances: {
users: ['user'],
teams: ['team'],
apps: ['app'],
},
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: {
users: ['user'],
teams: ['team'],
apps: ['app'],
},
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
await action.handler({
...mockContext,
input: {
...mockContext.input,
bypassPullRequestAllowances: {
users: ['user1', 'user2'],
teams: ['team1', 'team2'],
apps: ['app1', 'app2'],
},
},
});
expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({
owner: 'owner',
client: mockOctokit,
repoName: 'repo',
logger: mockContext.logger,
defaultBranch: 'master',
requireCodeOwnerReviews: false,
bypassPullRequestAllowances: {
users: ['user1', 'user2'],
teams: ['team1', 'team2'],
apps: ['app1', 'app2'],
},
requiredApprovingReviewCount: 1,
restrictions: undefined,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
requiredCommitSigning: false,
});
});
});