|
17 | 17 | using System.Linq;
|
18 | 18 | using System.Net.Http;
|
19 | 19 | using System.Text;
|
20 |
| -using System.Threading; |
21 | 20 | using System.Threading.Tasks;
|
22 | 21 | using System.Web;
|
23 | 22 | using FirebaseAdmin.Auth;
|
| 23 | +using FirebaseAdmin.Auth.Hash; |
24 | 24 | using Google.Apis.Auth.OAuth2;
|
25 | 25 | using Google.Apis.Util;
|
26 | 26 | using Xunit;
|
@@ -510,6 +510,108 @@ public async Task ListUsers()
|
510 | 510 | }
|
511 | 511 | }
|
512 | 512 |
|
| 513 | + [Fact] |
| 514 | + public async Task ImportUsers() |
| 515 | + { |
| 516 | + var randomUser = RandomUser.Create(); |
| 517 | + var args = new ImportUserRecordArgs() |
| 518 | + { |
| 519 | + Uid = randomUser.Uid, |
| 520 | + Email = randomUser.Email, |
| 521 | + DisplayName = "Random User", |
| 522 | + PhotoUrl = "https://example.com/photo.png", |
| 523 | + EmailVerified = true, |
| 524 | + }; |
| 525 | + |
| 526 | + IEnumerable<ImportUserRecordArgs> usersLst = new List<ImportUserRecordArgs>(); |
| 527 | + usersLst = usersLst.Append(args); |
| 528 | + |
| 529 | + var resp = await FirebaseAuth.DefaultInstance.ImportUsersAsync(usersLst); |
| 530 | + |
| 531 | + try |
| 532 | + { |
| 533 | + Assert.Equal(1, resp.SuccessCount); |
| 534 | + Assert.Equal(0, resp.FailureCount); |
| 535 | + |
| 536 | + var user = await FirebaseAuth.DefaultInstance.GetUserAsync(randomUser.Uid); |
| 537 | + Assert.Equal(randomUser.Email, user.Email); |
| 538 | + } |
| 539 | + finally |
| 540 | + { |
| 541 | + await FirebaseAuth.DefaultInstance.DeleteUserAsync(randomUser.Uid); |
| 542 | + } |
| 543 | + } |
| 544 | + |
| 545 | + [Fact] |
| 546 | + public async Task ImportUsersWithPassword() |
| 547 | + { |
| 548 | + var randomUser = RandomUser.Create(); |
| 549 | + var args = new ImportUserRecordArgs() |
| 550 | + { |
| 551 | + Uid = randomUser.Uid, |
| 552 | + Email = randomUser.Email, |
| 553 | + DisplayName = "Random User", |
| 554 | + PhotoUrl = "https://example.com/photo.png", |
| 555 | + EmailVerified = true, |
| 556 | + PasswordSalt = Encoding.ASCII.GetBytes("NaCl"), |
| 557 | + PasswordHash = Convert.FromBase64String("V358E8LdWJXAO7muq0CufVpEOXaj8aFiC7" |
| 558 | + + "T/rcaGieN04q/ZPJ08WhJEHGjj9lz/2TT+/86N5VjVoc5DdBhBiw=="), |
| 559 | + CustomClaims = new Dictionary<string, object>() |
| 560 | + { |
| 561 | + { "admin", true }, |
| 562 | + }, |
| 563 | + UserProviders = new List<UserProvider> |
| 564 | + { |
| 565 | + new UserProvider() |
| 566 | + { |
| 567 | + Uid = randomUser.Uid, |
| 568 | + Email = randomUser.Email, |
| 569 | + DisplayName = "John Doe", |
| 570 | + PhotoUrl = "http://example.com/123/photo.png", |
| 571 | + ProviderId = "google.com", |
| 572 | + }, |
| 573 | + new UserProvider() |
| 574 | + { |
| 575 | + Uid = "fb.uid", |
| 576 | + |
| 577 | + DisplayName = "John Doe", |
| 578 | + PhotoUrl = "http://example.com/123/photo.png", |
| 579 | + ProviderId = "facebook.com", |
| 580 | + }, |
| 581 | + }, |
| 582 | + }; |
| 583 | + |
| 584 | + var options = new UserImportOptions() |
| 585 | + { |
| 586 | + Hash = new Scrypt() |
| 587 | + { |
| 588 | + Key = Convert.FromBase64String("jxspr8Ki0RYycVU8zykbdLGjFQ3McFUH0uiiTvC" |
| 589 | + + "8pVMXAn210wjLNmdZJzxUECKbm0QsEmYUSDzZvpjeJ9WmXA=="), |
| 590 | + SaltSeparator = Convert.FromBase64String("Bw=="), |
| 591 | + Rounds = 8, |
| 592 | + MemoryCost = 14, |
| 593 | + }, |
| 594 | + }; |
| 595 | + IEnumerable<ImportUserRecordArgs> usersLst = new List<ImportUserRecordArgs>(); |
| 596 | + usersLst = usersLst.Append(args); |
| 597 | + var resp = await FirebaseAuth.DefaultInstance.ImportUsersAsync(usersLst, options); |
| 598 | + |
| 599 | + try |
| 600 | + { |
| 601 | + Assert.Equal(1, resp.SuccessCount); |
| 602 | + Assert.Equal(0, resp.FailureCount); |
| 603 | + |
| 604 | + var user = await FirebaseAuth.DefaultInstance.GetUserAsync(randomUser.Uid); |
| 605 | + Assert.Equal(randomUser.Email, user.Email); |
| 606 | + var idToken = await SignInWithPasswordAsync(randomUser.Email, "password"); |
| 607 | + Assert.False(string.IsNullOrEmpty(idToken)); |
| 608 | + } |
| 609 | + finally |
| 610 | + { |
| 611 | + await FirebaseAuth.DefaultInstance.DeleteUserAsync(randomUser.Uid); |
| 612 | + } |
| 613 | + } |
| 614 | + |
513 | 615 | [Fact]
|
514 | 616 | public async Task EmailVerificationLink()
|
515 | 617 | {
|
|
0 commit comments