github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/integration/helpers/user.go (about)

     1  package helpers
     2  
     3  import (
     4  	"encoding/json"
     5  	"time"
     6  
     7  	. "github.com/onsi/gomega"
     8  	. "github.com/onsi/gomega/gexec"
     9  )
    10  
    11  type User struct {
    12  	GUID      string
    13  	Username  string
    14  	CreatedAt time.Time
    15  }
    16  
    17  // GetUsers returns all the users in the targeted environment
    18  func GetUsers() []User {
    19  	var userPagesResponse struct {
    20  		NextURL   *string `json:"next_url"`
    21  		Resources []struct {
    22  			Metadata struct {
    23  				GUID      string    `json:"guid"`
    24  				CreatedAt time.Time `json:"created_at"`
    25  			} `json:"metadata"`
    26  			Entity struct {
    27  				Username string `json:"username"`
    28  			} `json:"entity"`
    29  		} `json:"resources"`
    30  	}
    31  
    32  	var allUsers []User
    33  	nextURL := "/v2/users?results-per-page=50"
    34  
    35  	for {
    36  		session := CF("curl", nextURL)
    37  		Eventually(session).Should(Exit(0))
    38  
    39  		err := json.Unmarshal(session.Out.Contents(), &userPagesResponse)
    40  		Expect(err).NotTo(HaveOccurred())
    41  		for _, resource := range userPagesResponse.Resources {
    42  			allUsers = append(allUsers, User{
    43  				GUID:      resource.Metadata.GUID,
    44  				CreatedAt: resource.Metadata.CreatedAt,
    45  				Username:  resource.Entity.Username,
    46  			})
    47  		}
    48  
    49  		if userPagesResponse.NextURL == nil {
    50  			break
    51  		}
    52  		nextURL = *userPagesResponse.NextURL
    53  	}
    54  
    55  	return allUsers
    56  }