// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Security.Claims; using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection.Fallback; using Xunit; namespace Microsoft.AspNet.Identity.Test { public class IdentityBuilderTest { [Fact] public void CanSpecifyUserValidatorInstance() { var services = new ServiceCollection(); var validator = new UserValidator(); services.AddIdentity(b => b.AddUserValidator(() => validator)); Assert.Equal(validator, services.BuildServiceProvider().GetService>()); } [Fact] public void CanSpecifyPasswordValidatorInstance() { var services = new ServiceCollection(); var validator = new PasswordValidator(); services.AddIdentity(b => b.AddPasswordValidator(() => validator)); Assert.Equal(validator, services.BuildServiceProvider().GetService>()); } [Fact] public void CanSpecifyPasswordHasherInstance() { CanOverride(new PasswordHasher()); } [Fact] public void CanSpecifyClaimsIdentityFactoryInstance() { CanOverride>(new ClaimsIdentityFactory()); } [Fact] public void EnsureDefaultServices() { var services = new ServiceCollection(); services.AddIdentity(identity => { }); var provider = services.BuildServiceProvider(); var userValidator = provider.GetService>() as UserValidator; Assert.NotNull(userValidator); var pwdValidator = provider.GetService>() as PasswordValidator; Assert.NotNull(pwdValidator); var hasher = provider.GetService() as PasswordHasher; Assert.NotNull(hasher); var claimsFactory = provider.GetService>() as ClaimsIdentityFactory; Assert.NotNull(claimsFactory); } private static void CanOverride(TService instance) { var services = new ServiceCollection(); services.AddIdentity(b => b.AddInstance(() => instance)); Assert.Equal(instance, services.BuildServiceProvider().GetService()); } } }