From 288cb6c58f26aa10a76c583e18f3063b14074b4f Mon Sep 17 00:00:00 2001 From: Hao Kung Date: Tue, 5 May 2015 14:35:10 -0700 Subject: [PATCH] Test and misc cleanup --- .../IdentityErrorDescriber.cs | 2 - src/Microsoft.AspNet.Identity/RoleManager.cs | 5 +- .../SignInManager.cs | 4 +- src/Microsoft.AspNet.Identity/UserManager.cs | 5 +- .../CustomPocoTest.cs | 1 - .../DefaultPocoTest.cs | 51 +++++------ .../SqlStoreTestBase.cs | 72 +-------------- .../UserStoreGuidKeyTest.cs | 2 - .../UserStoreIntKeyTest.cs | 1 - .../UserStoreStringKeyTest.cs | 1 - .../UserStoreTest.cs | 89 ++----------------- .../FunctionalTest.cs | 40 +++++++-- .../RoleValidatorTest.cs | 2 +- .../UserManagerTest.cs | 4 +- .../UserValidatorTest.cs | 2 +- test/Shared/UserManagerTestBase.cs | 57 ++++++------ 16 files changed, 98 insertions(+), 240 deletions(-) diff --git a/src/Microsoft.AspNet.Identity/IdentityErrorDescriber.cs b/src/Microsoft.AspNet.Identity/IdentityErrorDescriber.cs index b4435891cd..1561a34ddb 100644 --- a/src/Microsoft.AspNet.Identity/IdentityErrorDescriber.cs +++ b/src/Microsoft.AspNet.Identity/IdentityErrorDescriber.cs @@ -5,8 +5,6 @@ namespace Microsoft.AspNet.Identity { public class IdentityErrorDescriber { - public static IdentityErrorDescriber Default = new IdentityErrorDescriber(); - public virtual IdentityError DefaultError() { return new IdentityError diff --git a/src/Microsoft.AspNet.Identity/RoleManager.cs b/src/Microsoft.AspNet.Identity/RoleManager.cs index b3d494e96e..1f32ae177b 100644 --- a/src/Microsoft.AspNet.Identity/RoleManager.cs +++ b/src/Microsoft.AspNet.Identity/RoleManager.cs @@ -37,7 +37,7 @@ namespace Microsoft.AspNet.Identity IEnumerable> roleValidators, ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, - ILoggerFactory logger, + ILogger> logger, IHttpContextAccessor contextAccessor) { if (store == null) @@ -48,6 +48,7 @@ namespace Microsoft.AspNet.Identity KeyNormalizer = keyNormalizer ?? new UpperInvariantLookupNormalizer(); ErrorDescriber = errors ?? new IdentityErrorDescriber(); _context = contextAccessor?.HttpContext; + Logger = logger; if (roleValidators != null) { @@ -56,8 +57,6 @@ namespace Microsoft.AspNet.Identity RoleValidators.Add(v); } } - - Logger = logger?.CreateLogger>(); } /// diff --git a/src/Microsoft.AspNet.Identity/SignInManager.cs b/src/Microsoft.AspNet.Identity/SignInManager.cs index 173cc067b6..11bddeb610 100644 --- a/src/Microsoft.AspNet.Identity/SignInManager.cs +++ b/src/Microsoft.AspNet.Identity/SignInManager.cs @@ -26,7 +26,7 @@ namespace Microsoft.AspNet.Identity IHttpContextAccessor contextAccessor, IUserClaimsPrincipalFactory claimsFactory, IOptions optionsAccessor, - ILoggerFactory logger) + ILogger> logger) { if (userManager == null) { @@ -45,7 +45,7 @@ namespace Microsoft.AspNet.Identity Context = contextAccessor.HttpContext; ClaimsFactory = claimsFactory; Options = optionsAccessor?.Options ?? new IdentityOptions(); - Logger = logger?.CreateLogger>(); + Logger = logger; } protected internal virtual ILogger Logger { get; set; } diff --git a/src/Microsoft.AspNet.Identity/UserManager.cs b/src/Microsoft.AspNet.Identity/UserManager.cs index 3e9fb7b27d..b373aa9cc8 100644 --- a/src/Microsoft.AspNet.Identity/UserManager.cs +++ b/src/Microsoft.AspNet.Identity/UserManager.cs @@ -52,7 +52,7 @@ namespace Microsoft.AspNet.Identity ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, IEnumerable> tokenProviders, - ILoggerFactory logger, + ILogger> logger, IHttpContextAccessor contextAccessor) { if (store == null) @@ -65,6 +65,7 @@ namespace Microsoft.AspNet.Identity PasswordHasher = passwordHasher; KeyNormalizer = keyNormalizer; ErrorDescriber = errors; + Logger = logger; if (userValidators != null) { @@ -81,8 +82,6 @@ namespace Microsoft.AspNet.Identity } } - Logger = logger?.CreateLogger>(); - if (tokenProviders != null) { foreach (var tokenProvider in tokenProviders) diff --git a/test/Microsoft.AspNet.Identity.EntityFramework.Test/CustomPocoTest.cs b/test/Microsoft.AspNet.Identity.EntityFramework.Test/CustomPocoTest.cs index 73e5934112..3c0ec22d17 100644 --- a/test/Microsoft.AspNet.Identity.EntityFramework.Test/CustomPocoTest.cs +++ b/test/Microsoft.AspNet.Identity.EntityFramework.Test/CustomPocoTest.cs @@ -6,7 +6,6 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNet.Identity.Test; using Microsoft.Data.Entity; -using Microsoft.Data.Entity.Metadata; using Xunit; namespace Microsoft.AspNet.Identity.EntityFramework.Test diff --git a/test/Microsoft.AspNet.Identity.EntityFramework.Test/DefaultPocoTest.cs b/test/Microsoft.AspNet.Identity.EntityFramework.Test/DefaultPocoTest.cs index a0f4f7df2e..e8d4137c99 100644 --- a/test/Microsoft.AspNet.Identity.EntityFramework.Test/DefaultPocoTest.cs +++ b/test/Microsoft.AspNet.Identity.EntityFramework.Test/DefaultPocoTest.cs @@ -41,16 +41,27 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test DropDb(); } + private IServiceProvider ConfigureServices() + { + var services = new ServiceCollection(); + DbUtil.ConfigureDbServices(ConnectionString, services); + services.AddLogging(); + services.AddIdentity().AddEntityFrameworkStores(); + return services.BuildServiceProvider(); + } + + private ApplicationBuilder CreateBuilder() + { + var builder = new ApplicationBuilder(CallContextServiceLocator.Locator.ServiceProvider); + builder.ApplicationServices = ConfigureServices(); + return builder; + } + [Fact] public async Task EnsureStartupUsageWorks() { var context = CreateContext(true); - var builder = new ApplicationBuilder(CallContextServiceLocator.Locator.ServiceProvider); - - var services = new ServiceCollection(); - DbUtil.ConfigureDbServices(ConnectionString, services); - services.AddIdentity().AddEntityFrameworkStores(); - builder.ApplicationServices = services.BuildServiceProvider(); + var builder = CreateBuilder(); var userStore = builder.ApplicationServices.GetRequiredService>(); var userManager = builder.ApplicationServices.GetRequiredService>(); @@ -70,12 +81,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test { // Arrange CreateContext(true); - var builder = new ApplicationBuilder(CallContextServiceLocator.Locator.ServiceProvider); - - var services = new ServiceCollection(); - DbUtil.ConfigureDbServices(ConnectionString, services); - services.AddIdentity().AddEntityFrameworkStores(); - builder.ApplicationServices = services.BuildServiceProvider(); + var builder = CreateBuilder(); var userManager = builder.ApplicationServices.GetRequiredService>(); var dbContext = builder.ApplicationServices.GetRequiredService(); @@ -102,12 +108,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test { // Arrange CreateContext(true); - var builder = new ApplicationBuilder(CallContextServiceLocator.Locator.ServiceProvider); - - var services = new ServiceCollection(); - DbUtil.ConfigureDbServices(ConnectionString, services); - services.AddIdentity().AddEntityFrameworkStores(); - builder.ApplicationServices = services.BuildServiceProvider(); + var builder = CreateBuilder(); var userManager = builder.ApplicationServices.GetRequiredService>(); var dbContext = builder.ApplicationServices.GetRequiredService(); @@ -134,12 +135,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test { // Arrange CreateContext(true); - var builder = new ApplicationBuilder(CallContextServiceLocator.Locator.ServiceProvider); - - var services = new ServiceCollection(); - DbUtil.ConfigureDbServices(ConnectionString, services); - services.AddIdentity().AddEntityFrameworkStores(); - builder.ApplicationServices = services.BuildServiceProvider(); + var builder = CreateBuilder(); var userManager = builder.ApplicationServices.GetRequiredService>(); var roleManager = builder.ApplicationServices.GetRequiredService>(); @@ -180,12 +176,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test { // Arrange CreateContext(true); - var builder = new ApplicationBuilder(CallContextServiceLocator.Locator.ServiceProvider); - - var services = new ServiceCollection(); - DbUtil.ConfigureDbServices(ConnectionString, services); - services.AddIdentity().AddEntityFrameworkStores(); - builder.ApplicationServices = services.BuildServiceProvider(); + var builder = CreateBuilder(); var roleManager = builder.ApplicationServices.GetRequiredService>(); var dbContext = builder.ApplicationServices.GetRequiredService(); diff --git a/test/Microsoft.AspNet.Identity.EntityFramework.Test/SqlStoreTestBase.cs b/test/Microsoft.AspNet.Identity.EntityFramework.Test/SqlStoreTestBase.cs index 6d7f312b06..eecbe46072 100644 --- a/test/Microsoft.AspNet.Identity.EntityFramework.Test/SqlStoreTestBase.cs +++ b/test/Microsoft.AspNet.Identity.EntityFramework.Test/SqlStoreTestBase.cs @@ -3,15 +3,12 @@ using System; using System.Linq; +using System.Linq.Expressions; using System.Security.Claims; using System.Threading.Tasks; -using Microsoft.AspNet.Builder; using Microsoft.AspNet.Identity.Test; -using Microsoft.AspNet.TestHost; using Microsoft.Framework.DependencyInjection; -using Microsoft.Framework.Runtime.Infrastructure; using Xunit; -using System.Linq.Expressions; namespace Microsoft.AspNet.Identity.EntityFramework.Test { @@ -108,73 +105,6 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test CreateContext(); } - // https://github.com/aspnet/Identity/issues/411 - //[Fact] - //public async Task EnsureStartupUsageWorks() - //{ - // EnsureDatabase(); - // var server = TestServer.Create( - // app => - // { - // app.UseIdentity(); - // app.Run(async context => - // { - // var userStore = builder.ApplicationServices.GetRequiredService>(); - // var userManager = builder.ApplicationServices.GetRequiredService>(); - - // Assert.NotNull(userStore); - // Assert.NotNull(userManager); - - // const string password = "1qaz@WSX"; - // var user = CreateTestUser(); - // user.UserName = "admin1111"; - // IdentityResultAssert.IsSuccess(await userManager.CreateAsync(user, password)); - // IdentityResultAssert.IsSuccess(await userManager.DeleteAsync(user)); - // }); - // }, - // services => - // { - // DbUtil.ConfigureDbServices(ConnectionString, services); - // services.AddIdentity().AddEntityFrameworkStores(); - // }); - - - - //} - - //[Fact] - //public async Task EnsureStartupOptionsChangeWorks() - //{ - // EnsureDatabase(); - // var builder = new ApplicationBuilder(CallContextServiceLocator.Locator.ServiceProvider); - - // builder.UseServices(services => - // { - // DbUtil.ConfigureDbServices(ConnectionString, services); - // services.AddIdentity(options => - // { - // options.Password.RequiredLength = 1; - // options.Password.RequireLowercase = false; - // options.Password.RequireNonLetterOrDigit = false; - // options.Password.RequireUppercase = false; - // options.Password.RequireDigit = false; - // options.User.UserNameValidationRegex = null; - // }).AddEntityFrameworkStores(); - // }); - - // var userStore = builder.ApplicationServices.GetRequiredService>(); - // var userManager = builder.ApplicationServices.GetRequiredService>(); - - // Assert.NotNull(userStore); - // Assert.NotNull(userManager); - - // const string userName = "admin"; - // const string password = "a"; - // var user = CreateTestUser(userName); - // IdentityResultAssert.IsSuccess(await userManager.CreateAsync(user, password)); - // IdentityResultAssert.IsSuccess(await userManager.DeleteAsync(user)); - //} - [Fact] public void CanCreateUserUsingEF() { diff --git a/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreGuidKeyTest.cs b/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreGuidKeyTest.cs index a12d1c19ba..6c14a00a0d 100644 --- a/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreGuidKeyTest.cs +++ b/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreGuidKeyTest.cs @@ -2,8 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Linq.Expressions; -using Microsoft.AspNet.Identity.Test; using Microsoft.Framework.DependencyInjection; using Xunit; diff --git a/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreIntKeyTest.cs b/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreIntKeyTest.cs index a3365a27b6..0e3acf7e73 100644 --- a/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreIntKeyTest.cs +++ b/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreIntKeyTest.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Linq.Expressions; using Xunit; namespace Microsoft.AspNet.Identity.EntityFramework.Test diff --git a/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreStringKeyTest.cs b/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreStringKeyTest.cs index 415c5d46fe..1706d67680 100644 --- a/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreStringKeyTest.cs +++ b/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreStringKeyTest.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Linq.Expressions; using Xunit; namespace Microsoft.AspNet.Identity.EntityFramework.Test diff --git a/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreTest.cs b/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreTest.cs index c75390911a..37f8753de9 100644 --- a/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreTest.cs +++ b/test/Microsoft.AspNet.Identity.EntityFramework.Test/UserStoreTest.cs @@ -5,13 +5,8 @@ using System; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; -using Microsoft.AspNet.Builder; -using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Identity.Test; -using Microsoft.AspNet.TestHost; -using Microsoft.Data.Entity; using Microsoft.Framework.DependencyInjection; -using Microsoft.Framework.Runtime.Infrastructure; using Xunit; namespace Microsoft.AspNet.Identity.EntityFramework.Test @@ -43,73 +38,6 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test db.Database.EnsureDeleted(); } - //https://github.com/aspnet/Identity/issues/411 - //[Fact] - //public async Task EnsureStartupUsageWorks() - //{ - // EnsureDatabase(); - - // var server = TestServer.Create( - // app => - // { - // app.UseIdentity(); - // app.Run(async context => - // { - // var userStore = context.RequestServices.GetRequiredService>(); - // var userManager = context.RequestServices.GetRequiredService>(); - - // Assert.NotNull(userStore); - // Assert.NotNull(userManager); - - // const string userName = "admin"; - // const string password = "1qaz@WSX"; - // var user = new ApplicationUser { UserName = userName }; - // IdentityResultAssert.IsSuccess(await userManager.CreateAsync(user, password)); - // IdentityResultAssert.IsSuccess(await userManager.DeleteAsync(user)); - // }); - // }, - // services => - // { - // DbUtil.ConfigureDbServices(ConnectionString, services); - // services.AddIdentity().AddEntityFrameworkStores(); - // }); - //} - - //[Fact] - //public async Task EnsureStartupOptionsChangeWorks() - //{ - // EnsureDatabase(); - // var builder = new ApplicationBuilder(CallContextServiceLocator.Locator.ServiceProvider); - - // builder.UseServices(services => - // { - // services.AddSingleton(); - // services.AddEntityFramework() - // .AddSqlServer() - // .AddDbContext(options => options.UseSqlServer(ConnectionString)); - // services.AddIdentity(options => - // { - // options.Password.RequiredLength = 1; - // options.Password.RequireLowercase = false; - // options.Password.RequireNonLetterOrDigit = false; - // options.Password.RequireUppercase = false; - // options.Password.RequireDigit = false; - // }).AddEntityFrameworkStores(); - // }); - - // var userStore = builder.ApplicationServices.GetRequiredService>(); - // var userManager = builder.ApplicationServices.GetRequiredService>(); - - // Assert.NotNull(userStore); - // Assert.NotNull(userManager); - - // const string userName = "admin"; - // const string password = "a"; - // var user = new ApplicationUser { UserName = userName }; - // IdentityResultAssert.IsSuccess(await userManager.CreateAsync(user, password)); - // IdentityResultAssert.IsSuccess(await userManager.DeleteAsync(user)); - //} - [Fact] public void CanCreateUserUsingEF() { @@ -302,7 +230,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test user1.UserName = Guid.NewGuid().ToString(); user2.UserName = Guid.NewGuid().ToString(); IdentityResultAssert.IsSuccess(await manager1.UpdateAsync(user1)); - IdentityResultAssert.IsFailure(await manager2.UpdateAsync(user2), IdentityErrorDescriber.Default.ConcurrencyFailure()); + IdentityResultAssert.IsFailure(await manager2.UpdateAsync(user2), new IdentityErrorDescriber().ConcurrencyFailure()); } } @@ -326,7 +254,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test user.UserName = Guid.NewGuid().ToString(); user2.UserName = Guid.NewGuid().ToString(); IdentityResultAssert.IsSuccess(await manager1.UpdateAsync(user)); - IdentityResultAssert.IsFailure(await manager2.UpdateAsync(user2), IdentityErrorDescriber.Default.ConcurrencyFailure()); + IdentityResultAssert.IsFailure(await manager2.UpdateAsync(user2), new IdentityErrorDescriber().ConcurrencyFailure()); } } @@ -351,7 +279,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test Assert.NotSame(user1, user2); user1.UserName = Guid.NewGuid().ToString(); IdentityResultAssert.IsSuccess(await manager1.UpdateAsync(user1)); - IdentityResultAssert.IsFailure(await manager2.DeleteAsync(user2), IdentityErrorDescriber.Default.ConcurrencyFailure()); + IdentityResultAssert.IsFailure(await manager2.DeleteAsync(user2), new IdentityErrorDescriber().ConcurrencyFailure()); } } @@ -377,7 +305,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test role1.Name = Guid.NewGuid().ToString(); role2.Name = Guid.NewGuid().ToString(); IdentityResultAssert.IsSuccess(await manager1.UpdateAsync(role1)); - IdentityResultAssert.IsFailure(await manager2.UpdateAsync(role2), IdentityErrorDescriber.Default.ConcurrencyFailure()); + IdentityResultAssert.IsFailure(await manager2.UpdateAsync(role2), new IdentityErrorDescriber().ConcurrencyFailure()); } } @@ -402,7 +330,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test role.Name = Guid.NewGuid().ToString(); role2.Name = Guid.NewGuid().ToString(); IdentityResultAssert.IsSuccess(await manager1.UpdateAsync(role)); - IdentityResultAssert.IsFailure(await manager2.UpdateAsync(role2), IdentityErrorDescriber.Default.ConcurrencyFailure()); + IdentityResultAssert.IsFailure(await manager2.UpdateAsync(role2), new IdentityErrorDescriber().ConcurrencyFailure()); } } @@ -427,7 +355,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test Assert.NotSame(role1, role2); role1.Name = Guid.NewGuid().ToString(); IdentityResultAssert.IsSuccess(await manager1.UpdateAsync(role1)); - IdentityResultAssert.IsFailure(await manager2.DeleteAsync(role2), IdentityErrorDescriber.Default.ConcurrencyFailure()); + IdentityResultAssert.IsFailure(await manager2.DeleteAsync(role2), new IdentityErrorDescriber().ConcurrencyFailure()); } } @@ -464,8 +392,5 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test protected override Expression> UserNameStartsWithPredicate(string userName) => u => u.UserName.StartsWith(userName); } - public class ApplicationUser : IdentityUser - { - - } + public class ApplicationUser : IdentityUser { } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Identity.InMemory.Test/FunctionalTest.cs b/test/Microsoft.AspNet.Identity.InMemory.Test/FunctionalTest.cs index 79223180a0..2f25f5ed69 100644 --- a/test/Microsoft.AspNet.Identity.InMemory.Test/FunctionalTest.cs +++ b/test/Microsoft.AspNet.Identity.InMemory.Test/FunctionalTest.cs @@ -27,16 +27,32 @@ namespace Microsoft.AspNet.Identity.InMemory { const string TestPassword = "1qaz!QAZ"; + [Fact] + public async Task CanChangePasswordOptions() + { + var clock = new TestClock(); + var server = CreateServer(services => services.ConfigureIdentity(options => + { + options.Password.RequireUppercase = false; + options.Password.RequireNonLetterOrDigit = false; + options.Password.RequireDigit = false; + })); + + var transaction1 = await SendAsync(server, "http://example.com/createSimple"); + transaction1.Response.StatusCode.ShouldBe(HttpStatusCode.OK); + Assert.Null(transaction1.SetCookie); + } + [Fact] public async Task CanCreateMeLoginAndCookieStopsWorkingAfterExpiration() { var clock = new TestClock(); - var server = CreateServer(appCookieOptions => + var server = CreateServer(services => services.ConfigureIdentityApplicationCookie(appCookieOptions => { appCookieOptions.SystemClock = clock; appCookieOptions.ExpireTimeSpan = TimeSpan.FromMinutes(10); appCookieOptions.SlidingExpiration = false; - }); + })); var transaction1 = await SendAsync(server, "http://example.com/createMe"); transaction1.Response.StatusCode.ShouldBe(HttpStatusCode.OK); @@ -70,10 +86,10 @@ namespace Microsoft.AspNet.Identity.InMemory public async Task CanCreateMeLoginAndSecurityStampExtendsExpiration(bool rememberMe) { var clock = new TestClock(); - var server = CreateServer(appCookieOptions => + var server = CreateServer(services => services.ConfigureIdentityApplicationCookie(appCookieOptions => { appCookieOptions.SystemClock = clock; - }); + })); var transaction1 = await SendAsync(server, "http://example.com/createMe"); transaction1.Response.StatusCode.ShouldBe(HttpStatusCode.OK); @@ -116,7 +132,7 @@ namespace Microsoft.AspNet.Identity.InMemory [Fact] public async Task TwoFactorRememberCookieVerification() { - var server = CreateServer(appCookieOptions => { }); + var server = CreateServer(); var transaction1 = await SendAsync(server, "http://example.com/createMe"); transaction1.Response.StatusCode.ShouldBe(HttpStatusCode.OK); @@ -135,7 +151,7 @@ namespace Microsoft.AspNet.Identity.InMemory private static string FindClaimValue(Transaction transaction, string claimType) { - XElement claim = transaction.ResponseElement.Elements("claim").SingleOrDefault(elt => elt.Attribute("type").Value == claimType); + var claim = transaction.ResponseElement.Elements("claim").SingleOrDefault(elt => elt.Attribute("type").Value == claimType); if (claim == null) { return null; @@ -154,7 +170,7 @@ namespace Microsoft.AspNet.Identity.InMemory return me; } - private static TestServer CreateServer(Action configureAppCookie, Func testpath = null, Uri baseAddress = null) + private static TestServer CreateServer(Action configureServices = null, Func testpath = null, Uri baseAddress = null) { var server = TestServer.Create(app => { @@ -175,6 +191,11 @@ namespace Microsoft.AspNet.Identity.InMemory var result = await userManager.CreateAsync(new TestUser("hao"), TestPassword); res.StatusCode = result.Succeeded ? 200 : 500; } + else if (req.Path == new PathString("/createSimple")) + { + var result = await userManager.CreateAsync(new TestUser("simple"), "aaaaaa"); + res.StatusCode = result.Succeeded ? 200 : 500; + } else if (req.Path == new PathString("/protected")) { res.StatusCode = 401; @@ -224,7 +245,10 @@ namespace Microsoft.AspNet.Identity.InMemory services.AddIdentity(); services.AddSingleton, InMemoryUserStore>(); services.AddSingleton, InMemoryRoleStore>(); - services.ConfigureIdentityApplicationCookie(configureAppCookie); + if (configureServices != null) + { + configureServices(services); + } }); server.BaseAddress = baseAddress; return server; diff --git a/test/Microsoft.AspNet.Identity.Test/RoleValidatorTest.cs b/test/Microsoft.AspNet.Identity.Test/RoleValidatorTest.cs index dcf997ff29..2c559f7ce1 100644 --- a/test/Microsoft.AspNet.Identity.Test/RoleValidatorTest.cs +++ b/test/Microsoft.AspNet.Identity.Test/RoleValidatorTest.cs @@ -36,7 +36,7 @@ namespace Microsoft.AspNet.Identity.Test var result = await validator.ValidateAsync(manager, user); // Assert - IdentityResultAssert.IsFailure(result, IdentityErrorDescriber.Default.InvalidRoleName(input)); + IdentityResultAssert.IsFailure(result, new IdentityErrorDescriber().InvalidRoleName(input)); } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Identity.Test/UserManagerTest.cs b/test/Microsoft.AspNet.Identity.Test/UserManagerTest.cs index de3feb80f2..4b0d451af1 100644 --- a/test/Microsoft.AspNet.Identity.Test/UserManagerTest.cs +++ b/test/Microsoft.AspNet.Identity.Test/UserManagerTest.cs @@ -279,7 +279,7 @@ namespace Microsoft.AspNet.Identity.Test var result = await userManager.AddToRolesAsync(user, roles); // Assert - IdentityResultAssert.IsFailure(result, IdentityErrorDescriber.Default.UserAlreadyInRole("B")); + IdentityResultAssert.IsFailure(result, new IdentityErrorDescriber().UserAlreadyInRole("B")); store.VerifyAll(); } @@ -341,7 +341,7 @@ namespace Microsoft.AspNet.Identity.Test var result = await userManager.RemoveFromRolesAsync(user, roles); // Assert - IdentityResultAssert.IsFailure(result, IdentityErrorDescriber.Default.UserNotInRole("B")); + IdentityResultAssert.IsFailure(result, new IdentityErrorDescriber().UserNotInRole("B")); store.VerifyAll(); } diff --git a/test/Microsoft.AspNet.Identity.Test/UserValidatorTest.cs b/test/Microsoft.AspNet.Identity.Test/UserValidatorTest.cs index 15c84dd9ed..4d71910c63 100644 --- a/test/Microsoft.AspNet.Identity.Test/UserValidatorTest.cs +++ b/test/Microsoft.AspNet.Identity.Test/UserValidatorTest.cs @@ -36,7 +36,7 @@ namespace Microsoft.AspNet.Identity.Test var result = await validator.ValidateAsync(manager, user); // Assert - IdentityResultAssert.IsFailure(result, IdentityErrorDescriber.Default.InvalidUserName(input)); + IdentityResultAssert.IsFailure(result, new IdentityErrorDescriber().InvalidUserName(input)); } [Theory] diff --git a/test/Shared/UserManagerTestBase.cs b/test/Shared/UserManagerTestBase.cs index 52d222a8e8..a973ec6644 100644 --- a/test/Shared/UserManagerTestBase.cs +++ b/test/Shared/UserManagerTestBase.cs @@ -26,12 +26,8 @@ namespace Microsoft.AspNet.Identity.Test where TRole : class where TKey : IEquatable { - protected TestLoggerFactory loggerFactory; - - public UserManagerTestBase() - { - loggerFactory = new TestLoggerFactory(); - } + private readonly IdentityErrorDescriber _errorDescriber = new IdentityErrorDescriber(); + protected TestLoggerFactory LoggerFactory { get; } = new TestLoggerFactory(); protected virtual void SetupIdentityServices(IServiceCollection services, object context = null) { @@ -39,7 +35,8 @@ namespace Microsoft.AspNet.Identity.Test services.AddIdentity().AddDefaultTokenProviders(); AddUserStore(services, context); AddRoleStore(services, context); - services.AddInstance(loggerFactory); + services.AddInstance(LoggerFactory); + services.AddLogging(); services.ConfigureIdentity(options => { options.Password.RequireDigit = false; @@ -143,8 +140,8 @@ namespace Microsoft.AspNet.Identity.Test var newUser = CreateTestUser(username, useNamePrefixAsUserName: true); IdentityResultAssert.IsSuccess(await manager.CreateAsync(newUser)); - IdentityResultAssert.IsFailure(await manager.SetUserNameAsync(newUser, ""), IdentityErrorDescriber.Default.InvalidUserName("")); - IdentityResultAssert.IsFailure(await manager.SetUserNameAsync(newUser, newUsername), IdentityErrorDescriber.Default.DuplicateUserName(newUsername)); + IdentityResultAssert.IsFailure(await manager.SetUserNameAsync(newUser, ""), _errorDescriber.InvalidUserName("")); + IdentityResultAssert.IsFailure(await manager.SetUserNameAsync(newUser, newUsername), _errorDescriber.DuplicateUserName(newUsername)); } [Fact] @@ -176,8 +173,8 @@ namespace Microsoft.AspNet.Identity.Test var newUser = CreateTestUser(email: email); IdentityResultAssert.IsSuccess(await manager.CreateAsync(newUser)); - IdentityResultAssert.IsFailure(await manager.SetEmailAsync(newUser, newEmail), IdentityErrorDescriber.Default.DuplicateEmail(newEmail)); - IdentityResultAssert.IsFailure(await manager.SetEmailAsync(newUser, ""), IdentityErrorDescriber.Default.InvalidEmail("")); + IdentityResultAssert.IsFailure(await manager.SetEmailAsync(newUser, newEmail), _errorDescriber.DuplicateEmail(newEmail)); + IdentityResultAssert.IsFailure(await manager.SetEmailAsync(newUser, ""), _errorDescriber.InvalidEmail("")); } [Fact] @@ -250,7 +247,7 @@ namespace Microsoft.AspNet.Identity.Test var manager = CreateManager(); var user = CreateTestUser(); manager.Options.User.RequireUniqueEmail = true; - IdentityResultAssert.IsFailure(await manager.CreateAsync(user), IdentityErrorDescriber.Default.InvalidEmail(email)); + IdentityResultAssert.IsFailure(await manager.CreateAsync(user), _errorDescriber.InvalidEmail(email)); } #if DNX451 @@ -262,7 +259,7 @@ namespace Microsoft.AspNet.Identity.Test var manager = CreateManager(); var user = CreateTestUser("UpdateBlocked", email); manager.Options.User.RequireUniqueEmail = true; - IdentityResultAssert.IsFailure(await manager.CreateAsync(user), IdentityErrorDescriber.Default.InvalidEmail(email)); + IdentityResultAssert.IsFailure(await manager.CreateAsync(user), _errorDescriber.InvalidEmail(email)); } #endif @@ -378,7 +375,7 @@ namespace Microsoft.AspNet.Identity.Test Assert.True(await manager.HasPasswordAsync(user)); IdentityResultAssert.IsFailure(await manager.AddPasswordAsync(user, "password"), "User already has a password set."); - IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "AddPasswordAsync", await manager.GetUserIdAsync(user), IdentityErrorDescriber.Default.UserAlreadyHasPassword()); + IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "AddPasswordAsync", await manager.GetUserIdAsync(user), _errorDescriber.UserAlreadyHasPassword()); } [Fact] @@ -556,7 +553,7 @@ namespace Microsoft.AspNet.Identity.Test IdentityResultAssert.IsSuccess(await manager.CreateAsync(user, "password")); var result = await manager.ChangePasswordAsync(user, "bogus", "newpassword"); IdentityResultAssert.IsFailure(result, "Incorrect password."); - IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "ChangePasswordAsync", await manager.GetUserIdAsync(user), IdentityErrorDescriber.Default.PasswordMismatch()); + IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "ChangePasswordAsync", await manager.GetUserIdAsync(user), _errorDescriber.PasswordMismatch()); } [Fact] @@ -567,7 +564,7 @@ namespace Microsoft.AspNet.Identity.Test var user = CreateTestUser(username, useNamePrefixAsUserName: true); var user2 = CreateTestUser(username, useNamePrefixAsUserName: true); IdentityResultAssert.IsSuccess(await manager.CreateAsync(user)); - IdentityResultAssert.IsFailure(await manager.CreateAsync(user2), IdentityErrorDescriber.Default.DuplicateUserName(username)); + IdentityResultAssert.IsFailure(await manager.CreateAsync(user2), _errorDescriber.DuplicateUserName(username)); } [Fact] @@ -589,7 +586,7 @@ namespace Microsoft.AspNet.Identity.Test var user = CreateTestUser(email: "FooUser@yup.com"); var user2 = CreateTestUser(email: "FooUser@yup.com"); IdentityResultAssert.IsSuccess(await manager.CreateAsync(user)); - IdentityResultAssert.IsFailure(await manager.CreateAsync(user2), IdentityErrorDescriber.Default.DuplicateEmail("FooUser@yup.com")); + IdentityResultAssert.IsFailure(await manager.CreateAsync(user2), _errorDescriber.DuplicateEmail("FooUser@yup.com")); } [Fact] @@ -615,8 +612,8 @@ namespace Microsoft.AspNet.Identity.Test IdentityResultAssert.IsSuccess(await manager.CreateAsync(user)); IdentityResultAssert.IsSuccess(await manager.AddLoginAsync(user, login)); var result = await manager.AddLoginAsync(user, login); - IdentityResultAssert.IsFailure(result, IdentityErrorDescriber.Default.LoginAlreadyAssociated()); - IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "AddLoginAsync", await manager.GetUserIdAsync(user), IdentityErrorDescriber.Default.LoginAlreadyAssociated()); + IdentityResultAssert.IsFailure(result, _errorDescriber.LoginAlreadyAssociated()); + IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "AddLoginAsync", await manager.GetUserIdAsync(user), _errorDescriber.LoginAlreadyAssociated()); } // Email tests @@ -744,7 +741,7 @@ namespace Microsoft.AspNet.Identity.Test var stamp = await manager.GetSecurityStampAsync(user); Assert.NotNull(stamp); IdentityResultAssert.IsFailure(await manager.ResetPasswordAsync(user, "bogus", newPassword), "Invalid token."); - IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "ResetPasswordAsync", await manager.GetUserIdAsync(user), IdentityErrorDescriber.Default.InvalidToken()); + IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "ResetPasswordAsync", await manager.GetUserIdAsync(user), _errorDescriber.InvalidToken()); Assert.True(await manager.CheckPasswordAsync(user, password)); Assert.Equal(stamp, await manager.GetSecurityStampAsync(user)); } @@ -767,7 +764,7 @@ namespace Microsoft.AspNet.Identity.Test IdentityResultAssert.VerifyUserManagerSuccessLog(manager.Logger, "VerifyUserTokenAsync", userId); Assert.False(await manager.VerifyUserTokenAsync(user, "Static", "test2", token)); - IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "VerifyUserTokenAsync", userId, IdentityErrorDescriber.Default.InvalidToken()); + IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "VerifyUserTokenAsync", userId, _errorDescriber.InvalidToken()); Assert.False(await manager.VerifyUserTokenAsync(user, "Static", "test", token + "a")); Assert.False(await manager.VerifyUserTokenAsync(user2, "Static", "test", token)); @@ -804,7 +801,7 @@ namespace Microsoft.AspNet.Identity.Test IdentityResultAssert.IsSuccess(await manager.CreateAsync(user)); IdentityResultAssert.IsFailure(await manager.ConfirmEmailAsync(user, "bogus"), "Invalid token."); Assert.False(await manager.IsEmailConfirmedAsync(user)); - IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "ConfirmEmailAsync", await manager.GetUserIdAsync(user), IdentityErrorDescriber.Default.InvalidToken()); + IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "ConfirmEmailAsync", await manager.GetUserIdAsync(user), _errorDescriber.InvalidToken()); } [Fact] @@ -1322,8 +1319,8 @@ namespace Microsoft.AspNet.Identity.Test IdentityResultAssert.IsSuccess(await userMgr.CreateAsync(user)); IdentityResultAssert.IsSuccess(await roleMgr.CreateAsync(role)); var result = await userMgr.RemoveFromRoleAsync(user, roleName); - IdentityResultAssert.IsFailure(result, IdentityErrorDescriber.Default.UserNotInRole(roleName)); - IdentityResultAssert.VerifyUserManagerFailureLog(userMgr.Logger, "RemoveFromRoleAsync", await userMgr.GetUserIdAsync(user), IdentityErrorDescriber.Default.UserNotInRole(roleName)); + IdentityResultAssert.IsFailure(result, _errorDescriber.UserNotInRole(roleName)); + IdentityResultAssert.VerifyUserManagerFailureLog(userMgr.Logger, "RemoveFromRoleAsync", await userMgr.GetUserIdAsync(user), _errorDescriber.UserNotInRole(roleName)); } [Fact] @@ -1339,8 +1336,8 @@ namespace Microsoft.AspNet.Identity.Test IdentityResultAssert.IsSuccess(await roleMgr.CreateAsync(role)); IdentityResultAssert.IsSuccess(await userMgr.AddToRoleAsync(user, roleName)); Assert.True(await userMgr.IsInRoleAsync(user, roleName)); - IdentityResultAssert.IsFailure(await userMgr.AddToRoleAsync(user, roleName), IdentityErrorDescriber.Default.UserAlreadyInRole(roleName)); - IdentityResultAssert.VerifyUserManagerFailureLog(userMgr.Logger, "AddToRoleAsync", await userMgr.GetUserIdAsync(user), IdentityErrorDescriber.Default.UserAlreadyInRole(roleName)); + IdentityResultAssert.IsFailure(await userMgr.AddToRoleAsync(user, roleName), _errorDescriber.UserAlreadyInRole(roleName)); + IdentityResultAssert.VerifyUserManagerFailureLog(userMgr.Logger, "AddToRoleAsync", await userMgr.GetUserIdAsync(user), _errorDescriber.UserAlreadyInRole(roleName)); } [Fact] @@ -1402,7 +1399,7 @@ namespace Microsoft.AspNet.Identity.Test var stamp = await manager.GetSecurityStampAsync(user); IdentityResultAssert.IsFailure(await manager.ChangePhoneNumberAsync(user, "111-111-1111", "bogus"), "Invalid token."); - IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "ChangePhoneNumberAsync", await manager.GetUserIdAsync(user), IdentityErrorDescriber.Default.InvalidToken()); + IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "ChangePhoneNumberAsync", await manager.GetUserIdAsync(user), _errorDescriber.InvalidToken()); Assert.False(await manager.IsPhoneNumberConfirmedAsync(user)); Assert.Equal(await manager.GetPhoneNumberAsync(user), "123-456-7890"); Assert.Equal(stamp, await manager.GetSecurityStampAsync(user)); @@ -1443,7 +1440,7 @@ namespace Microsoft.AspNet.Identity.Test Assert.True(await manager.VerifyChangePhoneNumberTokenAsync(user, token2, num2)); Assert.False(await manager.VerifyChangePhoneNumberTokenAsync(user, token2, num1)); Assert.False(await manager.VerifyChangePhoneNumberTokenAsync(user, token1, num2)); - IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "VerifyChangePhoneNumberTokenAsync", userId, IdentityErrorDescriber.Default.InvalidToken()); + IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "VerifyChangePhoneNumberTokenAsync", userId, _errorDescriber.InvalidToken()); } [Fact] @@ -1478,7 +1475,7 @@ namespace Microsoft.AspNet.Identity.Test var stamp = await manager.GetSecurityStampAsync(user); IdentityResultAssert.IsFailure(await manager.ChangeEmailAsync(user, "whatevah@foo.barf", "bogus"), "Invalid token."); - IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "ChangeEmailAsync", await manager.GetUserIdAsync(user), IdentityErrorDescriber.Default.InvalidToken()); + IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "ChangeEmailAsync", await manager.GetUserIdAsync(user), _errorDescriber.InvalidToken()); Assert.False(await manager.IsEmailConfirmedAsync(user)); Assert.Equal(await manager.GetEmailAsync(user), oldEmail); Assert.Equal(stamp, await manager.GetSecurityStampAsync(user)); @@ -1628,7 +1625,7 @@ namespace Microsoft.AspNet.Identity.Test var user = CreateTestUser(phoneNumber: "4251234567"); IdentityResultAssert.IsSuccess(await manager.CreateAsync(user)); Assert.False(await manager.VerifyTwoFactorTokenAsync(user, "Phone", "bogus")); - IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "VerifyTwoFactorTokenAsync", await manager.GetUserIdAsync(user), IdentityErrorDescriber.Default.InvalidToken()); + IdentityResultAssert.VerifyUserManagerFailureLog(manager.Logger, "VerifyTwoFactorTokenAsync", await manager.GetUserIdAsync(user), _errorDescriber.InvalidToken()); } [Fact]