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. 8
      definitions.go
  2. 55
      integration/integration.go
  3. 8
      users.go

8
definitions.go

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

55
integration/integration.go

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

8
users.go

@ -28,12 +28,12 @@ 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, 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 {
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 err = c.get(accessToken, &resp, plugins...)
return resp, err
@ -102,7 +102,7 @@ func (c *Client) ExecuteActionsEmail(accessToken string, realmName string, userI
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) {
var paramKV []string
paramKV = append(paramKV, "userid", userID)

Loading…
Cancel
Save