dashboard_acl_test.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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 and a user", func() {
  11. currentUser := createUser("viewer", "Viewer", false)
  12. savedFolder := insertTestDashboard("1 test dash folder", 1, 0, true, "prod", "webapp")
  13. childDash := insertTestDashboard("2 test dash", 1, savedFolder.Id, false, "prod", "webapp")
  14. Convey("When adding dashboard permission with userId and userGroupId set to 0", func() {
  15. err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{
  16. OrgId: 1,
  17. DashboardId: savedFolder.Id,
  18. Permissions: m.PERMISSION_EDIT,
  19. })
  20. So(err, ShouldEqual, m.ErrDashboardPermissionUserOrUserGroupEmpty)
  21. })
  22. Convey("Should be able to add dashboard permission", func() {
  23. err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{
  24. OrgId: 1,
  25. UserId: currentUser.Id,
  26. DashboardId: savedFolder.Id,
  27. Permissions: m.PERMISSION_EDIT,
  28. })
  29. So(err, ShouldBeNil)
  30. q1 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  31. err = GetDashboardPermissions(q1)
  32. So(err, ShouldBeNil)
  33. So(q1.Result[0].DashboardId, ShouldEqual, savedFolder.Id)
  34. So(q1.Result[0].Permissions, ShouldEqual, m.PERMISSION_EDIT)
  35. So(q1.Result[0].PermissionName, ShouldEqual, "Edit")
  36. So(q1.Result[0].UserId, ShouldEqual, currentUser.Id)
  37. So(q1.Result[0].UserLogin, ShouldEqual, currentUser.Login)
  38. So(q1.Result[0].UserEmail, ShouldEqual, currentUser.Email)
  39. Convey("Should update hasAcl field to true for dashboard folder and its children", func() {
  40. q2 := &m.GetDashboardsQuery{DashboardIds: []int64{savedFolder.Id, childDash.Id}}
  41. err := GetDashboards(q2)
  42. So(err, ShouldBeNil)
  43. So(q2.Result[0].HasAcl, ShouldBeTrue)
  44. So(q2.Result[1].HasAcl, ShouldBeTrue)
  45. })
  46. Convey("Should be able to update an existing permission", func() {
  47. err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{
  48. OrgId: 1,
  49. UserId: 1,
  50. DashboardId: savedFolder.Id,
  51. Permissions: m.PERMISSION_READ_ONLY_EDIT,
  52. })
  53. So(err, ShouldBeNil)
  54. q3 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  55. err = GetDashboardPermissions(q3)
  56. So(err, ShouldBeNil)
  57. So(len(q3.Result), ShouldEqual, 1)
  58. So(q3.Result[0].DashboardId, ShouldEqual, savedFolder.Id)
  59. So(q3.Result[0].Permissions, ShouldEqual, m.PERMISSION_READ_ONLY_EDIT)
  60. So(q3.Result[0].UserId, ShouldEqual, 1)
  61. })
  62. Convey("Should be able to delete an existing permission", func() {
  63. err := RemoveDashboardPermission(&m.RemoveDashboardPermissionCommand{
  64. OrgId: 1,
  65. UserId: 1,
  66. DashboardId: savedFolder.Id,
  67. })
  68. So(err, ShouldBeNil)
  69. q3 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  70. err = GetDashboardPermissions(q3)
  71. So(err, ShouldBeNil)
  72. So(len(q3.Result), ShouldEqual, 0)
  73. })
  74. })
  75. Convey("Given a user group", func() {
  76. group1 := m.CreateUserGroupCommand{Name: "group1 name", OrgId: 1}
  77. err := CreateUserGroup(&group1)
  78. So(err, ShouldBeNil)
  79. Convey("Should be able to add a user permission for a user group", func() {
  80. err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{
  81. OrgId: 1,
  82. UserGroupId: group1.Result.Id,
  83. DashboardId: savedFolder.Id,
  84. Permissions: m.PERMISSION_EDIT,
  85. })
  86. So(err, ShouldBeNil)
  87. q1 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  88. err = GetDashboardPermissions(q1)
  89. So(err, ShouldBeNil)
  90. So(q1.Result[0].DashboardId, ShouldEqual, savedFolder.Id)
  91. So(q1.Result[0].Permissions, ShouldEqual, m.PERMISSION_EDIT)
  92. So(q1.Result[0].UserGroupId, ShouldEqual, group1.Result.Id)
  93. })
  94. Convey("Should be able to update an existing permission for a user group", func() {
  95. err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{
  96. OrgId: 1,
  97. UserGroupId: group1.Result.Id,
  98. DashboardId: savedFolder.Id,
  99. Permissions: m.PERMISSION_READ_ONLY_EDIT,
  100. })
  101. So(err, ShouldBeNil)
  102. q3 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  103. err = GetDashboardPermissions(q3)
  104. So(err, ShouldBeNil)
  105. So(len(q3.Result), ShouldEqual, 1)
  106. So(q3.Result[0].DashboardId, ShouldEqual, savedFolder.Id)
  107. So(q3.Result[0].Permissions, ShouldEqual, m.PERMISSION_READ_ONLY_EDIT)
  108. So(q3.Result[0].UserGroupId, ShouldEqual, group1.Result.Id)
  109. })
  110. Convey("Should be able to delete an existing permission for a user group", func() {
  111. err := RemoveDashboardPermission(&m.RemoveDashboardPermissionCommand{
  112. OrgId: 1,
  113. UserGroupId: group1.Result.Id,
  114. DashboardId: savedFolder.Id,
  115. })
  116. So(err, ShouldBeNil)
  117. q3 := &m.GetDashboardPermissionsQuery{DashboardId: savedFolder.Id}
  118. err = GetDashboardPermissions(q3)
  119. So(err, ShouldBeNil)
  120. So(len(q3.Result), ShouldEqual, 0)
  121. })
  122. })
  123. })
  124. })
  125. }