@@ -60,30 +60,30 @@ func (e *EnvironmentManager) getMembersMap() (map[string]MemberList, error) {
60
60
return nil , errors .Wrap (err , "get members" )
61
61
}
62
62
63
- membersJson , _ := json .Marshal (members )
64
- fmt .Sprintf ("members: %s" , membersJson )
63
+ membersJson , _ := json .Marshal (members )
64
+ fmt .Sprintf ("members: %s" , membersJson )
65
65
66
66
membersMap := make (map [string ]MemberList )
67
67
for i := 0 ; i < len (members ); i += 1 {
68
- memberJson , _ := json .Marshal (members )
69
- fmt .Sprintf ("member: %s" , memberJson )
70
- fmt .Sprintf ("member: %s" , members [i ].Email )
68
+ memberJson , _ := json .Marshal (members )
69
+ fmt .Sprintf ("member: %s" , memberJson )
70
+ fmt .Sprintf ("member: %s" , members [i ].Email )
71
71
membersMap [members [i ].Email ] = members [i ]
72
72
}
73
73
return membersMap , nil
74
74
}
75
75
76
76
// Delete team members created with multi-player mode
77
77
func (e * EnvironmentManager ) DeleteMember (id string ) error {
78
- url := fmt .Sprintf ("%s/v1/team/member/ %s" , e .Params .IDOrigin , id )
78
+ requestUrl := fmt .Sprintf ("%s/v1/team/member?id= %s" , e .Params .IDOrigin , id )
79
79
req , err := http .NewRequest (
80
80
"DELETE" ,
81
- url ,
81
+ requestUrl ,
82
82
nil ,
83
83
)
84
84
85
85
if err != nil {
86
- return errors .Wrap (err , fmt .Sprintf ("DELETE %s/v1/team/member?user_id=%s " , e . Params . IDOrigin , id ))
86
+ return errors .Wrap (err , fmt .Sprintf ("DELETE %s" , requestUrl ))
87
87
}
88
88
req .Header .Set ("Authorization" , e .Params .SessionToken )
89
89
req .Header .Set ("Accept" , "application/json" )
@@ -98,13 +98,13 @@ func (e *EnvironmentManager) DeleteMember(id string) error {
98
98
panic (err .Error ())
99
99
}
100
100
if resp .StatusCode != 204 {
101
- return fmt .Errorf ("DELETE /v1/team/member/ %s %d: %s" , id , resp .StatusCode , body )
101
+ return fmt .Errorf ("DELETE %s %d: %s" , requestUrl , resp .StatusCode , body )
102
102
}
103
103
return nil
104
104
}
105
105
106
106
func (e * EnvironmentManager ) addMember (members map [string ]MemberList , policies map [string ]string ) error {
107
- inviteEmail := e .Params .ParticipantId + "@replicated-labs.com"
107
+ inviteEmail := e .Params .ParticipantId + "@replicated-labs.com"
108
108
err := e .inviteMember (inviteEmail , members , policies )
109
109
if err != nil {
110
110
return err
@@ -136,93 +136,106 @@ func (e *EnvironmentManager) addMember(members map[string]MemberList, policies m
136
136
return nil
137
137
}
138
138
139
- type AcceptBody struct {
140
- InviteId string `json:"invite_id"`
141
- FirstName string `json:"first_name"`
142
- LastName string `json:"last_name"`
143
- Password string `json:"password"`
144
- ReplaceAccount bool `json:"replace_account"`
145
- FromTeamSelection bool `json:"from_team_selection"`
139
+
140
+ type VerifyResponse struct {
141
+ Token string `json:"token"`
146
142
}
147
143
148
- func ( e * EnvironmentManager ) acceptInvite ( inviteId string , participantId string , vr * VerifyResponse ) error {
149
- h := sha256 . Sum256 ([] byte ( participantId ))
150
- sum := fmt . Sprintf ( "%x" , h )
144
+ type SignupResponse struct {
145
+ Token string `json:"token"`
146
+ }
151
147
152
- ab := AcceptBody {InviteId : inviteId , FirstName : "Repl" , LastName : "Replicated" , Password : string (sum [0 :20 ]), ReplaceAccount : false , FromTeamSelection : true }
153
- acceptBodyBytes , err := json .Marshal (ab )
148
+ func (e * EnvironmentManager ) signupMember (inviteEmail string ) (* SignupResponse , error ) {
149
+ signupBody := map [string ]string {
150
+ "email" : inviteEmail ,
151
+ }
152
+ signupBodyBytes , err := json .Marshal (signupBody )
154
153
if err != nil {
155
- return errors .Wrap (err , "marshal accept body" )
154
+ return nil , errors .Wrap (err , "marshal signup body" )
156
155
}
156
+ requestUrl := fmt .Sprintf ("%s/vendor/v1/signup" , e .Params .IDOrigin )
157
157
req , err := http .NewRequest (
158
158
"POST" ,
159
- fmt . Sprintf ( "%s/vendor/v1/signup/accept-invite" , e . Params . IDOrigin ) ,
160
- bytes .NewReader (acceptBodyBytes ),
159
+ requestUrl ,
160
+ bytes .NewReader (signupBodyBytes ),
161
161
)
162
162
if err != nil {
163
- return errors .Wrap (err , "build accept request" )
163
+ return nil , errors .Wrap (err , "build signup request" )
164
164
}
165
165
req .Header .Set ("Accept" , "application/json" )
166
166
req .Header .Set ("Content-Type" , "application/json" )
167
167
168
168
resp , err := http .DefaultClient .Do (req )
169
169
if err != nil {
170
- return errors .Wrap (err , "send accept request" )
170
+ return nil , errors .Wrap (err , "send signup request" )
171
171
}
172
172
defer resp .Body .Close ()
173
173
174
174
if resp .StatusCode != 201 {
175
175
body , _ := ioutil .ReadAll (resp .Body )
176
- return fmt .Errorf ("POST /v1/signup/accept-invite %d: %s" , resp .StatusCode , body )
176
+ return nil , fmt .Errorf ("POST %s %d: %s" , requestUrl , resp .StatusCode , body )
177
177
}
178
- return nil
179
- }
178
+ bodyBytes , err := ioutil .ReadAll (resp .Body )
179
+ if err != nil {
180
+ return nil , errors .Wrap (err , "read body" )
181
+ }
182
+ var body SignupResponse
183
+ if err := json .NewDecoder (bytes .NewReader (bodyBytes )).Decode (& body ); err != nil {
184
+ return nil , errors .Wrap (err , "decode body" )
185
+ }
186
+ return & body , nil
180
187
181
- type InvitedTeams struct {
182
- Teams []struct {
183
- Id string `json:"id"`
184
- Name string `json:"name"`
185
- InviteId string `json:"invite_id"`
186
- } `json:"invited_teams"`
187
188
}
188
189
189
- func (e * EnvironmentManager ) captureInvite (vr * VerifyResponse ) (* Invite , error ) {
190
- e .Log .Verbose ()
190
+ func (e * EnvironmentManager ) inviteMember (inviteEmail string , members map [string ]MemberList , policies map [string ]string ) error {
191
+ if _ , memberExists := members [inviteEmail ]; memberExists {
192
+ // This should never happen?
193
+ return nil
194
+ }
195
+ inviteBody := map [string ]string {
196
+ "email" : inviteEmail ,
197
+ "policy_id" : policies [e .Params .ParticipantId ],
198
+ }
199
+ inviteBodyBytes , err := json .Marshal (inviteBody )
200
+ if err != nil {
201
+ return errors .Wrap (err , "marshal invite body" )
202
+ }
203
+ requestUrl := fmt .Sprintf ("%s/vendor/v1/team/invite" , e .Params .IDOrigin )
191
204
req , err := http .NewRequest (
192
- "GET " ,
193
- fmt . Sprintf ( "%s/vendor/v1/signup/teams" , e . Params . IDOrigin , inviteId ) ,
194
- nil ,
205
+ "POST " ,
206
+ requestUrl ,
207
+ bytes . NewReader ( inviteBodyBytes ) ,
195
208
)
196
209
if err != nil {
197
- return nil , errors .Wrap (err , "build signup teams request" )
210
+ return errors .Wrap (err , "build invite request" )
198
211
}
212
+ req .Header .Set ("Authorization" , e .Params .SessionToken )
199
213
req .Header .Set ("Accept" , "application/json" )
200
- req .Header .Set ("Authorization " , vr . Token )
214
+ req .Header .Set ("Content-Type " , "application/json" )
201
215
202
216
resp , err := http .DefaultClient .Do (req )
203
217
if err != nil {
204
- return nil , errors .Wrap (err , "getting the invite" )
218
+ return errors .Wrap (err , fmt . Sprintf ( "send invite request: %s" , requestUrl ) )
205
219
}
206
220
defer resp .Body .Close ()
207
-
208
- if resp .StatusCode != 200 {
209
- body , _ := ioutil .ReadAll (resp .Body )
210
- return nil , fmt .Errorf ("GET /v1/invite/%s %d: %s" , inviteId , resp .StatusCode , body )
211
- }
212
- bodyBytes , err := ioutil .ReadAll (resp .Body )
213
- e .Log .Debug (fmt .Sprintf ("GET /v1/invite/%s %d: %s" , inviteId , resp .StatusCode , bodyBytes ))
214
- if err != nil {
215
- return nil , errors .Wrap (err , "read body" )
221
+ // rate limit returned when already invited
222
+ if resp .StatusCode == 429 {
223
+ e .Log .ActionWithoutSpinner ("Skipping invite %q due to 429 error" , inviteEmail )
224
+ return nil
216
225
}
217
- var body Invite
218
- if err := json . NewDecoder ( bytes . NewReader ( bodyBytes )). Decode ( & body ); err != nil {
219
- return nil , errors . Wrap ( err , "decode body" )
226
+ if resp . StatusCode != 204 {
227
+ body , _ := ioutil . ReadAll ( resp . Body )
228
+ return fmt . Errorf ( "POST %s %d: %s" , requestUrl , resp . StatusCode , body )
220
229
}
221
- return & body , nil
230
+ return nil
222
231
}
223
232
224
- type VerifyResponse struct {
225
- Token string `json:"token"`
233
+ type InvitedTeams struct {
234
+ Teams []struct {
235
+ Id string `json:"id"`
236
+ Name string `json:"name"`
237
+ InviteId string `json:"invite_id"`
238
+ } `json:"invited_teams"`
226
239
}
227
240
228
241
func (e * EnvironmentManager ) verifyMember (sr * SignupResponse ) (* VerifyResponse , error ) {
@@ -233,13 +246,14 @@ func (e *EnvironmentManager) verifyMember(sr *SignupResponse) (*VerifyResponse,
233
246
if err != nil {
234
247
return nil , errors .Wrap (err , "marshal verify body" )
235
248
}
249
+ requestUrl := fmt .Sprintf ("%s/vendor/v1/signup/verify" , e .Params .IDOrigin )
236
250
req , err := http .NewRequest (
237
251
"POST" ,
238
- fmt . Sprintf ( "%s/vendor/v1/signup/verify" , e . Params . IDOrigin ) ,
252
+ requestUrl ,
239
253
bytes .NewReader (verifyBodyBytes ),
240
254
)
241
255
if err != nil {
242
- return nil , errors .Wrap (err , "build verify request" )
256
+ return nil , errors .Wrap (err , fmt . Sprintf ( "build verify request: %s" , requestUrl ) )
243
257
}
244
258
req .Header .Set ("Accept" , "application/json" )
245
259
req .Header .Set ("Content-Type" , "application/json" )
@@ -252,7 +266,7 @@ func (e *EnvironmentManager) verifyMember(sr *SignupResponse) (*VerifyResponse,
252
266
253
267
if resp .StatusCode != 201 {
254
268
body , _ := ioutil .ReadAll (resp .Body )
255
- return nil , fmt .Errorf ("POST /vendor/v1/signup/verify %d: %s" , resp .StatusCode , body )
269
+ return nil , fmt .Errorf ("POST %s %d: %s" , requestUrl , resp .StatusCode , body )
256
270
}
257
271
bodyBytes , err := ioutil .ReadAll (resp .Body )
258
272
if err != nil {
@@ -262,93 +276,83 @@ func (e *EnvironmentManager) verifyMember(sr *SignupResponse) (*VerifyResponse,
262
276
if err := json .NewDecoder (bytes .NewReader (bodyBytes )).Decode (& body ); err != nil {
263
277
return nil , errors .Wrap (err , "decode body" )
264
278
}
265
- e .Log .Debug (fmt .Sprintf ("POST /vendor/v1/signup/verify %d: %s" , resp .StatusCode , body ))
266
279
return & body , nil
267
280
}
268
281
269
- type SignupResponse struct {
270
- Token string `json:"token"`
271
- }
272
-
273
- func (e * EnvironmentManager ) signupMember (inviteEmail string ) (* SignupResponse , error ) {
274
- signupBody := map [string ]string {
275
- "email" : inviteEmail ,
276
- }
277
- signupBodyBytes , err := json .Marshal (signupBody )
278
- if err != nil {
279
- return nil , errors .Wrap (err , "marshal signup body" )
280
- }
282
+ func (e * EnvironmentManager ) captureInvite (vr * VerifyResponse ) (* InvitedTeams , error ) {
283
+ e .Log .Verbose ()
284
+ requestUrl := fmt .Sprintf ("%s/vendor/v1/signup/teams" , e .Params .IDOrigin )
281
285
req , err := http .NewRequest (
282
- "POST " ,
283
- fmt . Sprintf ( "%s/vendor/v1/signup" , e . Params . IDOrigin ) ,
284
- bytes . NewReader ( signupBodyBytes ) ,
286
+ "GET " ,
287
+ requestUrl ,
288
+ nil ,
285
289
)
286
290
if err != nil {
287
- return nil , errors .Wrap (err , "build signup request" )
291
+ return nil , errors .Wrap (err , "build signup teams request" )
288
292
}
289
293
req .Header .Set ("Accept" , "application/json" )
290
- req .Header .Set ("Content-Type " , "application/json" )
294
+ req .Header .Set ("Authorization " , vr . Token )
291
295
292
296
resp , err := http .DefaultClient .Do (req )
293
297
if err != nil {
294
- return nil , errors .Wrap (err , "send signup request " )
298
+ return nil , errors .Wrap (err , "getting the invite " )
295
299
}
296
300
defer resp .Body .Close ()
297
301
298
- if resp .StatusCode != 201 {
302
+ if resp .StatusCode != 200 {
299
303
body , _ := ioutil .ReadAll (resp .Body )
300
- return nil , fmt .Errorf ("POST /v1/signup %d: %s" , resp .StatusCode , body )
304
+ return nil , fmt .Errorf ("GET %s %d: %s" , requestUrl , resp .StatusCode , body )
301
305
}
302
306
bodyBytes , err := ioutil .ReadAll (resp .Body )
303
307
if err != nil {
304
308
return nil , errors .Wrap (err , "read body" )
305
309
}
306
- var body SignupResponse
310
+ var body InvitedTeams
307
311
if err := json .NewDecoder (bytes .NewReader (bodyBytes )).Decode (& body ); err != nil {
308
312
return nil , errors .Wrap (err , "decode body" )
309
313
}
310
314
return & body , nil
315
+ }
311
316
317
+ type AcceptBody struct {
318
+ InviteId string `json:"invite_id"`
319
+ FirstName string `json:"first_name"`
320
+ LastName string `json:"last_name"`
321
+ Password string `json:"password"`
322
+ ReplaceAccount bool `json:"replace_account"`
323
+ FromTeamSelection bool `json:"from_team_selection"`
312
324
}
313
325
314
- func (e * EnvironmentManager ) inviteMember (inviteEmail string , members map [string ]MemberList , policies map [string ]string ) error {
315
- if _ , memberExists := members [inviteEmail ]; memberExists {
316
- // This should never happen?
317
- return nil
318
- }
319
- inviteBody := map [string ]string {
320
- "email" : inviteEmail ,
321
- "policy_id" : policies [e .Params .ParticipantId ],
322
- }
323
- inviteBodyBytes , err := json .Marshal (inviteBody )
326
+ func (e * EnvironmentManager ) acceptInvite (invite * InvitedTeams , participantId string , vr * VerifyResponse ) error {
327
+ h := sha256 .Sum256 ([]byte (participantId ))
328
+ sum := fmt .Sprintf ("%x" , h )
329
+ ab := AcceptBody {InviteId : (* invite ).Teams [0 ].InviteId , FirstName : "Instruqt" , LastName : "Participant" , Password : string (sum [0 :20 ]), ReplaceAccount : false , FromTeamSelection : true }
330
+ acceptBodyBytes , err := json .Marshal (ab )
324
331
if err != nil {
325
- return errors .Wrap (err , "marshal invite body" )
332
+ return errors .Wrap (err , "marshal accept body" )
326
333
}
334
+
335
+ requestUrl := fmt .Sprintf ("%s/vendor/v1/signup/accept-invite" , e .Params .IDOrigin )
327
336
req , err := http .NewRequest (
328
337
"POST" ,
329
- fmt . Sprintf ( "%s/vendor/v1/team/invite" , e . Params . IDOrigin ) ,
330
- bytes .NewReader (inviteBodyBytes ),
338
+ requestUrl ,
339
+ bytes .NewReader (acceptBodyBytes ),
331
340
)
332
341
if err != nil {
333
- return errors .Wrap (err , "build invite request" )
342
+ return errors .Wrap (err , "build accept request" )
334
343
}
335
- req .Header .Set ("Authorization" , e .Params .SessionToken )
336
344
req .Header .Set ("Accept" , "application/json" )
337
345
req .Header .Set ("Content-Type" , "application/json" )
338
346
339
347
resp , err := http .DefaultClient .Do (req )
340
348
if err != nil {
341
- return errors .Wrap (err , "send invite request" )
349
+ return errors .Wrap (err , fmt . Sprintf ( "send accept request: %s" , requestUrl ) )
342
350
}
343
351
defer resp .Body .Close ()
344
- // rate limit returned when already invited
345
- if resp .StatusCode == 429 {
346
- e .Log .ActionWithoutSpinner ("Skipping invite %q due to 429 error" , inviteEmail )
347
- return nil
348
- }
349
- if resp .StatusCode != 204 {
352
+
353
+ if resp .StatusCode != 201 {
350
354
body , _ := ioutil .ReadAll (resp .Body )
351
- return fmt .Errorf ("POST /team/invite %d: %s" , resp .StatusCode , body )
355
+ return fmt .Errorf ("POST %s %d: %s" , requestUrl , resp .StatusCode , body )
352
356
}
353
357
return nil
354
358
}
0 commit comments