user_auth_test.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package sqlstore
  2. import (
  3. "fmt"
  4. "testing"
  5. . "github.com/smartystreets/goconvey/convey"
  6. m "github.com/grafana/grafana/pkg/models"
  7. )
  8. func TestUserAuth(t *testing.T) {
  9. InitTestDB(t)
  10. Convey("Given 5 users", t, func() {
  11. var err error
  12. var cmd *m.CreateUserCommand
  13. users := []m.User{}
  14. for i := 0; i < 5; i++ {
  15. cmd = &m.CreateUserCommand{
  16. Email: fmt.Sprint("user", i, "@test.com"),
  17. Name: fmt.Sprint("user", i),
  18. Login: fmt.Sprint("loginuser", i),
  19. }
  20. err = CreateUser(cmd)
  21. So(err, ShouldBeNil)
  22. users = append(users, cmd.Result)
  23. }
  24. Reset(func() {
  25. _, err := x.Exec("DELETE FROM org_user WHERE 1=1")
  26. So(err, ShouldBeNil)
  27. _, err = x.Exec("DELETE FROM org WHERE 1=1")
  28. So(err, ShouldBeNil)
  29. _, err = x.Exec("DELETE FROM user WHERE 1=1")
  30. So(err, ShouldBeNil)
  31. _, err = x.Exec("DELETE FROM user_auth WHERE 1=1")
  32. So(err, ShouldBeNil)
  33. })
  34. Convey("Can find existing user", func() {
  35. // By Login
  36. login := "loginuser0"
  37. query := &m.GetUserByAuthInfoQuery{Login: login}
  38. err = GetUserByAuthInfo(query)
  39. So(err, ShouldBeNil)
  40. So(query.Result.Login, ShouldEqual, login)
  41. // By ID
  42. id := query.Result.Id
  43. query = &m.GetUserByAuthInfoQuery{UserId: id}
  44. err = GetUserByAuthInfo(query)
  45. So(err, ShouldBeNil)
  46. So(query.Result.Id, ShouldEqual, id)
  47. // By Email
  48. email := "user1@test.com"
  49. query = &m.GetUserByAuthInfoQuery{Email: email}
  50. err = GetUserByAuthInfo(query)
  51. So(err, ShouldBeNil)
  52. So(query.Result.Email, ShouldEqual, email)
  53. // Don't find nonexistent user
  54. email = "nonexistent@test.com"
  55. query = &m.GetUserByAuthInfoQuery{Email: email}
  56. err = GetUserByAuthInfo(query)
  57. So(err, ShouldEqual, m.ErrUserNotFound)
  58. So(query.Result, ShouldBeNil)
  59. })
  60. Convey("Can set & locate by AuthModule and AuthId", func() {
  61. // get nonexistent user_auth entry
  62. query := &m.GetUserByAuthInfoQuery{AuthModule: "test", AuthId: "test"}
  63. err = GetUserByAuthInfo(query)
  64. So(err, ShouldEqual, m.ErrUserNotFound)
  65. So(query.Result, ShouldBeNil)
  66. // create user_auth entry
  67. login := "loginuser0"
  68. query.Login = login
  69. err = GetUserByAuthInfo(query)
  70. So(err, ShouldBeNil)
  71. So(query.Result.Login, ShouldEqual, login)
  72. // get via user_auth
  73. query = &m.GetUserByAuthInfoQuery{AuthModule: "test", AuthId: "test"}
  74. err = GetUserByAuthInfo(query)
  75. So(err, ShouldBeNil)
  76. So(query.Result.Login, ShouldEqual, login)
  77. // get with non-matching id
  78. id := query.Result.Id
  79. query.UserId = id + 1
  80. err = GetUserByAuthInfo(query)
  81. So(err, ShouldBeNil)
  82. So(query.Result.Login, ShouldEqual, "loginuser1")
  83. // get via user_auth
  84. query = &m.GetUserByAuthInfoQuery{AuthModule: "test", AuthId: "test"}
  85. err = GetUserByAuthInfo(query)
  86. So(err, ShouldBeNil)
  87. So(query.Result.Login, ShouldEqual, "loginuser1")
  88. // remove user
  89. _, err = x.Exec("DELETE FROM user WHERE id=?", query.Result.Id)
  90. So(err, ShouldBeNil)
  91. // get via user_auth for deleted user
  92. query = &m.GetUserByAuthInfoQuery{AuthModule: "test", AuthId: "test"}
  93. err = GetUserByAuthInfo(query)
  94. So(err, ShouldEqual, m.ErrUserNotFound)
  95. So(query.Result, ShouldBeNil)
  96. })
  97. })
  98. }