Injecting ILogger via DI

This commit is contained in:
Suhas Joshi 2015-02-05 10:14:32 -08:00
parent 127858dd7b
commit f7dd913c3f
7 changed files with 40 additions and 59 deletions

View File

@ -28,7 +28,7 @@ namespace Microsoft.AspNet.Identity
IEnumerable<IRoleValidator<TRole>> roleValidators = null,
ILookupNormalizer keyNormalizer = null,
IdentityErrorDescriber errors = null,
ILoggerFactory loggerFactory = null)
ILogger<RoleManager<TRole>> logger = null)
{
if (store == null)
{
@ -46,8 +46,7 @@ namespace Microsoft.AspNet.Identity
}
}
loggerFactory = loggerFactory ?? new LoggerFactory();
Logger = loggerFactory.Create(nameof(RoleManager<TRole>));
Logger = logger ?? new Logger<RoleManager<TRole>>(new LoggerFactory());
}
/// <summary>
@ -68,7 +67,7 @@ namespace Microsoft.AspNet.Identity
/// <summary>
/// Used to log results
/// </summary>
public ILogger Logger { get; set; }
public ILogger<RoleManager<TRole>> Logger { get; set; }
/// <summary>
/// Used to normalize user names, role names, emails for uniqueness

View File

@ -26,7 +26,7 @@ namespace Microsoft.AspNet.Identity
IHttpContextAccessor contextAccessor,
IClaimsIdentityFactory<TUser> claimsFactory,
IOptions<IdentityOptions> optionsAccessor = null,
ILoggerFactory loggerFactory = null)
ILogger<SignInManager<TUser>> logger = null)
{
if (userManager == null)
{
@ -46,15 +46,14 @@ namespace Microsoft.AspNet.Identity
ClaimsFactory = claimsFactory;
Options = optionsAccessor?.Options ?? new IdentityOptions();
loggerFactory = loggerFactory ?? new LoggerFactory();
Logger = loggerFactory.Create(nameof(SignInManager<TUser>));
Logger = logger ?? new Logger<SignInManager<TUser>>(new LoggerFactory());
}
public UserManager<TUser> UserManager { get; private set; }
public HttpContext Context { get; private set; }
public IClaimsIdentityFactory<TUser> ClaimsFactory { get; private set; }
public IdentityOptions Options { get; private set; }
public ILogger Logger { get; set; }
public ILogger<SignInManager<TUser>> Logger { get; set; }
// Should this be a func?
public virtual async Task<ClaimsIdentity> CreateUserIdentityAsync(TUser user,

View File

@ -52,7 +52,7 @@ namespace Microsoft.AspNet.Identity
IdentityErrorDescriber errors = null,
IEnumerable<IUserTokenProvider<TUser>> tokenProviders = null,
IEnumerable<IIdentityMessageProvider> msgProviders = null,
ILoggerFactory loggerFactory = null)
ILogger<UserManager<TUser>> logger = null)
{
if (store == null)
{
@ -79,8 +79,7 @@ namespace Microsoft.AspNet.Identity
}
}
loggerFactory = loggerFactory ?? new LoggerFactory();
Logger = loggerFactory.Create(nameof(UserManager<TUser>));
Logger = logger ?? new Logger<UserManager<TUser>>(new LoggerFactory());
if (tokenProviders != null)
{
@ -149,7 +148,7 @@ namespace Microsoft.AspNet.Identity
/// <summary>
/// Used to log IdentityResult
/// </summary>
public ILogger Logger { get; set; }
public ILogger<UserManager<TUser>> Logger { get; set; }
public IdentityOptions Options
{

View File

@ -30,7 +30,7 @@ namespace Microsoft.AspNet.Identity.Test
{
var result = IdentityResult.Success;
var logMessage = new StringBuilder();
var logger = MockHelpers.MockILogger(logMessage);
var logger = MockHelpers.MockILogger<IdentityResult>(logMessage);
result.Log(logger.Object, "Operation");
@ -42,7 +42,7 @@ namespace Microsoft.AspNet.Identity.Test
{
var result = IdentityResult.Failed(new IdentityError() { Code = "Foo" }, new IdentityError() { Code = "Bar" });
var logMessage = new StringBuilder();
var logger = MockHelpers.MockILogger(logMessage);
var logger = MockHelpers.MockILogger<IdentityResult>(logMessage);
result.Log(logger.Object, "Operation");

View File

@ -38,7 +38,7 @@ namespace Microsoft.AspNet.Identity.Test
// app.UseServices(services =>
// {
// services.AddInstance(contextAccessor.Object);
// services.AddInstance<ILoggerFactory>(new NullLoggerFactory());
// services.AddInstance<Ilogger>(new Nulllogger());
// services.AddIdentity<ApplicationUser, IdentityRole>(s =>
// {
// s.AddUserStore(() => new InMemoryUserStore<ApplicationUser>());
@ -129,8 +129,8 @@ namespace Microsoft.AspNet.Identity.Test
options.Setup(a => a.Options).Returns(identityOptions);
var claimsFactory = new Mock<ClaimsIdentityFactory<TestUser, TestRole>>(manager.Object, roleManager.Object, options.Object);
var logStore = new StringBuilder();
var loggerFactory = MockHelpers.MockILoggerFactory(MockHelpers.MockILogger(logStore).Object);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, loggerFactory.Object);
var logger = MockHelpers.MockILogger<SignInManager<TestUser>>(logStore);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, logger.Object);
string expected = string.Format("{0} for user: {1} : Result : {2}", "PasswordSignInAsync", user.Id, "Lockedout");
// Act
@ -171,8 +171,8 @@ namespace Microsoft.AspNet.Identity.Test
var claimsFactory = new Mock<ClaimsIdentityFactory<TestUser, TestRole>>(manager.Object, roleManager.Object, options.Object);
claimsFactory.Setup(m => m.CreateAsync(user, CancellationToken.None)).ReturnsAsync(new ClaimsIdentity("Microsoft.AspNet.Identity")).Verifiable();
var logStore = new StringBuilder();
var loggerFactory = MockHelpers.MockILoggerFactory(MockHelpers.MockILogger(logStore).Object);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, loggerFactory.Object);
var logger = MockHelpers.MockILogger<SignInManager<TestUser>>(logStore);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, logger.Object);
string expected = string.Format("{0} for user: {1} : Result : {2}", "PasswordSignInAsync", user.Id, "Succeeded");
// Act
@ -261,8 +261,8 @@ namespace Microsoft.AspNet.Identity.Test
var options = new Mock<IOptions<IdentityOptions>>();
options.Setup(a => a.Options).Returns(identityOptions);
var logStore = new StringBuilder();
var loggerFactory = MockHelpers.MockILoggerFactory(MockHelpers.MockILogger(logStore).Object);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, new ClaimsIdentityFactory<TestUser, TestRole>(manager.Object, roleManager.Object, options.Object), options.Object, loggerFactory.Object);
var logger = MockHelpers.MockILogger<SignInManager<TestUser>>(logStore);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, new ClaimsIdentityFactory<TestUser, TestRole>(manager.Object, roleManager.Object, options.Object), options.Object, logger.Object);
string expected = string.Format("{0} for user: {1} : Result : {2}", "PasswordSignInAsync", user.Id, "RequiresTwoFactor");
// Act
@ -314,8 +314,8 @@ namespace Microsoft.AspNet.Identity.Test
var claimsFactory = new Mock<ClaimsIdentityFactory<TestUser, TestRole>>(manager.Object, roleManager.Object, options.Object);
claimsFactory.Setup(m => m.CreateAsync(user, CancellationToken.None)).ReturnsAsync(new ClaimsIdentity("Microsoft.AspNet.Identity")).Verifiable();
var logStore = new StringBuilder();
var loggerFactory = MockHelpers.MockILoggerFactory(MockHelpers.MockILogger(logStore).Object);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, loggerFactory.Object);
var logger = MockHelpers.MockILogger<SignInManager<TestUser>>(logStore);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, logger.Object);
string expected = string.Format("{0} for user: {1} : Result : {2}", "ExternalLoginSignInAsync", user.Id.ToString(), "Succeeded");
// Act
@ -402,8 +402,8 @@ namespace Microsoft.AspNet.Identity.Test
context.Setup(c => c.AuthenticateAsync(IdentityOptions.TwoFactorUserIdCookieAuthenticationType)).ReturnsAsync(authResult).Verifiable();
contextAccessor.Setup(a => a.Value).Returns(context.Object);
var logStore = new StringBuilder();
var loggerFactory = MockHelpers.MockILoggerFactory(MockHelpers.MockILogger(logStore).Object);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory, options.Object, loggerFactory.Object);
var logger = MockHelpers.MockILogger<SignInManager<TestUser>>(logStore);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory, options.Object, logger.Object);
string expected = string.Format("{0} for user: {1} : Result : {2}", "TwoFactorSignInAsync", user.Id.ToString(), "Succeeded");
// Act
@ -525,8 +525,8 @@ namespace Microsoft.AspNet.Identity.Test
IdentityOptions.ApplicationCookieAuthenticationType = authenticationType;
var claimsFactory = new Mock<ClaimsIdentityFactory<TestUser, TestRole>>(manager.Object, roleManager.Object, options.Object);
var logStore = new StringBuilder();
var loggerFactory = MockHelpers.MockILoggerFactory(MockHelpers.MockILogger(logStore).Object);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, loggerFactory.Object);
var logger = MockHelpers.MockILogger<SignInManager<TestUser>>(logStore);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, logger.Object);
// Act
helper.SignOut();
@ -558,8 +558,8 @@ namespace Microsoft.AspNet.Identity.Test
options.Setup(a => a.Options).Returns(identityOptions);
var claimsFactory = new Mock<ClaimsIdentityFactory<TestUser, TestRole>>(manager.Object, roleManager.Object, options.Object);
var logStore = new StringBuilder();
var loggerFactory = MockHelpers.MockILoggerFactory(MockHelpers.MockILogger(logStore).Object);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, loggerFactory.Object);
var logger = MockHelpers.MockILogger<SignInManager<TestUser>>(logStore);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, logger.Object);
string expected = string.Format("{0} for user: {1} : Result : {2}", "PasswordSignInAsync", user.Id.ToString(), "Failed");
// Act
var result = await helper.PasswordSignInAsync(user.UserName, "bogus", false, false);
@ -664,8 +664,8 @@ namespace Microsoft.AspNet.Identity.Test
options.Setup(a => a.Options).Returns(identityOptions);
var claimsFactory = new Mock<ClaimsIdentityFactory<TestUser, TestRole>>(manager.Object, roleManager.Object, options.Object);
var logStore = new StringBuilder();
var loggerFactory = MockHelpers.MockILoggerFactory(MockHelpers.MockILogger(logStore).Object);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, loggerFactory.Object);
var logger = MockHelpers.MockILogger<SignInManager<TestUser>>(logStore);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, logger.Object);
string expected = string.Format("{0} for user: {1} : Result : {2}", "CanSignInAsync", user.Id.ToString(), confirmed.ToString());
// Act
@ -710,8 +710,8 @@ namespace Microsoft.AspNet.Identity.Test
options.Setup(a => a.Options).Returns(identityOptions);
var claimsFactory = new Mock<ClaimsIdentityFactory<TestUser, TestRole>>(manager.Object, roleManager.Object, options.Object);
var logStore = new StringBuilder();
var loggerFactory = MockHelpers.MockILoggerFactory(MockHelpers.MockILogger(logStore).Object);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, loggerFactory.Object);
var logger = MockHelpers.MockILogger<SignInManager<TestUser>>(logStore);
var helper = new SignInManager<TestUser>(manager.Object, contextAccessor.Object, claimsFactory.Object, options.Object, logger.Object);
string expected = string.Format("{0} for user: {1} : Result : {2}", "CanSignInAsync", user.Id.ToString(), confirmed.ToString());
// Act

View File

@ -13,7 +13,7 @@ namespace Microsoft.AspNet.Identity.Test
{
var result = SignInResult.Success;
var logMessage = new StringBuilder();
var logger = MockHelpers.MockILogger(logMessage);
var logger = MockHelpers.MockILogger<SignInResultTest>(logMessage);
result.Log(logger.Object, "Operation");
@ -25,7 +25,7 @@ namespace Microsoft.AspNet.Identity.Test
{
var result = SignInResult.LockedOut;
var logMessage = new StringBuilder();
var logger = MockHelpers.MockILogger(logMessage);
var logger = MockHelpers.MockILogger<SignInResultTest>(logMessage);
result.Log(logger.Object, "Operation");
@ -37,7 +37,7 @@ namespace Microsoft.AspNet.Identity.Test
{
var result = SignInResult.NotAllowed;
var logMessage = new StringBuilder();
var logger = MockHelpers.MockILogger(logMessage);
var logger = MockHelpers.MockILogger<SignInResultTest>(logMessage);
result.Log(logger.Object, "Operation");
@ -49,7 +49,7 @@ namespace Microsoft.AspNet.Identity.Test
{
var result = SignInResult.TwoFactorRequired;
var logMessage = new StringBuilder();
var logger = MockHelpers.MockILogger(logMessage);
var logger = MockHelpers.MockILogger<SignInResultTest>(logMessage);
result.Log(logger.Object, "Operation");
@ -61,7 +61,7 @@ namespace Microsoft.AspNet.Identity.Test
{
var result = SignInResult.Failed;
var logMessage = new StringBuilder();
var logger = MockHelpers.MockILogger(logMessage);
var logger = MockHelpers.MockILogger<SignInResultTest>(logMessage);
result.Log(logger.Object, "Operation");

View File

@ -5,9 +5,9 @@ using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using System.Text;
using Microsoft.Framework.Logging;
using Moq;
using System.Text;
namespace Microsoft.AspNet.Identity.Test
{
@ -29,39 +29,23 @@ namespace Microsoft.AspNet.Identity.Test
store = store ?? new Mock<IRoleStore<TRole>>().Object;
var roles = new List<IRoleValidator<TRole>>();
roles.Add(new RoleValidator<TRole>());
return new Mock<RoleManager<TRole>>(store, roles, null, null,null);
return new Mock<RoleManager<TRole>>(store, roles, null, null, null);
}
public static Mock<ILogger> MockILogger(StringBuilder logStore = null)
public static Mock<ILogger<T>> MockILogger<T>(StringBuilder logStore = null) where T : class
{
logStore = logStore ?? LogMessage;
var logger = new Mock<ILogger>();
var logger = new Mock<ILogger<T>>();
logger.Setup(x => x.Write(It.IsAny<LogLevel>(), It.IsAny<int>(), It.IsAny<object>(),
It.IsAny<Exception>(), It.IsAny<Func<object, Exception, string>>()))
.Callback((LogLevel logLevel, int eventId, object state, Exception exception, Func<object, Exception, string> formatter) =>
{ logStore.Append(state.ToString()); });
{ logStore.Append(state.ToString()); });
logger.Setup(x => x.IsEnabled(LogLevel.Information)).Returns(true);
logger.Setup(x => x.IsEnabled(LogLevel.Warning)).Returns(true);
return logger;
}
public static Mock<ILoggerFactory> MockILoggerFactory(ILogger logger = null)
{
logger = logger ?? MockILogger().Object;
var loggerFactory = new Mock<ILoggerFactory>();
loggerFactory.Setup(x => x.Create(It.IsAny<string>())).Returns(logger);
return loggerFactory;
}
public static UserManager<TUser> UserManagerWithMockLogger<TUser>(ILoggerFactory loggerFactory = null) where TUser : class
{
var userstore = new Mock<IUserStore<TUser>>().Object;
var userManager = new UserManager<TUser>(userstore, loggerFactory: loggerFactory ?? MockILoggerFactory().Object);
return userManager;
}
public static UserManager<TUser> TestUserManager<TUser>(IUserStore<TUser> store = null) where TUser : class
{
store = store ?? new Mock<IUserStore<TUser>>().Object;