auth_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package middleware
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/setting"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. func TestMiddlewareAuth(t *testing.T) {
  8. Convey("Given the grafana middleware", t, func() {
  9. reqSignIn := Auth(&AuthOptions{ReqSignedIn: true})
  10. middlewareScenario(t, "ReqSignIn true and unauthenticated request", func(sc *scenarioContext) {
  11. sc.m.Get("/secure", reqSignIn, sc.defaultHandler)
  12. sc.fakeReq("GET", "/secure").exec()
  13. Convey("Should redirect to login", func() {
  14. So(sc.resp.Code, ShouldEqual, 302)
  15. })
  16. })
  17. middlewareScenario(t, "ReqSignIn true and unauthenticated API request", func(sc *scenarioContext) {
  18. sc.m.Get("/api/secure", reqSignIn, sc.defaultHandler)
  19. sc.fakeReq("GET", "/api/secure").exec()
  20. Convey("Should return 401", func() {
  21. So(sc.resp.Code, ShouldEqual, 401)
  22. })
  23. })
  24. Convey("snapshot public mode or signed in", func() {
  25. middlewareScenario(t, "Snapshot public mode disabled and unauthenticated request should return 401", func(sc *scenarioContext) {
  26. sc.m.Get("/api/snapshot", SnapshotPublicModeOrSignedIn(), sc.defaultHandler)
  27. sc.fakeReq("GET", "/api/snapshot").exec()
  28. So(sc.resp.Code, ShouldEqual, 401)
  29. })
  30. middlewareScenario(t, "Snapshot public mode enabled and unauthenticated request should return 200", func(sc *scenarioContext) {
  31. setting.SnapshotPublicMode = true
  32. sc.m.Get("/api/snapshot", SnapshotPublicModeOrSignedIn(), sc.defaultHandler)
  33. sc.fakeReq("GET", "/api/snapshot").exec()
  34. So(sc.resp.Code, ShouldEqual, 200)
  35. })
  36. })
  37. })
  38. }