public async Task ImportUsers()
        {
            var randomUser = TemporaryUserBuilder.RandomUserRecordArgs();
            var args       = new ImportUserRecordArgs()
            {
                Uid           = randomUser.Uid,
                Email         = randomUser.Email,
                DisplayName   = "Random User",
                PhotoUrl      = "https://example.com/photo.png",
                EmailVerified = true,
            };
            var usersLst = new List <ImportUserRecordArgs>()
            {
                args
            };

            var resp = await this.Auth.ImportUsersAsync(usersLst);

            this.userBuilder.AddUid(randomUser.Uid);

            Assert.Equal(1, resp.SuccessCount);
            Assert.Equal(0, resp.FailureCount);

            var user = await this.Auth.GetUserAsync(randomUser.Uid);

            Assert.Equal(randomUser.Email, user.Email);
        }
Esempio n. 2
0
        public async Task ImportUsers()
        {
            var randomUser = RandomUser.Create();
            var args       = new ImportUserRecordArgs()
            {
                Uid           = randomUser.Uid,
                Email         = randomUser.Email,
                DisplayName   = "Random User",
                PhotoUrl      = "https://example.com/photo.png",
                EmailVerified = true,
            };

            IEnumerable <ImportUserRecordArgs> usersLst = new List <ImportUserRecordArgs>();

            usersLst = usersLst.Append(args);

            var resp = await FirebaseAuth.DefaultInstance.ImportUsersAsync(usersLst);

            try
            {
                Assert.Equal(1, resp.SuccessCount);
                Assert.Equal(0, resp.FailureCount);

                var user = await FirebaseAuth.DefaultInstance.GetUserAsync(randomUser.Uid);

                Assert.Equal(randomUser.Email, user.Email);
            }
            finally
            {
                await FirebaseAuth.DefaultInstance.DeleteUserAsync(randomUser.Uid);
            }
        }
Esempio n. 3
0
        private async Task <string> ImportUserWithProviderAsync()
        {
            var randomArgs = TemporaryUserBuilder.RandomUserRecordArgs();
            var importUser = new ImportUserRecordArgs()
            {
                Uid           = randomArgs.Uid,
                Email         = randomArgs.Email,
                PhoneNumber   = randomArgs.PhoneNumber,
                UserProviders = new List <UserProvider>()
                {
                    new UserProvider()
                    {
                        Uid        = $"google_{randomArgs.Uid}",
                        ProviderId = "google.com",
                    },
                },
            };

            var result = await FirebaseAuth.DefaultInstance.ImportUsersAsync(
                new List <ImportUserRecordArgs>()
            {
                importUser,
            });

            Assert.Equal(1, result.SuccessCount);
            this.userBuilder.AddUid(randomArgs.Uid);
            return(randomArgs.Uid);
        }
        public void Serialize()
        {
            var userProviders = new List <UserProvider>
            {
                new UserProvider()
                {
                    Uid        = "google.uid",
                    ProviderId = "google.com",
                },
            };

            var customClaims = new Dictionary <string, object>()
            {
                { "admin", true },
            };

            var userMetadata = new UserMetadata(1, 2, null);
            var passwordHash = Encoding.ASCII.GetBytes("secret");
            var passwordSalt = Encoding.ASCII.GetBytes("salt");

            var importUserRecordArgs = new ImportUserRecordArgs()
            {
                Uid           = "123",
                Email         = "*****@*****.**",
                EmailVerified = true,
                DisplayName   = "Example",
                PhotoUrl      = "http://example.com/photo",
                PhoneNumber   = "+11234567890",
                Disabled      = false,
                UserMetadata  = userMetadata,
                PasswordHash  = passwordHash,
                PasswordSalt  = passwordSalt,
                CustomClaims  = customClaims,
                UserProviders = userProviders,
            };

            var expected = new Dictionary <string, object>()
            {
                { "createdAt", userMetadata.CreationTimestamp },
                { "customAttributes", JsonConvert.SerializeObject(customClaims) },
                { "disabled", false },
                { "displayName", "Example" },
                { "email", "*****@*****.**" },
                { "emailVerified", true },
                { "lastLoginAt", userMetadata.LastSignInTimestamp },
                { "passwordHash", JwtUtils.UrlSafeBase64Encode(passwordHash) },
                { "salt", JwtUtils.UrlSafeBase64Encode(passwordSalt) },
                { "phoneNumber", "+11234567890" },
                { "photoUrl", "http://example.com/photo" },
                { "providerUserInfo", userProviders.Select(userProvider => userProvider.ToRequest()) },
                { "localId", "123" },
            };

            Assert.Equal(
                JsonConvert.SerializeObject(expected),
                JsonConvert.SerializeObject(importUserRecordArgs.ToRequest()));
        }
        public void MissingUid()
        {
            var userRecordArgsWithMissingUid = new ImportUserRecordArgs()
            {
            };

            Assert.Throws <ArgumentNullException>(
                () => userRecordArgsWithMissingUid.ToRequest());
        }
        public void InvalidPhone()
        {
            var userProviderWithMissingUid = new ImportUserRecordArgs()
            {
                Uid         = "123",
                PhoneNumber = "11234567890",
            };

            Assert.Throws <ArgumentException>(
                () => userProviderWithMissingUid.ToRequest());
        }
        public void InvalidEmail()
        {
            var userRecordArgsInvalidEmail = new ImportUserRecordArgs()
            {
                Uid   = "123",
                Email = "invalidemail",
            };

            Assert.Throws <ArgumentException>(
                () => userRecordArgsInvalidEmail.ToRequest());
        }
        public void RequiredOnly()
        {
            var userRecordMinimal = new ImportUserRecordArgs()
            {
                Uid = "123",
            };

            var expected = new Dictionary <string, object>()
            {
                { "localId", "123" },
            };

            Assert.Equal(
                NewtonsoftJsonSerializer.Instance.Serialize(expected),
                NewtonsoftJsonSerializer.Instance.Serialize(userRecordMinimal.ToRequest()));
        }
 public void ReservedCustomClaims()
 {
     foreach (var reservedKey in FirebaseTokenFactory.ReservedClaims)
     {
         var userProviderWithReservedClaimKey = new ImportUserRecordArgs()
         {
             Uid          = "123",
             CustomClaims = new Dictionary <string, object>()
             {
                 { reservedKey, "abc" },
             },
         };
         Assert.Throws <ArgumentException>(
             () => userProviderWithReservedClaimKey.ToRequest());
     }
 }
        public async Task ImportUsersPasswordNoHash()
        {
            var args = new ImportUserRecordArgs()
            {
                Uid          = "123",
                Email        = "*****@*****.**",
                PasswordSalt = Encoding.ASCII.GetBytes("abc"),
                PasswordHash = Encoding.ASCII.GetBytes("def"),
            };

            var usersLst = new List <ImportUserRecordArgs>()
            {
                args,
            };
            await Assert.ThrowsAsync <NullReferenceException>(
                async() => await FirebaseAuth.DefaultInstance.ImportUsersAsync(usersLst));
        }
        public async Task ImportUsersWithPassword()
        {
            var randomUser = TemporaryUserBuilder.RandomUserRecordArgs();
            var args       = new ImportUserRecordArgs()
            {
                Uid           = randomUser.Uid,
                Email         = randomUser.Email,
                DisplayName   = "Random User",
                PhotoUrl      = "https://example.com/photo.png",
                EmailVerified = true,
                PasswordSalt  = Encoding.ASCII.GetBytes("NaCl"),
                PasswordHash  = Convert.FromBase64String("V358E8LdWJXAO7muq0CufVpEOXaj8aFiC7"
                                                         + "T/rcaGieN04q/ZPJ08WhJEHGjj9lz/2TT+/86N5VjVoc5DdBhBiw=="),
                CustomClaims = new Dictionary <string, object>()
                {
                    { "admin", true },
                },
                UserProviders = new List <UserProvider>
                {
                    new UserProvider()
                    {
                        Uid         = randomUser.Uid,
                        Email       = randomUser.Email,
                        DisplayName = "John Doe",
                        PhotoUrl    = "http://example.com/123/photo.png",
                        ProviderId  = "google.com",
                    },
                    new UserProvider()
                    {
                        Uid         = "fb.uid",
                        Email       = "*****@*****.**",
                        DisplayName = "John Doe",
                        PhotoUrl    = "http://example.com/123/photo.png",
                        ProviderId  = "facebook.com",
                    },
                },
            };

            var options = new UserImportOptions()
            {
                Hash = new Scrypt()
                {
                    Key = Convert.FromBase64String("jxspr8Ki0RYycVU8zykbdLGjFQ3McFUH0uiiTvC"
                                                   + "8pVMXAn210wjLNmdZJzxUECKbm0QsEmYUSDzZvpjeJ9WmXA=="),
                    SaltSeparator = Convert.FromBase64String("Bw=="),
                    Rounds        = 8,
                    MemoryCost    = 14,
                },
            };
            var usersLst = new List <ImportUserRecordArgs>()
            {
                args
            };

            var resp = await this.Auth.ImportUsersAsync(usersLst, options);

            this.userBuilder.AddUid(randomUser.Uid);

            Assert.Equal(1, resp.SuccessCount);
            Assert.Equal(0, resp.FailureCount);

            var user = await this.Auth.GetUserAsync(randomUser.Uid);

            Assert.Equal(randomUser.Email, user.Email);
            var idToken = await AuthIntegrationUtils.SignInWithPasswordAsync(
                randomUser.Email, "password", this.fixture.TenantId);

            Assert.False(string.IsNullOrEmpty(idToken));
        }