summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--integrations/integration_test.go11
-rw-r--r--integrations/internal_test.go45
-rw-r--r--routers/private/branch.go2
-rw-r--r--routers/private/internal.go2
4 files changed, 53 insertions, 7 deletions
diff --git a/integrations/integration_test.go b/integrations/integration_test.go
index 6696ff65fc..4a809403bd 100644
--- a/integrations/integration_test.go
+++ b/integrations/integration_test.go
@@ -94,11 +94,12 @@ func initIntegrationTest() {
if err != nil {
log.Fatalf("db.Query: %v", err)
}
- if rows.Next() {
- break // database already exists
- }
- if _, err = db.Exec("CREATE DATABASE testgitea"); err != nil {
- log.Fatalf("db.Exec: %v", err)
+ defer rows.Close()
+
+ if !rows.Next() {
+ if _, err = db.Exec("CREATE DATABASE testgitea"); err != nil {
+ log.Fatalf("db.Exec: %v", err)
+ }
}
}
routers.GlobalInit()
diff --git a/integrations/internal_test.go b/integrations/internal_test.go
new file mode 100644
index 0000000000..12d6fc8dc9
--- /dev/null
+++ b/integrations/internal_test.go
@@ -0,0 +1,45 @@
+// 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 (
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "net/url"
+ "testing"
+
+ "code.gitea.io/gitea/models"
+ "code.gitea.io/gitea/modules/setting"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func assertProtectedBranch(t *testing.T, repoID int64, branchName string, isErr, canPush bool) {
+ reqURL := fmt.Sprintf("/api/internal/branch/%d/%s", repoID, url.QueryEscape(branchName))
+ req, err := http.NewRequest("GET", reqURL, nil)
+ t.Log(reqURL)
+ req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", setting.InternalToken))
+
+ assert.NoError(t, err)
+ resp := MakeRequest(req)
+ if isErr {
+ assert.EqualValues(t, 500, resp.HeaderCode)
+ } else {
+ assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
+ var branch models.ProtectedBranch
+ t.Log(string(resp.Body))
+ assert.NoError(t, json.Unmarshal(resp.Body, &branch))
+ assert.Equal(t, canPush, branch.CanPush)
+ }
+}
+
+func TestInternal_GetProtectedBranch(t *testing.T) {
+ prepareTestEnv(t)
+
+ assertProtectedBranch(t, 1, "master", false, true)
+ assertProtectedBranch(t, 1, "dev", false, true)
+ assertProtectedBranch(t, 1, "lunny/dev", false, true)
+}
diff --git a/routers/private/branch.go b/routers/private/branch.go
index e74087950e..8e42f73039 100644
--- a/routers/private/branch.go
+++ b/routers/private/branch.go
@@ -13,7 +13,7 @@ import (
// GetProtectedBranchBy get protected branch information
func GetProtectedBranchBy(ctx *macaron.Context) {
repoID := ctx.ParamsInt64(":id")
- branchName := ctx.Params(":branch")
+ branchName := ctx.Params("*")
protectBranch, err := models.GetProtectedBranchBy(repoID, branchName)
if err != nil {
ctx.JSON(500, map[string]interface{}{
diff --git a/routers/private/internal.go b/routers/private/internal.go
index f663306e92..3e7233226a 100644
--- a/routers/private/internal.go
+++ b/routers/private/internal.go
@@ -42,6 +42,6 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Group("/", func() {
m.Post("/ssh/:id/update", UpdatePublicKey)
m.Post("/push/update", PushUpdate)
- m.Get("/branch/:id/:branch", GetProtectedBranchBy)
+ m.Get("/branch/:id/*", GetProtectedBranchBy)
}, CheckInternalToken)
}