dashboard_acl_test.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package sqlstore
  2. import (
  3. "testing"
  4. . "github.com/smartystreets/goconvey/convey"
  5. m "github.com/grafana/grafana/pkg/models"
  6. )
  7. func TestDashboardAclDataAccess(t *testing.T) {
  8. Convey("Testing DB", t, func() {
  9. InitTestDB(t)
  10. Convey("Given a dashboard folder", func() {
  11. savedFolder := insertTestDashboard("1 test dash folder", 1, 0, true, "prod", "webapp")
  12. childDash := insertTestDashboard("2 test dash", 1, savedFolder.Id, false, "prod", "webapp")
  13. Convey("Should be able to add dashboard permission", func() {
  14. err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{
  15. OrgId: 1,
  16. UserId: 1,
  17. DashboardId: savedFolder.Id,
  18. PermissionType: m.PERMISSION_EDIT,
  19. })
  20. So(err, ShouldBeNil)
  21. q1 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  22. err = GetDashboardPermissions(q1)
  23. So(err, ShouldBeNil)
  24. So(q1.Result[0].DashboardId, ShouldEqual, savedFolder.Id)
  25. So(q1.Result[0].Permissions, ShouldEqual, m.PERMISSION_EDIT)
  26. So(q1.Result[0].UserId, ShouldEqual, 1)
  27. Convey("Should update hasAcl field to true for dashboard folder and its children", func() {
  28. q2 := &m.GetDashboardsQuery{DashboardIds: []int64{savedFolder.Id, childDash.Id}}
  29. err := GetDashboards(q2)
  30. So(err, ShouldBeNil)
  31. So(q2.Result[0].HasAcl, ShouldBeTrue)
  32. So(q2.Result[1].HasAcl, ShouldBeTrue)
  33. })
  34. Convey("Should be able to update an existing permission", func() {
  35. err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{
  36. OrgId: 1,
  37. UserId: 1,
  38. DashboardId: savedFolder.Id,
  39. PermissionType: m.PERMISSION_READ_ONLY_EDIT,
  40. })
  41. So(err, ShouldBeNil)
  42. q3 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  43. err = GetDashboardPermissions(q3)
  44. So(err, ShouldBeNil)
  45. So(len(q3.Result), ShouldEqual, 1)
  46. So(q3.Result[0].DashboardId, ShouldEqual, savedFolder.Id)
  47. So(q3.Result[0].Permissions, ShouldEqual, m.PERMISSION_READ_ONLY_EDIT)
  48. So(q3.Result[0].UserId, ShouldEqual, 1)
  49. })
  50. Convey("Should be able to delete an existing permission", func() {
  51. err := RemoveDashboardPermission(&m.RemoveDashboardPermissionCommand{
  52. OrgId: 1,
  53. UserId: 1,
  54. DashboardId: savedFolder.Id,
  55. })
  56. So(err, ShouldBeNil)
  57. q3 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  58. err = GetDashboardPermissions(q3)
  59. So(err, ShouldBeNil)
  60. So(len(q3.Result), ShouldEqual, 0)
  61. })
  62. })
  63. Convey("Given a user group", func() {
  64. group1 := m.CreateUserGroupCommand{Name: "group1 name", OrgId: 1}
  65. err := CreateUserGroup(&group1)
  66. So(err, ShouldBeNil)
  67. Convey("Should be able to add a user permission for a user group", func() {
  68. err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{
  69. OrgId: 1,
  70. UserGroupId: group1.Result.Id,
  71. DashboardId: savedFolder.Id,
  72. PermissionType: m.PERMISSION_EDIT,
  73. })
  74. So(err, ShouldBeNil)
  75. q1 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  76. err = GetDashboardPermissions(q1)
  77. So(err, ShouldBeNil)
  78. So(q1.Result[0].DashboardId, ShouldEqual, savedFolder.Id)
  79. So(q1.Result[0].Permissions, ShouldEqual, m.PERMISSION_EDIT)
  80. So(q1.Result[0].UserGroupId, ShouldEqual, group1.Result.Id)
  81. })
  82. Convey("Should be able to update an existing permission for a user group", func() {
  83. err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{
  84. OrgId: 1,
  85. UserGroupId: group1.Result.Id,
  86. DashboardId: savedFolder.Id,
  87. PermissionType: m.PERMISSION_READ_ONLY_EDIT,
  88. })
  89. So(err, ShouldBeNil)
  90. q3 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  91. err = GetDashboardPermissions(q3)
  92. So(err, ShouldBeNil)
  93. So(len(q3.Result), ShouldEqual, 1)
  94. So(q3.Result[0].DashboardId, ShouldEqual, savedFolder.Id)
  95. So(q3.Result[0].Permissions, ShouldEqual, m.PERMISSION_READ_ONLY_EDIT)
  96. So(q3.Result[0].UserGroupId, ShouldEqual, group1.Result.Id)
  97. })
  98. Convey("Should be able to delete an existing permission for a user group", func() {
  99. err := RemoveDashboardPermission(&m.RemoveDashboardPermissionCommand{
  100. OrgId: 1,
  101. UserGroupId: group1.Result.Id,
  102. DashboardId: savedFolder.Id,
  103. })
  104. So(err, ShouldBeNil)
  105. q3 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  106. err = GetDashboardPermissions(q3)
  107. So(err, ShouldBeNil)
  108. So(len(q3.Result), ShouldEqual, 0)
  109. })
  110. })
  111. })
  112. })
  113. }