user_auth_test.go 3.1 KB

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