Commit 4181b30b by gotjosh Committed by GitHub

API: Add `createdAt` and `updatedAt` to api/users/lookup (#19496)

* API: Add `createdAt` and `updatedAt` to api/users/lookup

In the past, we have added both `updatedAt` (#19004) and `createdAt` (#19475) to /api/users/:id

Turns out, api/users/lookup uses the same DTO for both. This fixes the serialization of both `createdAt` and `updatedAt`for this endpoint.

Also, adds a test to ensure no further regressions.

* Updated API documentation
parent 47432e93
...@@ -116,12 +116,18 @@ HTTP/1.1 200 ...@@ -116,12 +116,18 @@ HTTP/1.1 200
Content-Type: application/json Content-Type: application/json
{ {
"email": "user@mygraf.com" "id": "1",
"email": "user@mygraf.com",
"name": "admin", "name": "admin",
"login": "admin", "login": "admin",
"theme": "light", "theme": "light",
"orgId": 1, "orgId": 1,
"isGrafanaAdmin": true "isGrafanaAdmin": true,
"isDisabled": true,
"isExternal": false,
"authLabels": [],
"updatedAt": "2019-09-09T11:31:26+01:00",
"createdAt": "2019-09-09T11:31:26+01:00"
} }
``` ```
...@@ -162,7 +168,12 @@ Content-Type: application/json ...@@ -162,7 +168,12 @@ Content-Type: application/json
"login": "admin", "login": "admin",
"theme": "light", "theme": "light",
"orgId": 1, "orgId": 1,
"isGrafanaAdmin": true "isGrafanaAdmin": true,
"isDisabled": false,
"isExternal": false,
"authLabels": null,
"updatedAt": "2019-09-25T14:44:37+01:00",
"createdAt": "2019-09-25T14:44:37+01:00"
} }
``` ```
......
...@@ -57,6 +57,8 @@ func GetUserByLoginOrEmail(c *m.ReqContext) Response { ...@@ -57,6 +57,8 @@ func GetUserByLoginOrEmail(c *m.ReqContext) Response {
Theme: user.Theme, Theme: user.Theme,
IsGrafanaAdmin: user.IsAdmin, IsGrafanaAdmin: user.IsAdmin,
OrgId: user.OrgId, OrgId: user.OrgId,
UpdatedAt: user.Updated,
CreatedAt: user.Created,
} }
return JSON(200, &result) return JSON(200, &result)
} }
......
...@@ -73,6 +73,51 @@ func TestUserApiEndpoint(t *testing.T) { ...@@ -73,6 +73,51 @@ func TestUserApiEndpoint(t *testing.T) {
require.JSONEq(t, expected, sc.resp.Body.String()) require.JSONEq(t, expected, sc.resp.Body.String())
}) })
loggedInUserScenario("When calling GET on", "/api/users/lookup", func(sc *scenarioContext) {
fakeNow := time.Date(2019, 2, 11, 17, 30, 40, 0, time.UTC)
bus.AddHandler("test", func(query *models.GetUserByLoginQuery) error {
require.Equal(t, "danlee", query.LoginOrEmail)
query.Result = &models.User{
Id: int64(1),
Email: "daniel@grafana.com",
Name: "Daniel",
Login: "danlee",
Theme: "light",
IsAdmin: true,
OrgId: int64(2),
IsDisabled: false,
Updated: fakeNow,
Created: fakeNow,
}
return nil
})
sc.handlerFunc = GetUserByLoginOrEmail
sc.fakeReqWithParams("GET", sc.url, map[string]string{"loginOrEmail": "danlee"}).exec()
expected := `
{
"id": 1,
"email": "daniel@grafana.com",
"name": "Daniel",
"login": "danlee",
"theme": "light",
"orgId": 2,
"isGrafanaAdmin": true,
"isDisabled": false,
"authLabels": null,
"isExternal": false,
"updatedAt": "2019-02-11T17:30:40Z",
"createdAt": "2019-02-11T17:30:40Z"
}
`
require.Equal(t, http.StatusOK, sc.resp.Code)
require.JSONEq(t, expected, sc.resp.Body.String())
})
loggedInUserScenario("When calling GET on", "/api/users", func(sc *scenarioContext) { loggedInUserScenario("When calling GET on", "/api/users", func(sc *scenarioContext) {
var sentLimit int var sentLimit int
var sendPage int var sendPage int
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment