From 6a0a55c84571d77ae6ce27b28037e95caf6f20ae Mon Sep 17 00:00:00 2001 From: Nicolas MASSE Date: Mon, 18 Jan 2021 11:39:13 +0100 Subject: [PATCH] there is no paging in the vanilla keycloak ? --- api/users.go | 4 ++-- definitions.go | 6 ------ integration/integration_test.go | 36 ++++++++++++++++----------------- 3 files changed, 20 insertions(+), 26 deletions(-) diff --git a/api/users.go b/api/users.go index e683232..3a37c3d 100644 --- a/api/users.go +++ b/api/users.go @@ -26,8 +26,8 @@ const ( // Parameters: email, first (paging offset, int), firstName, lastName, username, // max (maximum result size, default = 100), // search (string contained in username, firstname, lastname or email) -func (c *Client) GetUsers(accessToken string, targetRealmName string, paramKV ...string) (keycloak.UsersPageRepresentation, error) { - var resp keycloak.UsersPageRepresentation +func (c *Client) GetUsers(accessToken string, targetRealmName string, paramKV ...string) ([]keycloak.UserRepresentation, error) { + var resp []keycloak.UserRepresentation if len(paramKV)%2 != 0 { return resp, errors.New(keycloak.MsgErrInvalidParam + "." + keycloak.EvenParams) } diff --git a/definitions.go b/definitions.go index a52b3db..e020846 100644 --- a/definitions.go +++ b/definitions.go @@ -719,12 +719,6 @@ type UserRepresentation struct { Username *string `json:"username,omitempty"` } -// UsersPageRepresentation is used to manage users paging -type UsersPageRepresentation struct { - Count *int `json:"count,omitempty"` - Users []UserRepresentation `json:"users,omitempty"` -} - // UserSessionRepresentation struct type UserSessionRepresentation struct { Clients *map[string]interface{} `json:"clients,omitempty"` diff --git a/integration/integration_test.go b/integration/integration_test.go index f537c35..09ca261 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -122,7 +122,7 @@ func main() { var username = strings.ToLower(u.firstname + "." + u.lastname) var email = username + "@cloudtrust.ch" var err error - _, err = client.CreateUser(accessToken, reqRealm, tstRealm, keycloak.UserRepresentation{ + _, err = client.CreateUser(accessToken, tstRealm, keycloak.UserRepresentation{ Username: &username, FirstName: &u.firstname, LastName: &u.lastname, @@ -150,15 +150,15 @@ func main() { { { // No parameters. - var users, err = client.GetUsers(accessToken, reqRealm, tstRealm) + var users, err = client.GetUsers(accessToken, tstRealm) if err != nil { log.Fatalf("could not get users: %v", err) } - if len(users.Users) != 50 { + if len(users) != 50 { log.Fatalf("there should be 50 users") } - user, err := client.GetUser(accessToken, tstRealm, *(users.Users[0].ID)) + user, err := client.GetUser(accessToken, tstRealm, *(users[0].ID)) if err != nil { log.Fatalf("could not get user") } @@ -175,7 +175,7 @@ func main() { if err != nil { log.Fatalf("could not get users: %v", err) } - if len(users.Users) != 1 { + if len(users) != 1 { log.Fatalf("there should be 1 user matched by email") } } @@ -186,7 +186,7 @@ func main() { log.Fatalf("could not get users: %v", err) } // Match John and Johnny - if len(users.Users) != 2 { + if len(users) != 2 { log.Fatalf("there should be 2 user matched by firstname") } } @@ -196,7 +196,7 @@ func main() { if err != nil { log.Fatalf("could not get users: %v", err) } - if len(users.Users) != 3 { + if len(users) != 3 { log.Fatalf("there should be 3 users matched by lastname") } } @@ -206,7 +206,7 @@ func main() { if err != nil { log.Fatalf("could not get users: %v", err) } - if len(users.Users) != 1 { + if len(users) != 1 { log.Fatalf("there should be 1 user matched by username") } } @@ -216,7 +216,7 @@ func main() { if err != nil { log.Fatalf("could not get users: %v", err) } - if len(users.Users) != 7 { + if len(users) != 7 { log.Fatalf("there should be 7 users matched by max") } } @@ -226,7 +226,7 @@ func main() { if err != nil { log.Fatalf("could not get users: %v", err) } - if len(users.Users) != 7 { + if len(users) != 7 { log.Fatalf("there should be 7 users matched by search") } } @@ -243,13 +243,13 @@ func main() { if err != nil { log.Fatalf("could not get Maria: %v", err) } - if len(users.Users) != 1 { + if len(users) != 1 { log.Fatalf("there should be 1 users matched by search Maria") } - if users.Users[0].ID == nil { + if users[0].ID == nil { log.Fatalf("user ID should not be nil") } - userID = *users.Users[0].ID + userID = *users[0].ID } // Update user. var username = "Maria" @@ -270,10 +270,10 @@ func main() { if err != nil { log.Fatalf("could not get Maria: %v", err) } - if len(users.Users) != 1 { + if len(users) != 1 { log.Fatalf("there should be 1 users matched by search Maria") } - if users.Users[0].LastName == nil || *users.Users[0].LastName != updatedLastname { + if users[0].LastName == nil || *users[0].LastName != updatedLastname { log.Fatalf("user was not updated") } } @@ -300,13 +300,13 @@ func main() { if err != nil { log.Fatalf("could not get Toni: %v", err) } - if len(users.Users) != 1 { + if len(users) != 1 { log.Fatalf("there should be 1 users matched by search Toni") } - if users.Users[0].ID == nil { + if users[0].ID == nil { log.Fatalf("user ID should not be nil") } - userID = *users.Users[0].ID + userID = *users[0].ID } // Delete user. {