diff --git a/integrations/branches_test.go b/integrations/branches_test.go new file mode 100644 index 000000000000..543b57ec50f4 --- /dev/null +++ b/integrations/branches_test.go @@ -0,0 +1,29 @@ +package integrations + +import ( + "fmt" + "net/http" + "testing" + + "github.com/stretchr/testify/assert" +) + +func assertDeleteBranch(t *testing.T, session *TestSession, repoPath, branchName string, success bool) { + req, err := http.NewRequest("POST", fmt.Sprintf("/%s/branches/%s/delete", repoPath, branchName), nil) + assert.NoError(t, err) + resp := session.MakeRequest(t, req) + if success { + assert.EqualValues(t, http.StatusOK, resp.HeaderCode) + } else { + assert.EqualValues(t, 400, resp.HeaderCode) + } +} + +func TestDeleteBranches(t *testing.T) { + prepareTestEnv(t) + + session := loginUser(t, "user2", "password") + assertDeleteBranch(t, session, "user2/repo1", "master", false) + assertDeleteBranch(t, session, "user2/repo1", "dev", false) + assertDeleteBranch(t, session, "user2/repo1", "lunny/test", false) +} diff --git a/routers/repo/branch.go b/routers/repo/branch.go index d040f2a560b7..17e43b0fc98b 100644 --- a/routers/repo/branch.go +++ b/routers/repo/branch.go @@ -36,7 +36,7 @@ func Branches(ctx *context.Context) { // DeleteBranchPost responses for delete merged branch func DeleteBranchPost(ctx *context.Context) { - branchName := ctx.Params(":name") + branchName := ctx.Params("*") commitID := ctx.Query("commit") defer func() { diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 5cb561b640f5..117f02a7103d 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -550,8 +550,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/milestones", repo.Milestones) }, context.RepoRef()) - // m.Get("/branches", repo.Branches) - m.Post("/branches/:name/delete", reqSignIn, reqRepoWriter, repo.MustBeNotBare, repo.DeleteBranchPost) + m.Post("/branches/*/delete", reqSignIn, reqRepoWriter, repo.MustBeNotBare, repo.DeleteBranchPost) m.Group("/wiki", func() { m.Get("/?:page", repo.Wiki)