github.com/cloudfoundry-attic/cli-with-i18n@v6.32.1-0.20171002233121-7401370d3b85+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 }