org_test.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package sqlstore
  2. import (
  3. "testing"
  4. . "github.com/smartystreets/goconvey/convey"
  5. m "github.com/grafana/grafana/pkg/models"
  6. "github.com/grafana/grafana/pkg/setting"
  7. )
  8. func TestAccountDataAccess(t *testing.T) {
  9. Convey("Testing Account DB Access", t, func() {
  10. InitTestDB(t)
  11. Convey("Given single org mode", func() {
  12. setting.AutoAssignOrg = true
  13. setting.AutoAssignOrgRole = "Viewer"
  14. Convey("Users should be added to default organization", func() {
  15. ac1cmd := m.CreateUserCommand{Login: "ac1", Email: "ac1@test.com", Name: "ac1 name"}
  16. ac2cmd := m.CreateUserCommand{Login: "ac2", Email: "ac2@test.com", Name: "ac2 name"}
  17. err := CreateUser(&ac1cmd)
  18. So(err, ShouldBeNil)
  19. err = CreateUser(&ac2cmd)
  20. So(err, ShouldBeNil)
  21. q1 := m.GetUserOrgListQuery{UserId: ac1cmd.Result.Id}
  22. q2 := m.GetUserOrgListQuery{UserId: ac2cmd.Result.Id}
  23. GetUserOrgList(&q1)
  24. GetUserOrgList(&q2)
  25. So(q1.Result[0].OrgId, ShouldEqual, q2.Result[0].OrgId)
  26. So(q1.Result[0].Role, ShouldEqual, "Viewer")
  27. })
  28. })
  29. Convey("Given two saved users", func() {
  30. setting.AutoAssignOrg = false
  31. ac1cmd := m.CreateUserCommand{Login: "ac1", Email: "ac1@test.com", Name: "ac1 name"}
  32. ac2cmd := m.CreateUserCommand{Login: "ac2", Email: "ac2@test.com", Name: "ac2 name", IsAdmin: true}
  33. err := CreateUser(&ac1cmd)
  34. err = CreateUser(&ac2cmd)
  35. So(err, ShouldBeNil)
  36. ac1 := ac1cmd.Result
  37. ac2 := ac2cmd.Result
  38. Convey("Should be able to read user info projection", func() {
  39. query := m.GetUserProfileQuery{UserId: ac1.Id}
  40. err = GetUserProfile(&query)
  41. So(err, ShouldBeNil)
  42. So(query.Result.Email, ShouldEqual, "ac1@test.com")
  43. So(query.Result.Login, ShouldEqual, "ac1")
  44. })
  45. Convey("Can search users", func() {
  46. query := m.SearchUsersQuery{Query: ""}
  47. err := SearchUsers(&query)
  48. So(err, ShouldBeNil)
  49. So(query.Result[0].Email, ShouldEqual, "ac1@test.com")
  50. So(query.Result[1].Email, ShouldEqual, "ac2@test.com")
  51. })
  52. Convey("Given an added org user", func() {
  53. cmd := m.AddOrgUserCommand{
  54. OrgId: ac1.OrgId,
  55. UserId: ac2.Id,
  56. Role: m.ROLE_VIEWER,
  57. }
  58. err := AddOrgUser(&cmd)
  59. Convey("Should have been saved without error", func() {
  60. So(err, ShouldBeNil)
  61. })
  62. Convey("Can get logged in user projection", func() {
  63. query := m.GetSignedInUserQuery{UserId: ac2.Id}
  64. err := GetSignedInUser(&query)
  65. So(err, ShouldBeNil)
  66. So(query.Result.Email, ShouldEqual, "ac2@test.com")
  67. So(query.Result.OrgId, ShouldEqual, ac2.OrgId)
  68. So(query.Result.Name, ShouldEqual, "ac2 name")
  69. So(query.Result.Login, ShouldEqual, "ac2")
  70. So(query.Result.OrgRole, ShouldEqual, "Admin")
  71. So(query.Result.OrgName, ShouldEqual, "ac2@test.com")
  72. So(query.Result.IsGrafanaAdmin, ShouldBeTrue)
  73. })
  74. Convey("Can get user organizations", func() {
  75. query := m.GetUserOrgListQuery{UserId: ac2.Id}
  76. err := GetUserOrgList(&query)
  77. So(err, ShouldBeNil)
  78. So(len(query.Result), ShouldEqual, 2)
  79. })
  80. Convey("Can get organization users", func() {
  81. query := m.GetOrgUsersQuery{OrgId: ac1.OrgId}
  82. err := GetOrgUsers(&query)
  83. So(err, ShouldBeNil)
  84. So(len(query.Result), ShouldEqual, 2)
  85. So(query.Result[0].Role, ShouldEqual, "Admin")
  86. })
  87. Convey("Can set using org", func() {
  88. cmd := m.SetUsingOrgCommand{UserId: ac2.Id, OrgId: ac1.Id}
  89. err := SetUsingOrg(&cmd)
  90. So(err, ShouldBeNil)
  91. Convey("SignedInUserQuery with a different org", func() {
  92. query := m.GetSignedInUserQuery{UserId: ac2.Id}
  93. err := GetSignedInUser(&query)
  94. So(err, ShouldBeNil)
  95. So(query.Result.OrgId, ShouldEqual, ac1.Id)
  96. So(query.Result.Email, ShouldEqual, "ac2@test.com")
  97. So(query.Result.Name, ShouldEqual, "ac2 name")
  98. So(query.Result.Login, ShouldEqual, "ac2")
  99. So(query.Result.OrgName, ShouldEqual, "ac1@test.com")
  100. So(query.Result.OrgRole, ShouldEqual, "Viewer")
  101. })
  102. })
  103. Convey("Cannot delete last admin account user", func() {
  104. cmd := m.RemoveOrgUserCommand{OrgId: ac1.OrgId, UserId: ac1.Id}
  105. err := RemoveOrgUser(&cmd)
  106. So(err, ShouldEqual, m.ErrLastOrgAdmin)
  107. })
  108. })
  109. })
  110. })
  111. }