@@ -331,15 +331,17 @@ public async Task ListUsers()
331331 while ( await enumerator . MoveNext ( ) )
332332 {
333333 users . Add ( enumerator . Current ) ;
334+ if ( users . Count % 3 == 0 )
335+ {
336+ Assert . Equal ( users . Count / 3 , handler . Requests . Count ) ;
337+ }
334338 }
335339
336340 Assert . Equal ( 6 , users . Count ) ;
337- Assert . Equal ( "user1" , users [ 0 ] . Uid ) ;
338- Assert . Equal ( "user2" , users [ 1 ] . Uid ) ;
339- Assert . Equal ( "user3" , users [ 2 ] . Uid ) ;
340- Assert . Equal ( "user4" , users [ 3 ] . Uid ) ;
341- Assert . Equal ( "user5" , users [ 4 ] . Uid ) ;
342- Assert . Equal ( "user6" , users [ 5 ] . Uid ) ;
341+ for ( int i = 0 ; i < 6 ; i ++ )
342+ {
343+ Assert . Equal ( $ "user{ i + 1 } ", users [ i ] . Uid ) ;
344+ }
343345
344346 Assert . Equal ( 2 , handler . Requests . Count ) ;
345347 var query = this . ExtractQueryParams ( handler . Requests [ 0 ] ) ;
@@ -363,8 +365,7 @@ public void ListUsersForEach()
363365 var users = new List < ExportedUserRecord > ( ) ;
364366
365367 var pagedEnumerable = userManager . ListUsers ( null ) ;
366- var enumerator = pagedEnumerable . ToEnumerable ( ) ;
367- foreach ( var user in enumerator )
368+ foreach ( var user in pagedEnumerable . ToEnumerable ( ) )
368369 {
369370 users . Add ( user ) ;
370371 if ( users . Count % 3 == 0 )
@@ -374,12 +375,10 @@ public void ListUsersForEach()
374375 }
375376
376377 Assert . Equal ( 6 , users . Count ) ;
377- Assert . Equal ( "user1" , users [ 0 ] . Uid ) ;
378- Assert . Equal ( "user2" , users [ 1 ] . Uid ) ;
379- Assert . Equal ( "user3" , users [ 2 ] . Uid ) ;
380- Assert . Equal ( "user4" , users [ 3 ] . Uid ) ;
381- Assert . Equal ( "user5" , users [ 4 ] . Uid ) ;
382- Assert . Equal ( "user6" , users [ 5 ] . Uid ) ;
378+ for ( int i = 0 ; i < 6 ; i ++ )
379+ {
380+ Assert . Equal ( $ "user{ i + 1 } ", users [ i ] . Uid ) ;
381+ }
383382
384383 Assert . Equal ( 2 , handler . Requests . Count ) ;
385384 var query = this . ExtractQueryParams ( handler . Requests [ 0 ] ) ;
@@ -414,12 +413,10 @@ public void ListUsersCustomOptions()
414413 }
415414
416415 Assert . Equal ( 6 , users . Count ) ;
417- Assert . Equal ( "user1" , users [ 0 ] . Uid ) ;
418- Assert . Equal ( "user2" , users [ 1 ] . Uid ) ;
419- Assert . Equal ( "user3" , users [ 2 ] . Uid ) ;
420- Assert . Equal ( "user4" , users [ 3 ] . Uid ) ;
421- Assert . Equal ( "user5" , users [ 4 ] . Uid ) ;
422- Assert . Equal ( "user6" , users [ 5 ] . Uid ) ;
416+ for ( int i = 0 ; i < 6 ; i ++ )
417+ {
418+ Assert . Equal ( $ "user{ i + 1 } ", users [ i ] . Uid ) ;
419+ }
423420
424421 Assert . Equal ( 2 , handler . Requests . Count ) ;
425422 var query = this . ExtractQueryParams ( handler . Requests [ 0 ] ) ;
@@ -434,7 +431,7 @@ public void ListUsersCustomOptions()
434431 }
435432
436433 [ Fact ]
437- public async Task ListUsersPage ( )
434+ public async Task ListUsersReadPage ( )
438435 {
439436 var handler = new MockMessageHandler ( )
440437 {
@@ -446,27 +443,75 @@ public async Task ListUsersPage()
446443 } ;
447444 var userManager = this . CreateFirebaseUserManager ( handler ) ;
448445
446+ // Retrieve a page of users.
449447 var pagedEnumerable = userManager . ListUsers ( null ) ;
450- for ( int i = 0 ; i < 2 ; i ++ )
451- {
452- var userPage = await pagedEnumerable . ReadPageAsync ( 3 ) ;
448+ var userPage = await pagedEnumerable . ReadPageAsync ( 3 ) ;
453449
454- Assert . Equal ( "token" , userPage . NextPageToken ) ;
455- Assert . Equal ( 3 , userPage . Count ( ) ) ;
456- }
450+ Assert . Equal ( "token" , userPage . NextPageToken ) ;
451+ Assert . Equal ( 3 , userPage . Count ( ) ) ;
452+ Assert . Equal ( 1 , handler . Requests . Count ) ;
453+ var query = this . ExtractQueryParams ( handler . Requests [ 0 ] ) ;
454+ Assert . Single ( query ) ;
455+ Assert . Equal ( "3" , query [ "maxResults" ] ) ;
457456
457+ // Retrieve the same page of users again.
458+ userPage = await pagedEnumerable . ReadPageAsync ( 3 ) ;
459+
460+ Assert . Equal ( "token" , userPage . NextPageToken ) ;
461+ Assert . Equal ( 3 , userPage . Count ( ) ) ;
458462 Assert . Equal ( 2 , handler . Requests . Count ) ;
463+ query = this . ExtractQueryParams ( handler . Requests [ 1 ] ) ;
464+ Assert . Single ( query ) ;
465+ Assert . Equal ( "3" , query [ "maxResults" ] ) ;
466+ }
467+
468+ [ Fact ]
469+ public async Task ListUsersByPages ( )
470+ {
471+ var handler = new MockMessageHandler ( )
472+ {
473+ Response = ListUsersResponse ,
474+ } ;
475+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
476+ var users = new List < ExportedUserRecord > ( ) ;
477+
478+ // Read page 1.
479+ var pagedEnumerable = userManager . ListUsers ( null ) ;
480+ var userPage = await pagedEnumerable . ReadPageAsync ( 3 ) ;
481+
482+ Assert . Equal ( 3 , userPage . Count ( ) ) ;
483+ Assert . Equal ( "token" , userPage . NextPageToken ) ;
484+ Assert . Single ( handler . Requests ) ;
459485 var query = this . ExtractQueryParams ( handler . Requests [ 0 ] ) ;
460486 Assert . Single ( query ) ;
461487 Assert . Equal ( "3" , query [ "maxResults" ] ) ;
488+ users . AddRange ( userPage ) ;
489+
490+ // Read page 2.
491+ pagedEnumerable = userManager . ListUsers ( new ListUsersOptions ( )
492+ {
493+ PageToken = userPage . NextPageToken ,
494+ } ) ;
495+ userPage = await pagedEnumerable . ReadPageAsync ( 3 ) ;
462496
497+ Assert . Equal ( 3 , userPage . Count ( ) ) ;
498+ Assert . Null ( userPage . NextPageToken ) ;
499+ Assert . Equal ( 2 , handler . Requests . Count ) ;
463500 query = this . ExtractQueryParams ( handler . Requests [ 1 ] ) ;
464- Assert . Single ( query ) ;
501+ Assert . Equal ( 2 , query . Count ) ;
465502 Assert . Equal ( "3" , query [ "maxResults" ] ) ;
503+ Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
504+ users . AddRange ( userPage ) ;
505+
506+ Assert . Equal ( 6 , users . Count ) ;
507+ for ( int i = 0 ; i < 6 ; i ++ )
508+ {
509+ Assert . Equal ( $ "user{ i + 1 } ", users [ i ] . Uid ) ;
510+ }
466511 }
467512
468513 [ Fact ]
469- public async Task ListUsersPageMultipleCalls ( )
514+ public async Task ListUsersReadLargePageSize ( )
470515 {
471516 var handler = new MockMessageHandler ( )
472517 {
@@ -479,7 +524,6 @@ public async Task ListUsersPageMultipleCalls()
479524
480525 Assert . Null ( userPage . NextPageToken ) ;
481526 Assert . Equal ( 6 , userPage . Count ( ) ) ;
482-
483527 Assert . Equal ( 2 , handler . Requests . Count ) ;
484528 var query = this . ExtractQueryParams ( handler . Requests [ 0 ] ) ;
485529 Assert . Single ( query ) ;
@@ -516,12 +560,10 @@ public async Task ListUsersAsRawResponses()
516560 Assert . Null ( tokens [ 1 ] ) ;
517561
518562 Assert . Equal ( 6 , users . Count ) ;
519- Assert . Equal ( "user1" , users [ 0 ] . Uid ) ;
520- Assert . Equal ( "user2" , users [ 1 ] . Uid ) ;
521- Assert . Equal ( "user3" , users [ 2 ] . Uid ) ;
522- Assert . Equal ( "user4" , users [ 3 ] . Uid ) ;
523- Assert . Equal ( "user5" , users [ 4 ] . Uid ) ;
524- Assert . Equal ( "user6" , users [ 5 ] . Uid ) ;
563+ for ( int i = 0 ; i < 6 ; i ++ )
564+ {
565+ Assert . Equal ( $ "user{ i + 1 } ", users [ i ] . Uid ) ;
566+ }
525567
526568 Assert . Equal ( 2 , handler . Requests . Count ) ;
527569 var query = this . ExtractQueryParams ( handler . Requests [ 0 ] ) ;
@@ -573,7 +615,7 @@ public void ListUsersPageSizeTooSmall()
573615 }
574616
575617 [ Fact ]
576- public void ListUsersStartingPageTokenEmpty ( )
618+ public void ListUsersPageTokenEmpty ( )
577619 {
578620 var handler = new MockMessageHandler ( )
579621 {
0 commit comments