@@ -324,13 +324,12 @@ public async Task ListUsersPaged()
324324 } ,
325325 } ;
326326 var userManager = this . CreateFirebaseUserManager ( handler ) ;
327-
328- var usersPage = userManager . ListUsers ( new ListUsersOptions ( ) ) ;
329-
330327 var users = new List < ExportedUserRecord > ( ) ;
331328 var tokens = new List < string > ( ) ;
332329 var pageCounter = 0 ;
333- for ( Page < ExportedUserRecord > userPage ; ( userPage = await usersPage . ReadPageAsync ( 3 ) ) != null ; )
330+
331+ var pagedEnumerable = userManager . ListUsers ( new ListUsersOptions ( ) ) ;
332+ for ( Page < ExportedUserRecord > userPage ; ( userPage = await pagedEnumerable . ReadPageAsync ( 3 ) ) != null ; )
334333 {
335334 pageCounter ++ ;
336335 tokens . Add ( userPage . NextPageToken ) ;
@@ -351,6 +350,74 @@ public async Task ListUsersPaged()
351350 Assert . Equal ( "user4" , users [ 3 ] . Uid ) ;
352351 Assert . Equal ( "user5" , users [ 4 ] . Uid ) ;
353352 Assert . Equal ( "user6" , users [ 5 ] . Uid ) ;
353+
354+ Assert . Equal ( 2 , handler . Requests . Count ) ;
355+ var req = handler . Requests [ 0 ] ;
356+ var query = req . Url . Query . Substring ( 1 ) . Split ( '&' ) . ToDictionary (
357+ entry => entry . Split ( '=' ) [ 0 ] , entry => entry . Split ( '=' ) [ 1 ] ) ;
358+ Assert . Equal ( "3" , query [ "maxResults" ] ) ;
359+ Assert . Equal ( string . Empty , query [ "nextPageToken" ] ) ;
360+
361+ req = handler . Requests [ 1 ] ;
362+ query = req . Url . Query . Substring ( 1 ) . Split ( '&' ) . ToDictionary (
363+ entry => entry . Split ( '=' ) [ 0 ] , entry => entry . Split ( '=' ) [ 1 ] ) ;
364+ Assert . Equal ( "3" , query [ "maxResults" ] ) ;
365+ Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
366+ }
367+
368+ [ Fact ]
369+ public void ListUsersByEntries ( )
370+ {
371+ var handler = new MockMessageHandler ( )
372+ {
373+ Response = new List < string > ( )
374+ {
375+ @"{
376+ ""nextPageToken"": ""token"",
377+ ""users"": [
378+ {""localId"": ""user1""},
379+ {""localId"": ""user2""},
380+ {""localId"": ""user3""}
381+ ]
382+ }" ,
383+ @"{
384+ ""users"": [
385+ {""localId"": ""user4""},
386+ {""localId"": ""user5""},
387+ {""localId"": ""user6""}
388+ ]
389+ }" ,
390+ } ,
391+ } ;
392+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
393+
394+ var pagedEnumerable = userManager . ListUsers ( new ListUsersOptions ( ) ) ;
395+ var users = new List < ExportedUserRecord > ( ) ;
396+ foreach ( var user in pagedEnumerable . ToEnumerable ( ) )
397+ {
398+ users . Add ( user ) ;
399+ }
400+
401+ Assert . Equal ( 6 , users . Count ) ;
402+ Assert . Equal ( "user1" , users [ 0 ] . Uid ) ;
403+ Assert . Equal ( "user2" , users [ 1 ] . Uid ) ;
404+ Assert . Equal ( "user3" , users [ 2 ] . Uid ) ;
405+ Assert . Equal ( "user4" , users [ 3 ] . Uid ) ;
406+ Assert . Equal ( "user5" , users [ 4 ] . Uid ) ;
407+ Assert . Equal ( "user6" , users [ 5 ] . Uid ) ;
408+
409+ Assert . Equal ( 2 , handler . Requests . Count ) ;
410+ var req = handler . Requests [ 0 ] ;
411+ var query = req . Url . Query . Substring ( 1 ) . Split ( '&' ) . ToDictionary (
412+ entry => entry . Split ( '=' ) [ 0 ] , entry => entry . Split ( '=' ) [ 1 ] ) ;
413+ Assert . Equal ( "1000" , query [ "maxResults" ] ) ;
414+ Assert . Equal ( string . Empty , query [ "nextPageToken" ] ) ;
415+
416+ req = handler . Requests [ 1 ] ;
417+ query = req . Url . Query . Substring ( 1 ) . Split ( '&' ) . ToDictionary (
418+ entry => entry . Split ( '=' ) [ 0 ] , entry => entry . Split ( '=' ) [ 1 ] ) ;
419+ Assert . Equal ( "1000" , query [ "maxResults" ] ) ;
420+ Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
354421 }
355422
356423 [ Fact ]
@@ -370,20 +437,61 @@ public async Task ListUsers()
370437 } ,
371438 } ,
372439 } ;
373-
374440 var userManager = this . CreateFirebaseUserManager ( handler ) ;
375441
376- var usersPage = userManager . ListUsers ( new ListUsersOptions ( ) ) ;
377- var listUsersRequest = await usersPage . ReadPageAsync ( 3 ) ;
378- var userRecords = listUsersRequest . ToList ( ) ;
379- Assert . Equal ( nextPageToken , listUsersRequest . NextPageToken ) ;
442+ var pagedEnumerable = userManager . ListUsers ( new ListUsersOptions ( ) ) ;
443+ var usersPage = await pagedEnumerable . ReadPageAsync ( 3 ) ;
444+
445+ var userRecords = usersPage . ToList ( ) ;
446+ Assert . Equal ( nextPageToken , usersPage . NextPageToken ) ;
380447 Assert . Equal ( 3 , userRecords . Count ) ;
381448 Assert . Equal ( "user1" , userRecords [ 0 ] . Uid ) ;
382449 Assert . Equal ( "user2" , userRecords [ 1 ] . Uid ) ;
383450 Assert . Equal ( "user3" , userRecords [ 2 ] . Uid ) ;
451+
452+ Assert . Single ( handler . Requests ) ;
453+ var req = handler . Requests [ 0 ] ;
454+ var query = req . Url . Query . Substring ( 1 ) . Split ( '&' ) . ToDictionary (
455+ entry => entry . Split ( '=' ) [ 0 ] , entry => entry . Split ( '=' ) [ 1 ] ) ;
456+ Assert . Equal ( "3" , query [ "maxResults" ] ) ;
457+ Assert . Equal ( string . Empty , query [ "nextPageToken" ] ) ;
384458 }
385459
386460 [ Fact ]
461+ public void ListUsersMaxDefault ( )
462+ {
463+ var nextPageToken = Guid . NewGuid ( ) . ToString ( ) ;
464+ var handler = new MockMessageHandler ( )
465+ {
466+ Response = new DownloadAccountResponse ( )
467+ {
468+ Users = new List < GetAccountInfoResponse . User > ( )
469+ {
470+ new GetAccountInfoResponse . User ( ) { UserId = "user1" } ,
471+ new GetAccountInfoResponse . User ( ) { UserId = "user2" } ,
472+ new GetAccountInfoResponse . User ( ) { UserId = "user3" } ,
473+ } ,
474+ } ,
475+ } ;
476+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
477+
478+ var pagedEnumerable = userManager . ListUsers ( new ListUsersOptions ( ) ) ;
479+ var userRecords = pagedEnumerable . ToEnumerable ( ) . ToList ( ) ;
480+
481+ Assert . Equal ( 3 , userRecords . Count ) ;
482+ Assert . Equal ( "user1" , userRecords [ 0 ] . Uid ) ;
483+ Assert . Equal ( "user2" , userRecords [ 1 ] . Uid ) ;
484+ Assert . Equal ( "user3" , userRecords [ 2 ] . Uid ) ;
485+ Assert . Single ( handler . Requests ) ;
486+
487+ var req = handler . Requests [ 0 ] ;
488+ var query = req . Url . Query . Substring ( 1 ) . Split ( '&' ) . ToDictionary (
489+ entry => entry . Split ( '=' ) [ 0 ] , entry => entry . Split ( '=' ) [ 1 ] ) ;
490+ Assert . Equal ( "1000" , query [ "maxResults" ] ) ;
491+ Assert . Equal ( string . Empty , query [ "nextPageToken" ] ) ;
492+ }
493+
494+ /* [Fact]
387495 public void ListUsersRequestOptionsAreSet()
388496 {
389497 var userManager = this.CreateFirebaseUserManager(new MockMessageHandler());
@@ -401,7 +509,7 @@ public void ListUsersRequestOptionsAreSet()
401509 listUsersRequest.SetPageToken("theNewNextPageToken");
402510 Assert.Equal(10, int.Parse(listUsersRequest.RequestParameters["maxResults"].DefaultValue));
403511 Assert.Equal("theNewNextPageToken", listUsersRequest.RequestParameters["nextPageToken"].DefaultValue);
404- }
512+ } */
405513
406514 [ Fact ]
407515 public async Task CreateUser ( )
0 commit comments