user_test.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package api
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/models"
  5. "github.com/grafana/grafana/pkg/bus"
  6. "github.com/grafana/grafana/pkg/components/simplejson"
  7. . "github.com/smartystreets/goconvey/convey"
  8. )
  9. func TestUserApiEndpoint(t *testing.T) {
  10. Convey("Given a user is logged in", t, func() {
  11. mockResult := models.SearchUserQueryResult{
  12. Users: []*models.UserSearchHitDTO{
  13. {Name: "user1"},
  14. {Name: "user2"},
  15. },
  16. TotalCount: 2,
  17. }
  18. loggedInUserScenario("When calling GET on", "/api/users", func(sc *scenarioContext) {
  19. var sentLimit int
  20. var sendPage int
  21. bus.AddHandler("test", func(query *models.SearchUsersQuery) error {
  22. query.Result = mockResult
  23. sentLimit = query.Limit
  24. sendPage = query.Page
  25. return nil
  26. })
  27. sc.handlerFunc = SearchUsers
  28. sc.fakeReqWithParams("GET", sc.url, map[string]string{}).exec()
  29. So(sentLimit, ShouldEqual, 1000)
  30. So(sendPage, ShouldEqual, 1)
  31. respJSON, err := simplejson.NewJson(sc.resp.Body.Bytes())
  32. So(err, ShouldBeNil)
  33. So(len(respJSON.MustArray()), ShouldEqual, 2)
  34. })
  35. loggedInUserScenario("When calling GET with page and limit querystring parameters on", "/api/users", func(sc *scenarioContext) {
  36. var sentLimit int
  37. var sendPage int
  38. bus.AddHandler("test", func(query *models.SearchUsersQuery) error {
  39. query.Result = mockResult
  40. sentLimit = query.Limit
  41. sendPage = query.Page
  42. return nil
  43. })
  44. sc.handlerFunc = SearchUsers
  45. sc.fakeReqWithParams("GET", sc.url, map[string]string{"perpage": "10", "page": "2"}).exec()
  46. So(sentLimit, ShouldEqual, 10)
  47. So(sendPage, ShouldEqual, 2)
  48. })
  49. loggedInUserScenario("When calling GET on", "/api/users/search", func(sc *scenarioContext) {
  50. var sentLimit int
  51. var sendPage int
  52. bus.AddHandler("test", func(query *models.SearchUsersQuery) error {
  53. query.Result = mockResult
  54. sentLimit = query.Limit
  55. sendPage = query.Page
  56. return nil
  57. })
  58. sc.handlerFunc = SearchUsersWithPaging
  59. sc.fakeReqWithParams("GET", sc.url, map[string]string{}).exec()
  60. So(sentLimit, ShouldEqual, 1000)
  61. So(sendPage, ShouldEqual, 1)
  62. respJSON, err := simplejson.NewJson(sc.resp.Body.Bytes())
  63. So(err, ShouldBeNil)
  64. So(respJSON.Get("totalCount").MustInt(), ShouldEqual, 2)
  65. So(len(respJSON.Get("users").MustArray()), ShouldEqual, 2)
  66. })
  67. loggedInUserScenario("When calling GET with page and perpage querystring parameters on", "/api/users/search", func(sc *scenarioContext) {
  68. var sentLimit int
  69. var sendPage int
  70. bus.AddHandler("test", func(query *models.SearchUsersQuery) error {
  71. query.Result = mockResult
  72. sentLimit = query.Limit
  73. sendPage = query.Page
  74. return nil
  75. })
  76. sc.handlerFunc = SearchUsersWithPaging
  77. sc.fakeReqWithParams("GET", sc.url, map[string]string{"perpage": "10", "page": "2"}).exec()
  78. So(sentLimit, ShouldEqual, 10)
  79. So(sendPage, ShouldEqual, 2)
  80. })
  81. })
  82. }