Skip to content

Commit cc76add

Browse files
committed
Allow updating branch protection context list even when status checks are disabled
Fixes: #26333
1 parent c1c83db commit cc76add

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

routers/api/v1/repo/branch.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,8 @@ func EditBranchProtection(ctx *context.APIContext) {
768768
if form.EnableStatusCheck != nil {
769769
protectBranch.EnableStatusCheck = *form.EnableStatusCheck
770770
}
771-
if protectBranch.EnableStatusCheck {
771+
772+
if form.StatusCheckContexts != nil {
772773
protectBranch.StatusCheckContexts = form.StatusCheckContexts
773774
}
774775

tests/integration/api_branch_test.go

+21-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func testAPIGetBranch(t *testing.T, branchName string, exists bool) {
3131
assert.True(t, branch.UserCanMerge)
3232
}
3333

34-
func testAPIGetBranchProtection(t *testing.T, branchName string, expectedHTTPStatus int) {
34+
func testAPIGetBranchProtection(t *testing.T, branchName string, expectedHTTPStatus int) *api.BranchProtection {
3535
token := getUserToken(t, "user2", auth_model.AccessTokenScopeReadRepository)
3636
req := NewRequestf(t, "GET", "/api/v1/repos/user2/repo1/branch_protections/%s?token=%s", branchName, token)
3737
resp := MakeRequest(t, req, expectedHTTPStatus)
@@ -40,7 +40,9 @@ func testAPIGetBranchProtection(t *testing.T, branchName string, expectedHTTPSta
4040
var branchProtection api.BranchProtection
4141
DecodeJSON(t, resp, &branchProtection)
4242
assert.EqualValues(t, branchName, branchProtection.RuleName)
43+
return &branchProtection
4344
}
45+
return nil
4446
}
4547

4648
func testAPICreateBranchProtection(t *testing.T, branchName string, expectedHTTPStatus int) {
@@ -186,6 +188,24 @@ func TestAPIBranchProtection(t *testing.T) {
186188
EnablePush: true,
187189
}, http.StatusOK)
188190

191+
// enable status checks, require the "test1" check to pass
192+
testAPIEditBranchProtection(t, "master", &api.BranchProtection{
193+
EnableStatusCheck: true,
194+
StatusCheckContexts: []string{"test1"},
195+
}, http.StatusOK)
196+
bp := testAPIGetBranchProtection(t, "master", http.StatusOK)
197+
assert.Equal(t, true, bp.EnableStatusCheck)
198+
assert.Equal(t, []string{"test1"}, bp.StatusCheckContexts)
199+
200+
// disable status checks, clear the list of required checks
201+
testAPIEditBranchProtection(t, "master", &api.BranchProtection{
202+
EnableStatusCheck: false,
203+
StatusCheckContexts: []string{},
204+
}, http.StatusOK)
205+
bp = testAPIGetBranchProtection(t, "master", http.StatusOK)
206+
assert.Equal(t, false, bp.EnableStatusCheck)
207+
assert.Equal(t, []string{}, bp.StatusCheckContexts)
208+
189209
testAPIDeleteBranchProtection(t, "master", http.StatusNoContent)
190210

191211
// Test branch deletion

0 commit comments

Comments
 (0)