Browse Source

there is no paging in the vanilla keycloak ?

master
Nicolas Massé 5 years ago
parent
commit
6a0a55c845
  1. 4
      api/users.go
  2. 6
      definitions.go
  3. 36
      integration/integration_test.go

4
api/users.go

@ -26,8 +26,8 @@ const (
// Parameters: email, first (paging offset, int), firstName, lastName, username, // Parameters: email, first (paging offset, int), firstName, lastName, username,
// max (maximum result size, default = 100), // max (maximum result size, default = 100),
// search (string contained in username, firstname, lastname or email) // search (string contained in username, firstname, lastname or email)
func (c *Client) GetUsers(accessToken string, targetRealmName string, paramKV ...string) (keycloak.UsersPageRepresentation, error) { func (c *Client) GetUsers(accessToken string, targetRealmName string, paramKV ...string) ([]keycloak.UserRepresentation, error) {
var resp keycloak.UsersPageRepresentation var resp []keycloak.UserRepresentation
if len(paramKV)%2 != 0 { if len(paramKV)%2 != 0 {
return resp, errors.New(keycloak.MsgErrInvalidParam + "." + keycloak.EvenParams) return resp, errors.New(keycloak.MsgErrInvalidParam + "." + keycloak.EvenParams)
} }

6
definitions.go

@ -719,12 +719,6 @@ type UserRepresentation struct {
Username *string `json:"username,omitempty"` 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 // UserSessionRepresentation struct
type UserSessionRepresentation struct { type UserSessionRepresentation struct {
Clients *map[string]interface{} `json:"clients,omitempty"` Clients *map[string]interface{} `json:"clients,omitempty"`

36
integration/integration_test.go

@ -122,7 +122,7 @@ func main() {
var username = strings.ToLower(u.firstname + "." + u.lastname) var username = strings.ToLower(u.firstname + "." + u.lastname)
var email = username + "@cloudtrust.ch" var email = username + "@cloudtrust.ch"
var err error var err error
_, err = client.CreateUser(accessToken, reqRealm, tstRealm, keycloak.UserRepresentation{ _, err = client.CreateUser(accessToken, tstRealm, keycloak.UserRepresentation{
Username: &username, Username: &username,
FirstName: &u.firstname, FirstName: &u.firstname,
LastName: &u.lastname, LastName: &u.lastname,
@ -150,15 +150,15 @@ func main() {
{ {
{ {
// No parameters. // No parameters.
var users, err = client.GetUsers(accessToken, reqRealm, tstRealm) var users, err = client.GetUsers(accessToken, tstRealm)
if err != nil { if err != nil {
log.Fatalf("could not get users: %v", err) log.Fatalf("could not get users: %v", err)
} }
if len(users.Users) != 50 { if len(users) != 50 {
log.Fatalf("there should be 50 users") 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 { if err != nil {
log.Fatalf("could not get user") log.Fatalf("could not get user")
} }
@ -175,7 +175,7 @@ func main() {
if err != nil { if err != nil {
log.Fatalf("could not get users: %v", err) 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") log.Fatalf("there should be 1 user matched by email")
} }
} }
@ -186,7 +186,7 @@ func main() {
log.Fatalf("could not get users: %v", err) log.Fatalf("could not get users: %v", err)
} }
// Match John and Johnny // Match John and Johnny
if len(users.Users) != 2 { if len(users) != 2 {
log.Fatalf("there should be 2 user matched by firstname") log.Fatalf("there should be 2 user matched by firstname")
} }
} }
@ -196,7 +196,7 @@ func main() {
if err != nil { if err != nil {
log.Fatalf("could not get users: %v", err) 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") log.Fatalf("there should be 3 users matched by lastname")
} }
} }
@ -206,7 +206,7 @@ func main() {
if err != nil { if err != nil {
log.Fatalf("could not get users: %v", err) 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") log.Fatalf("there should be 1 user matched by username")
} }
} }
@ -216,7 +216,7 @@ func main() {
if err != nil { if err != nil {
log.Fatalf("could not get users: %v", err) 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") log.Fatalf("there should be 7 users matched by max")
} }
} }
@ -226,7 +226,7 @@ func main() {
if err != nil { if err != nil {
log.Fatalf("could not get users: %v", err) 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") log.Fatalf("there should be 7 users matched by search")
} }
} }
@ -243,13 +243,13 @@ func main() {
if err != nil { if err != nil {
log.Fatalf("could not get Maria: %v", err) 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") 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") log.Fatalf("user ID should not be nil")
} }
userID = *users.Users[0].ID userID = *users[0].ID
} }
// Update user. // Update user.
var username = "Maria" var username = "Maria"
@ -270,10 +270,10 @@ func main() {
if err != nil { if err != nil {
log.Fatalf("could not get Maria: %v", err) 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") 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") log.Fatalf("user was not updated")
} }
} }
@ -300,13 +300,13 @@ func main() {
if err != nil { if err != nil {
log.Fatalf("could not get Toni: %v", err) 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") 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") log.Fatalf("user ID should not be nil")
} }
userID = *users.Users[0].ID userID = *users[0].ID
} }
// Delete user. // Delete user.
{ {

Loading…
Cancel
Save