teams_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package teamguardian
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. m "github.com/grafana/grafana/pkg/models"
  5. . "github.com/smartystreets/goconvey/convey"
  6. "testing"
  7. )
  8. func TestUpdateTeam(t *testing.T) {
  9. Convey("Updating a team", t, func() {
  10. bus.ClearBusHandlers()
  11. admin := m.SignedInUser{
  12. UserId: 1,
  13. OrgId: 1,
  14. OrgRole: m.ROLE_ADMIN,
  15. }
  16. editor := m.SignedInUser{
  17. UserId: 2,
  18. OrgId: 1,
  19. OrgRole: m.ROLE_EDITOR,
  20. }
  21. testTeam := m.Team{
  22. Id: 1,
  23. OrgId: 1,
  24. }
  25. Convey("Given an editor and a team he isn't a member of", func() {
  26. Convey("Should not be able to update the team", func() {
  27. bus.AddHandler("test", func(cmd *m.GetTeamMembersQuery) error {
  28. cmd.Result = []*m.TeamMemberDTO{}
  29. return nil
  30. })
  31. err := CanAdmin(bus.GetBus(), testTeam.OrgId, testTeam.Id, &editor)
  32. So(err, ShouldEqual, m.ErrNotAllowedToUpdateTeam)
  33. })
  34. })
  35. Convey("Given an editor and a team he is an admin in", func() {
  36. Convey("Should be able to update the team", func() {
  37. bus.AddHandler("test", func(cmd *m.GetTeamMembersQuery) error {
  38. cmd.Result = []*m.TeamMemberDTO{{
  39. OrgId: testTeam.OrgId,
  40. TeamId: testTeam.Id,
  41. UserId: editor.UserId,
  42. Permission: m.PERMISSION_ADMIN,
  43. }}
  44. return nil
  45. })
  46. err := CanAdmin(bus.GetBus(), testTeam.OrgId, testTeam.Id, &editor)
  47. So(err, ShouldBeNil)
  48. })
  49. })
  50. Convey("Given an editor and a team in another org", func() {
  51. testTeamOtherOrg := m.Team{
  52. Id: 1,
  53. OrgId: 2,
  54. }
  55. Convey("Shouldn't be able to update the team", func() {
  56. bus.AddHandler("test", func(cmd *m.GetTeamMembersQuery) error {
  57. cmd.Result = []*m.TeamMemberDTO{{
  58. OrgId: testTeamOtherOrg.OrgId,
  59. TeamId: testTeamOtherOrg.Id,
  60. UserId: editor.UserId,
  61. Permission: m.PERMISSION_ADMIN,
  62. }}
  63. return nil
  64. })
  65. err := CanAdmin(bus.GetBus(), testTeamOtherOrg.OrgId, testTeamOtherOrg.Id, &editor)
  66. So(err, ShouldEqual, m.ErrNotAllowedToUpdateTeamInDifferentOrg)
  67. })
  68. })
  69. Convey("Given an org admin and a team", func() {
  70. Convey("Should be able to update the team", func() {
  71. err := CanAdmin(bus.GetBus(), testTeam.OrgId, testTeam.Id, &admin)
  72. So(err, ShouldBeNil)
  73. })
  74. })
  75. })
  76. }