Browse Source

[CLOUDTRUST-1423] Support paging for GetUsers

master
sispeo 7 years ago
committed by GitHub
parent
commit
c5c3e90403
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      definitions.go
  2. 55
      integration/integration.go
  3. 8
      users.go

6
definitions.go

@ -652,6 +652,12 @@ 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:"id,omitempty"`
Users []UserRepresentation `json:"users,omitempty"`
}
type UserSessionRepresentation struct { type UserSessionRepresentation struct {
Clients *map[string]interface{} `json:"clients,omitempty"` Clients *map[string]interface{} `json:"clients,omitempty"`
Id *string `json:"id,omitempty"` Id *string `json:"id,omitempty"`

55
integration/integration.go

@ -12,6 +12,7 @@ import (
const ( const (
tstRealm = "__internal" tstRealm = "__internal"
reqRealm = "master"
user = "version" user = "version"
) )
@ -131,7 +132,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, tstRealm, keycloak.UserRepresentation{ _, err = client.CreateUser(accessToken, reqRealm, tstRealm, keycloak.UserRepresentation{
Username: &username, Username: &username,
FirstName: &u.firstname, FirstName: &u.firstname,
LastName: &u.lastname, LastName: &u.lastname,
@ -159,15 +160,15 @@ func main() {
{ {
{ {
// No parameters. // No parameters.
var users, err = client.GetUsers(accessToken, tstRealm) var users, err = client.GetUsers(accessToken, reqRealm, 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) != 50 { if len(users.Users) != 50 {
log.Fatalf("there should be 50 users") log.Fatalf("there should be 50 users")
} }
user, err := client.GetUser(accessToken, tstRealm, *(users[0].Id)) user, err := client.GetUser(accessToken, tstRealm, *(users.Users[0].Id))
if err != nil { if err != nil {
log.Fatalf("could not get user") log.Fatalf("could not get user")
} }
@ -180,62 +181,62 @@ func main() {
} }
{ {
// email. // email.
var users, err = client.GetUsers(accessToken, tstRealm, "email", "john.doe@cloudtrust.ch") var users, err = client.GetUsers(accessToken, reqRealm, tstRealm, "email", "john.doe@cloudtrust.ch")
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) != 1 { if len(users.Users) != 1 {
log.Fatalf("there should be 1 user matched by email") log.Fatalf("there should be 1 user matched by email")
} }
} }
{ {
// firstname. // firstname.
var users, err = client.GetUsers(accessToken, tstRealm, "firstName", "John") var users, err = client.GetUsers(accessToken, reqRealm, tstRealm, "firstName", "John")
if err != nil { if err != nil {
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) != 2 { if len(users.Users) != 2 {
log.Fatalf("there should be 2 user matched by firstname") log.Fatalf("there should be 2 user matched by firstname")
} }
} }
{ {
// lastname. // lastname.
var users, err = client.GetUsers(accessToken, tstRealm, "lastName", "Wells") var users, err = client.GetUsers(accessToken, reqRealm, tstRealm, "lastName", "Wells")
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) != 3 { if len(users.Users) != 3 {
log.Fatalf("there should be 3 users matched by lastname") log.Fatalf("there should be 3 users matched by lastname")
} }
} }
{ {
// username. // username.
var users, err = client.GetUsers(accessToken, tstRealm, "username", "lucia.nelson") var users, err = client.GetUsers(accessToken, reqRealm, tstRealm, "username", "lucia.nelson")
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) != 1 { if len(users.Users) != 1 {
log.Fatalf("there should be 1 user matched by username") log.Fatalf("there should be 1 user matched by username")
} }
} }
{ {
// first. // first.
var users, err = client.GetUsers(accessToken, tstRealm, "max", "7") var users, err = client.GetUsers(accessToken, reqRealm, tstRealm, "max", "7")
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) != 7 { if len(users.Users) != 7 {
log.Fatalf("there should be 7 users matched by max") log.Fatalf("there should be 7 users matched by max")
} }
} }
{ {
// search. // search.
var users, err = client.GetUsers(accessToken, tstRealm, "search", "le") var users, err = client.GetUsers(accessToken, reqRealm, tstRealm, "search", "le")
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) != 7 { if len(users.Users) != 7 {
log.Fatalf("there should be 7 users matched by search") log.Fatalf("there should be 7 users matched by search")
} }
} }
@ -248,17 +249,17 @@ func main() {
// Get user ID. // Get user ID.
var userID string var userID string
{ {
var users, err = client.GetUsers(accessToken, tstRealm, "search", "Maria") var users, err = client.GetUsers(accessToken, reqRealm, tstRealm, "search", "Maria")
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) != 1 { if len(users.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[0].Id == nil { if users.Users[0].Id == nil {
log.Fatalf("user ID should not be nil") log.Fatalf("user ID should not be nil")
} }
userID = *users[0].Id userID = *users.Users[0].Id
} }
// Update user. // Update user.
var username = "Maria" var username = "Maria"
@ -275,14 +276,14 @@ func main() {
} }
// Check that user was updated. // Check that user was updated.
{ {
var users, err = client.GetUsers(accessToken, tstRealm, "search", "Maria") var users, err = client.GetUsers(accessToken, reqRealm, tstRealm, "search", "Maria")
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) != 1 { if len(users.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[0].LastName == nil || *users[0].LastName != updatedLastname { if users.Users[0].LastName == nil || *users.Users[0].LastName != updatedLastname {
log.Fatalf("user was not updated") log.Fatalf("user was not updated")
} }
} }
@ -305,17 +306,17 @@ func main() {
// Get user ID. // Get user ID.
var userID string var userID string
{ {
var users, err = client.GetUsers(accessToken, tstRealm, "search", "Toni") var users, err = client.GetUsers(accessToken, reqRealm, tstRealm, "search", "Toni")
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) != 1 { if len(users.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[0].Id == nil { if users.Users[0].Id == nil {
log.Fatalf("user ID should not be nil") log.Fatalf("user ID should not be nil")
} }
userID = *users[0].Id userID = *users.Users[0].Id
} }
// Delete user. // Delete user.
{ {

8
users.go

@ -28,12 +28,12 @@ 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, reqRealmName, targetRealmName string, paramKV ...string) ([]UserRepresentation, error) { func (c *Client) GetUsers(accessToken string, reqRealmName, targetRealmName string, paramKV ...string) (UsersPageRepresentation, error) {
var resp UsersPageRepresentation
if len(paramKV)%2 != 0 { if len(paramKV)%2 != 0 {
return nil, fmt.Errorf("the number of key/val parameters should be even") return resp, fmt.Errorf("the number of key/val parameters should be even")
} }
var resp = []UserRepresentation{}
var plugins = append(createQueryPlugins(paramKV...), url.Path(usersAdminExtensionApiPath), url.Param("realmReq", reqRealmName), url.Param("realm", targetRealmName)) var plugins = append(createQueryPlugins(paramKV...), url.Path(usersAdminExtensionApiPath), url.Param("realmReq", reqRealmName), url.Param("realm", targetRealmName))
var err = c.get(accessToken, &resp, plugins...) var err = c.get(accessToken, &resp, plugins...)
return resp, err return resp, err
@ -102,7 +102,7 @@ func (c *Client) ExecuteActionsEmail(accessToken string, realmName string, userI
return c.put(accessToken, plugins...) return c.put(accessToken, plugins...)
} }
// Send a new enrolment code and return it // SendNewEnrolmentCode sends a new enrolment code and return it
func (c *Client) SendNewEnrolmentCode(accessToken string, realmName string, userID string) (SmsCodeRepresentation, error) { func (c *Client) SendNewEnrolmentCode(accessToken string, realmName string, userID string) (SmsCodeRepresentation, error) {
var paramKV []string var paramKV []string
paramKV = append(paramKV, "userid", userID) paramKV = append(paramKV, "userid", userID)

Loading…
Cancel
Save