mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package middleware
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/Unknwon/macaron"
|
|
"github.com/macaron-contrib/session"
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
)
|
|
|
|
type scenarioContext struct {
|
|
m *macaron.Macaron
|
|
context *Context
|
|
resp *httptest.ResponseRecorder
|
|
}
|
|
|
|
func (sc *scenarioContext) PerformGet(url string) {
|
|
req, err := http.NewRequest("GET", "/", nil)
|
|
So(err, ShouldBeNil)
|
|
sc.m.ServeHTTP(sc.resp, req)
|
|
}
|
|
|
|
type scenarioFunc func(c *scenarioContext)
|
|
|
|
func middlewareScenario(desc string, fn scenarioFunc) {
|
|
sc := &scenarioContext{}
|
|
|
|
sc.m = macaron.New()
|
|
sc.m.Use(GetContextHandler())
|
|
// mock out gc goroutine
|
|
startSessionGC = func() {}
|
|
sc.m.Use(Sessioner(&session.Options{}))
|
|
|
|
sc.m.Get("/", func(c *Context) {
|
|
sc.context = c
|
|
})
|
|
|
|
sc.resp = httptest.NewRecorder()
|
|
fn(sc)
|
|
}
|
|
|
|
func TestMiddlewareContext(t *testing.T) {
|
|
|
|
Convey("Given grafana context", t, func() {
|
|
middlewareScenario("middleware should add context to injector", func(sc *scenarioContext) {
|
|
sc.PerformGet("/")
|
|
So(sc.context, ShouldNotBeNil)
|
|
})
|
|
|
|
middlewareScenario("Default middleware should allow get request", func(sc *scenarioContext) {
|
|
sc.PerformGet("/")
|
|
So(sc.resp.Code, ShouldEqual, 200)
|
|
})
|
|
|
|
})
|
|
}
|