@@ -300,6 +300,97 @@ func TestTeamTokensReadByID(t *testing.T) {
300
300
})
301
301
}
302
302
303
+ func TestTeamTokensList (t * testing.T ) {
304
+ client := testClient (t )
305
+ ctx := context .Background ()
306
+
307
+ org , orgTestCleanup := createOrganization (t , client )
308
+ t .Cleanup (orgTestCleanup )
309
+
310
+ // Create a team with a token
311
+ team1 , tmTestCleanup1 := createTeam (t , client , org )
312
+ t .Cleanup (tmTestCleanup1 )
313
+
314
+ currentTime := time .Now ().UTC ().Truncate (time .Second )
315
+ oneDayLater := currentTime .Add (24 * time .Hour )
316
+ token1 , ttTestCleanup := createTeamTokenWithOptions (t , client , team1 , TeamTokenCreateOptions {
317
+ ExpiredAt : & oneDayLater ,
318
+ })
319
+ t .Cleanup (ttTestCleanup )
320
+
321
+ // Create a second team with a token that has a later expiration date
322
+ team2 , tmTestCleanup2 := createTeam (t , client , org )
323
+ t .Cleanup (tmTestCleanup2 )
324
+
325
+ twoDaysLater := currentTime .Add (48 * time .Hour )
326
+ token2 , ttTestCleanup := createTeamTokenWithOptions (t , client , team2 , TeamTokenCreateOptions {
327
+ ExpiredAt : & twoDaysLater ,
328
+ })
329
+ t .Cleanup (ttTestCleanup )
330
+
331
+ t .Run ("with team tokens across multiple teams" , func (t * testing.T ) {
332
+ tokens , err := client .TeamTokens .List (ctx , org .Name , nil )
333
+ require .NoError (t , err )
334
+ require .NotNil (t , tokens )
335
+ require .Len (t , tokens .Items , 2 )
336
+ require .ElementsMatch (t , []string {token1 .ID , token2 .ID }, []string {tokens .Items [0 ].ID , tokens .Items [1 ].ID })
337
+ })
338
+
339
+ t .Run ("with filtering by team name" , func (t * testing.T ) {
340
+ tokens , err := client .TeamTokens .List (ctx , org .Name , & TeamTokenListOptions {
341
+ Query : team1 .Name ,
342
+ })
343
+ require .NoError (t , err )
344
+ require .NotNil (t , tokens )
345
+ require .Len (t , tokens .Items , 1 )
346
+ require .Equal (t , token1 .ID , tokens .Items [0 ].ID )
347
+ })
348
+
349
+ t .Run ("with sorting" , func (t * testing.T ) {
350
+ tokens , err := client .TeamTokens .List (ctx , org .Name , & TeamTokenListOptions {
351
+ Sort : "expired-at" ,
352
+ })
353
+ require .NoError (t , err )
354
+ require .NotNil (t , tokens )
355
+ require .Len (t , tokens .Items , 2 )
356
+ require .Equal (t , []string {token1 .ID , token2 .ID }, []string {tokens .Items [0 ].ID , tokens .Items [1 ].ID })
357
+
358
+ tokens , err = client .TeamTokens .List (ctx , org .Name , & TeamTokenListOptions {
359
+ Sort : "-expired-at" ,
360
+ })
361
+ require .NoError (t , err )
362
+ require .NotNil (t , tokens )
363
+ require .Len (t , tokens .Items , 2 )
364
+ require .Equal (t , []string {token2 .ID , token1 .ID }, []string {tokens .Items [0 ].ID , tokens .Items [1 ].ID })
365
+ })
366
+
367
+ t .Run ("with multiple team tokens in a single team" , func (t * testing.T ) {
368
+ skipUnlessBeta (t )
369
+ desc1 := fmt .Sprintf ("go-tfe-team-token-test-%s" , randomString (t ))
370
+ multiToken1 , ttTestCleanup := createTeamTokenWithOptions (t , client , team1 , TeamTokenCreateOptions {
371
+ Description : & desc1 ,
372
+ })
373
+ t .Cleanup (ttTestCleanup )
374
+
375
+ desc2 := fmt .Sprintf ("go-tfe-team-token-test-%s" , randomString (t ))
376
+ multiToken2 , ttTestCleanup := createTeamTokenWithOptions (t , client , team1 , TeamTokenCreateOptions {
377
+ Description : & desc2 ,
378
+ })
379
+ t .Cleanup (ttTestCleanup )
380
+
381
+ tokens , err := client .TeamTokens .List (ctx , org .Name , nil )
382
+ require .NoError (t , err )
383
+ require .NotNil (t , tokens )
384
+ require .Len (t , tokens .Items , 4 )
385
+ actualIDs := []string {}
386
+ for _ , token := range tokens .Items {
387
+ actualIDs = append (actualIDs , token .ID )
388
+ }
389
+ require .ElementsMatch (t , []string {token1 .ID , token2 .ID , multiToken1 .ID , multiToken2 .ID },
390
+ actualIDs )
391
+ })
392
+ }
393
+
303
394
func TestTeamTokensDelete (t * testing.T ) {
304
395
client := testClient (t )
305
396
ctx := context .Background ()
0 commit comments