mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-04-15 01:41:56 +00:00
Fix RepoHandler
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
package testing
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
. "github.com/drone/drone/pkg/database/testing"
|
||||
"github.com/drone/drone/pkg/handler"
|
||||
. "github.com/drone/drone/pkg/model"
|
||||
|
||||
"github.com/bmizerany/pat"
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
)
|
||||
|
||||
func TestRepoHandler(t *testing.T) {
|
||||
Setup()
|
||||
defer Teardown()
|
||||
|
||||
m := pat.New()
|
||||
|
||||
Convey("Repo Handler", t, func() {
|
||||
m.Get("/:host/:owner/:name", handler.RepoHandler(dummyUserRepo))
|
||||
Convey("Public repo can be viewed without login", func() {
|
||||
req, err := http.NewRequest("GET", "/bitbucket.org/drone/test", nil)
|
||||
So(err, ShouldBeNil)
|
||||
rec := httptest.NewRecorder()
|
||||
m.ServeHTTP(rec, req)
|
||||
So(rec.Code, ShouldEqual, 200)
|
||||
})
|
||||
Convey("Public repo can be viewed by another user", func() {
|
||||
req, err := http.NewRequest("GET", "/bitbucket.org/drone/test", nil)
|
||||
So(err, ShouldBeNil)
|
||||
rec := httptest.NewRecorder()
|
||||
setUserSession(rec, req, "cavepig@gmail.com")
|
||||
m.ServeHTTP(rec, req)
|
||||
So(rec.Code, ShouldEqual, 200)
|
||||
})
|
||||
|
||||
Convey("Private repo can not be viewed without login", func() {
|
||||
req, err := http.NewRequest("GET", "/github.com/drone/drone", nil)
|
||||
So(err, ShouldBeNil)
|
||||
rec := httptest.NewRecorder()
|
||||
m.ServeHTTP(rec, req)
|
||||
So(rec.Code, ShouldEqual, 303)
|
||||
})
|
||||
Convey("Private repo can not be viewed by a non team member", func() {
|
||||
req, err := http.NewRequest("GET", "/github.com/drone/drone", nil)
|
||||
So(err, ShouldBeNil)
|
||||
rec := httptest.NewRecorder()
|
||||
setUserSession(rec, req, "rick@el.to.ro")
|
||||
m.ServeHTTP(rec, req)
|
||||
So(rec.Code, ShouldEqual, 404)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func dummyUserRepo(w http.ResponseWriter, r *http.Request, u *User, repo *Repo) error {
|
||||
return handler.RenderText(w, http.StatusText(http.StatusOK), http.StatusOK)
|
||||
}
|
||||
|
||||
func setUserSession(w http.ResponseWriter, r *http.Request, username string) {
|
||||
handler.SetCookie(w, r, "_sess", username)
|
||||
resp := http.Response{Header: w.Header()}
|
||||
for _, v := range resp.Cookies() {
|
||||
r.AddCookie(v)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user