| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package middleware
- import (
- "encoding/json"
- "net/http"
- "net/http/httptest"
- . "github.com/smartystreets/goconvey/convey"
- "gopkg.in/macaron.v1"
- "github.com/grafana/grafana/pkg/infra/remotecache"
- "github.com/grafana/grafana/pkg/models"
- "github.com/grafana/grafana/pkg/services/auth"
- "github.com/grafana/grafana/pkg/setting"
- )
- type scenarioContext struct {
- m *macaron.Macaron
- context *models.ReqContext
- resp *httptest.ResponseRecorder
- apiKey string
- authHeader string
- tokenSessionCookie string
- respJson map[string]interface{}
- handlerFunc handlerFunc
- defaultHandler macaron.Handler
- url string
- userAuthTokenService *auth.FakeUserAuthTokenService
- remoteCacheService *remotecache.RemoteCache
- req *http.Request
- }
- func (sc *scenarioContext) withValidApiKey() *scenarioContext {
- sc.apiKey = "eyJrIjoidjVuQXdwTWFmRlA2em5hUzR1cmhkV0RMUzU1MTFNNDIiLCJuIjoiYXNkIiwiaWQiOjF9"
- return sc
- }
- func (sc *scenarioContext) withTokenSessionCookie(unhashedToken string) *scenarioContext {
- sc.tokenSessionCookie = unhashedToken
- return sc
- }
- func (sc *scenarioContext) withAuthorizationHeader(authHeader string) *scenarioContext {
- sc.authHeader = authHeader
- return sc
- }
- func (sc *scenarioContext) fakeReq(method, url string) *scenarioContext {
- sc.resp = httptest.NewRecorder()
- req, err := http.NewRequest(method, url, nil)
- So(err, ShouldBeNil)
- sc.req = req
- return sc
- }
- func (sc *scenarioContext) fakeReqWithParams(method, url string, queryParams map[string]string) *scenarioContext {
- sc.resp = httptest.NewRecorder()
- req, err := http.NewRequest(method, url, nil)
- q := req.URL.Query()
- for k, v := range queryParams {
- q.Add(k, v)
- }
- req.URL.RawQuery = q.Encode()
- So(err, ShouldBeNil)
- sc.req = req
- return sc
- }
- func (sc *scenarioContext) handler(fn handlerFunc) *scenarioContext {
- sc.handlerFunc = fn
- return sc
- }
- func (sc *scenarioContext) exec() {
- if sc.apiKey != "" {
- sc.req.Header.Add("Authorization", "Bearer "+sc.apiKey)
- }
- if sc.authHeader != "" {
- sc.req.Header.Add("Authorization", sc.authHeader)
- }
- if sc.tokenSessionCookie != "" {
- sc.req.AddCookie(&http.Cookie{
- Name: setting.LoginCookieName,
- Value: sc.tokenSessionCookie,
- })
- }
- sc.m.ServeHTTP(sc.resp, sc.req)
- if sc.resp.Header().Get("Content-Type") == "application/json; charset=UTF-8" {
- err := json.NewDecoder(sc.resp.Body).Decode(&sc.respJson)
- So(err, ShouldBeNil)
- }
- }
- type scenarioFunc func(c *scenarioContext)
- type handlerFunc func(c *models.ReqContext)
|