mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
	
	
		
			110 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
		
		
			
		
	
	
			110 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
| 
								 | 
							
								package api
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"testing"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/grafana/grafana/pkg/models"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/grafana/grafana/pkg/bus"
							 | 
						||
| 
								 | 
							
									"github.com/grafana/grafana/pkg/components/simplejson"
							 | 
						||
| 
								 | 
							
									. "github.com/smartystreets/goconvey/convey"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func TestUserApiEndpoint(t *testing.T) {
							 | 
						||
| 
								 | 
							
									Convey("Given a user is logged in", t, func() {
							 | 
						||
| 
								 | 
							
										mockResult := models.SearchUserQueryResult{
							 | 
						||
| 
								 | 
							
											Users: []*models.UserSearchHitDTO{
							 | 
						||
| 
								 | 
							
												{Name: "user1"},
							 | 
						||
| 
								 | 
							
												{Name: "user2"},
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
											TotalCount: 2,
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										loggedInUserScenario("When calling GET on", "/api/users", func(sc *scenarioContext) {
							 | 
						||
| 
								 | 
							
											var sentLimit int
							 | 
						||
| 
								 | 
							
											var sendPage int
							 | 
						||
| 
								 | 
							
											bus.AddHandler("test", func(query *models.SearchUsersQuery) error {
							 | 
						||
| 
								 | 
							
												query.Result = mockResult
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												sentLimit = query.Limit
							 | 
						||
| 
								 | 
							
												sendPage = query.Page
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												return nil
							 | 
						||
| 
								 | 
							
											})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											sc.handlerFunc = SearchUsers
							 | 
						||
| 
								 | 
							
											sc.fakeReqWithParams("GET", sc.url, map[string]string{}).exec()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											So(sentLimit, ShouldEqual, 1000)
							 | 
						||
| 
								 | 
							
											So(sendPage, ShouldEqual, 1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											respJSON, err := simplejson.NewJson(sc.resp.Body.Bytes())
							 | 
						||
| 
								 | 
							
											So(err, ShouldBeNil)
							 | 
						||
| 
								 | 
							
											So(len(respJSON.MustArray()), ShouldEqual, 2)
							 | 
						||
| 
								 | 
							
										})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										loggedInUserScenario("When calling GET with page and limit querystring parameters on", "/api/users", func(sc *scenarioContext) {
							 | 
						||
| 
								 | 
							
											var sentLimit int
							 | 
						||
| 
								 | 
							
											var sendPage int
							 | 
						||
| 
								 | 
							
											bus.AddHandler("test", func(query *models.SearchUsersQuery) error {
							 | 
						||
| 
								 | 
							
												query.Result = mockResult
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												sentLimit = query.Limit
							 | 
						||
| 
								 | 
							
												sendPage = query.Page
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												return nil
							 | 
						||
| 
								 | 
							
											})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											sc.handlerFunc = SearchUsers
							 | 
						||
| 
								 | 
							
											sc.fakeReqWithParams("GET", sc.url, map[string]string{"perpage": "10", "page": "2"}).exec()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											So(sentLimit, ShouldEqual, 10)
							 | 
						||
| 
								 | 
							
											So(sendPage, ShouldEqual, 2)
							 | 
						||
| 
								 | 
							
										})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										loggedInUserScenario("When calling GET on", "/api/users/search", func(sc *scenarioContext) {
							 | 
						||
| 
								 | 
							
											var sentLimit int
							 | 
						||
| 
								 | 
							
											var sendPage int
							 | 
						||
| 
								 | 
							
											bus.AddHandler("test", func(query *models.SearchUsersQuery) error {
							 | 
						||
| 
								 | 
							
												query.Result = mockResult
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												sentLimit = query.Limit
							 | 
						||
| 
								 | 
							
												sendPage = query.Page
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												return nil
							 | 
						||
| 
								 | 
							
											})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											sc.handlerFunc = SearchUsersWithPaging
							 | 
						||
| 
								 | 
							
											sc.fakeReqWithParams("GET", sc.url, map[string]string{}).exec()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											So(sentLimit, ShouldEqual, 1000)
							 | 
						||
| 
								 | 
							
											So(sendPage, ShouldEqual, 1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											respJSON, err := simplejson.NewJson(sc.resp.Body.Bytes())
							 | 
						||
| 
								 | 
							
											So(err, ShouldBeNil)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											So(respJSON.Get("totalCount").MustInt(), ShouldEqual, 2)
							 | 
						||
| 
								 | 
							
											So(len(respJSON.Get("users").MustArray()), ShouldEqual, 2)
							 | 
						||
| 
								 | 
							
										})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										loggedInUserScenario("When calling GET with page and perpage querystring parameters on", "/api/users/search", func(sc *scenarioContext) {
							 | 
						||
| 
								 | 
							
											var sentLimit int
							 | 
						||
| 
								 | 
							
											var sendPage int
							 | 
						||
| 
								 | 
							
											bus.AddHandler("test", func(query *models.SearchUsersQuery) error {
							 | 
						||
| 
								 | 
							
												query.Result = mockResult
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												sentLimit = query.Limit
							 | 
						||
| 
								 | 
							
												sendPage = query.Page
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												return nil
							 | 
						||
| 
								 | 
							
											})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											sc.handlerFunc = SearchUsersWithPaging
							 | 
						||
| 
								 | 
							
											sc.fakeReqWithParams("GET", sc.url, map[string]string{"perpage": "10", "page": "2"}).exec()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											So(sentLimit, ShouldEqual, 10)
							 | 
						||
| 
								 | 
							
											So(sendPage, ShouldEqual, 2)
							 | 
						||
| 
								 | 
							
										})
							 | 
						||
| 
								 | 
							
									})
							 | 
						||
| 
								 | 
							
								}
							 |