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) | ||
|  | 		}) | ||
|  | 	}) | ||
|  | } |