| @@ -0,0 +1,44 @@ | |||||
| // Copyright 2017 The Gitea Authors. All rights reserved. | |||||
| // Use of this source code is governed by a MIT-style | |||||
| // license that can be found in the LICENSE file. | |||||
| package integrations | |||||
| import ( | |||||
| "net/http" | |||||
| "testing" | |||||
| api "code.gitea.io/sdk/gitea" | |||||
| "github.com/stretchr/testify/assert" | |||||
| ) | |||||
| func testAPIGetBranch(t *testing.T, branchName string, exists bool) { | |||||
| prepareTestEnv(t) | |||||
| session := loginUser(t, "user2") | |||||
| req := NewRequestf(t, "GET", "/api/v1/repos/user2/repo1/branches/%s", branchName) | |||||
| resp := session.MakeRequest(t, req) | |||||
| if !exists { | |||||
| assert.EqualValues(t, http.StatusNotFound, resp.HeaderCode) | |||||
| return | |||||
| } | |||||
| assert.EqualValues(t, http.StatusOK, resp.HeaderCode) | |||||
| var branch api.Branch | |||||
| DecodeJSON(t, resp, &branch) | |||||
| assert.EqualValues(t, branchName, branch.Name) | |||||
| } | |||||
| func TestAPIGetBranch(t *testing.T) { | |||||
| for _, test := range []struct { | |||||
| BranchName string | |||||
| Exists bool | |||||
| }{ | |||||
| {"master", true}, | |||||
| {"master/doesnotexist", false}, | |||||
| {"feature/1", true}, | |||||
| {"feature/1/doesnotexist", false}, | |||||
| } { | |||||
| testAPIGetBranch(t, test.BranchName, test.Exists) | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1 @@ | |||||
| 65f1bf27bc3bf70f64657658635e66094edbcb4d | |||||
| @@ -364,7 +364,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
| Post(bind(api.CreateForkOption{}), repo.CreateFork) | Post(bind(api.CreateForkOption{}), repo.CreateFork) | ||||
| m.Group("/branches", func() { | m.Group("/branches", func() { | ||||
| m.Get("", repo.ListBranches) | m.Get("", repo.ListBranches) | ||||
| m.Get("/:branchname", repo.GetBranch) | |||||
| m.Get("/*", context.RepoRef(), repo.GetBranch) | |||||
| }) | }) | ||||
| m.Group("/keys", func() { | m.Group("/keys", func() { | ||||
| m.Combo("").Get(repo.ListDeployKeys). | m.Combo("").Get(repo.ListDeployKeys). | ||||
| @@ -15,7 +15,14 @@ import ( | |||||
| // GetBranch get a branch of a repository | // GetBranch get a branch of a repository | ||||
| // see https://github.com/gogits/go-gogs-client/wiki/Repositories#get-branch | // see https://github.com/gogits/go-gogs-client/wiki/Repositories#get-branch | ||||
| func GetBranch(ctx *context.APIContext) { | func GetBranch(ctx *context.APIContext) { | ||||
| branch, err := ctx.Repo.Repository.GetBranch(ctx.Params(":branchname")) | |||||
| if ctx.Repo.TreePath != "" { | |||||
| // if TreePath != "", then URL contained extra slashes | |||||
| // (i.e. "master/subbranch" instead of "master"), so branch does | |||||
| // not exist | |||||
| ctx.Status(404) | |||||
| return | |||||
| } | |||||
| branch, err := ctx.Repo.Repository.GetBranch(ctx.Repo.BranchName) | |||||
| if err != nil { | if err != nil { | ||||
| if models.IsErrBranchNotExist(err) { | if models.IsErrBranchNotExist(err) { | ||||
| ctx.Error(404, "GetBranch", err) | ctx.Error(404, "GetBranch", err) | ||||