public void NullOptions_Throws()
 {
     Assert.Throws <ArgumentNullException>("options", () =>
     {
         IdentityServices.AddUserValidators <User>(
             services: new ServiceCollection(),
             options: null);
     });
 }
 public void NullServices_Throws()
 {
     Assert.Throws <ArgumentNullException>("services", () =>
     {
         IdentityServices.AddUserValidators <User>(
             services: null,
             options: new UserOptions());
     });
 }
                public void NotRequirePasswordWithImplementingUser_DoesNotAddPasswordValidator()
                {
                    var services = new ServiceCollection();
                    var options  = new UserOptions()
                    {
                        RequirePassword = false
                    };

                    IdentityServices.AddUserValidators <User>(services, options);

                    var provider = services.BuildServiceProvider();

                    var validators = provider.GetRequiredService <IEnumerable <IUserValidator <User> > >();

                    Assert.Empty(validators.Where(v => v is UserPasswordHashRequiredValidator <User>));
                }
                public void RequireEmailWithImplementingUser_AddsEmailValidator()
                {
                    var services = new ServiceCollection();
                    var options  = new UserOptions()
                    {
                        RequireEmail = true
                    };

                    IdentityServices.AddUserValidators <User>(services, options);

                    var provider = services.BuildServiceProvider();

                    var validators = provider.GetRequiredService <IEnumerable <IUserValidator <User> > >();

                    Assert.Single(validators.Where(v => v is UserEmailRequiredValidator <User>));
                }
                public void RequireEmailWithBlankUser_DoesNotAddEmailValidator()
                {
                    var services = new ServiceCollection();
                    var options  = new UserOptions()
                    {
                        RequireEmail = true
                    };

                    IdentityServices.AddUserValidators <object>(services, options);

                    var provider = services.BuildServiceProvider();

                    var validators = provider.GetRequiredService <IEnumerable <IUserValidator <User> > >();

                    Assert.Empty(validators.Where(v => v is UserEmailRequiredValidator <User>));
                }
                public void NotNullServices_AddsIIdentityService()
                {
                    var services = new ServiceCollection();

                    IdentityServices.AddOptions(services, new IdentityOptions());
                    IdentityServices.AddInfrastructure(services);
                    IdentityServices.AddPasswords(services);
                    IdentityServices.AddUserHelpers <User>(services);
                    IdentityServices.AddUserValidators <User>(services, new UserOptions());
                    IdentityServices.AddSingleUseTokenService <FakeSingleUseTokenService>(
                        services);
                    IdentityServices.AddTimedLockoutStore <FakeTimedLockoutStore>(services);
                    IdentityServices.AddUserEmailStore <User, FakeUserEmailStore>(services);
                    IdentityServices.AddUserStore <User, FakeUserStore>(services);
                    IdentityServices.AddUserClaims <User>(services);

                    // Act
                    IdentityServices.AddIdentityServices <User>(services);

                    var provider = services.BuildServiceProvider();

                    Assert.NotNull(provider.GetRequiredService <IIdentityService <User> >());
                    Assert.True(provider.GetRequiredService <IIdentityService <User> >() is IdentityService <User>);
                }