guardian_test.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package guardian
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/bus"
  5. m "github.com/grafana/grafana/pkg/models"
  6. . "github.com/smartystreets/goconvey/convey"
  7. )
  8. func TestGuardian(t *testing.T) {
  9. Convey("Given a user with list of dashboards that they have access to", t, func() {
  10. hitList := []int64{1, 2}
  11. var orgId int64 = 1
  12. var userId int64 = 1
  13. Convey("And the user is a Grafana admin", func() {
  14. bus.AddHandler("test", func(query *m.GetSignedInUserQuery) error {
  15. query.Result = &m.SignedInUser{IsGrafanaAdmin: true}
  16. return nil
  17. })
  18. filteredHitlist, err := FilterRestrictedDashboards(hitList, orgId, userId)
  19. So(err, ShouldBeNil)
  20. Convey("should return all dashboards", func() {
  21. So(len(filteredHitlist), ShouldEqual, 2)
  22. So(filteredHitlist[0], ShouldEqual, 1)
  23. So(filteredHitlist[1], ShouldEqual, 2)
  24. })
  25. })
  26. Convey("And the user is an org admin", func() {
  27. bus.AddHandler("test", func(query *m.GetSignedInUserQuery) error {
  28. query.Result = &m.SignedInUser{IsGrafanaAdmin: false, OrgRole: m.ROLE_ADMIN}
  29. return nil
  30. })
  31. filteredHitlist, err := FilterRestrictedDashboards(hitList, orgId, userId)
  32. So(err, ShouldBeNil)
  33. Convey("should return all dashboards", func() {
  34. So(len(filteredHitlist), ShouldEqual, 2)
  35. So(filteredHitlist[0], ShouldEqual, 1)
  36. So(filteredHitlist[1], ShouldEqual, 2)
  37. })
  38. })
  39. Convey("And the user is an editor", func() {
  40. bus.AddHandler("test", func(query *m.GetSignedInUserQuery) error {
  41. query.Result = &m.SignedInUser{IsGrafanaAdmin: false, OrgRole: m.ROLE_EDITOR}
  42. return nil
  43. })
  44. bus.AddHandler("test2", func(query *m.GetAllowedDashboardsQuery) error {
  45. query.Result = []int64{1}
  46. return nil
  47. })
  48. filteredHitlist, err := FilterRestrictedDashboards(hitList, orgId, userId)
  49. So(err, ShouldBeNil)
  50. Convey("should return dashboard that editor has access to", func() {
  51. So(len(filteredHitlist), ShouldEqual, 1)
  52. So(filteredHitlist[0], ShouldEqual, 1)
  53. })
  54. })
  55. })
  56. }