Switched logging from file to inmemory for tests
This commit is contained in:
parent
dd4ad28e1b
commit
5d06b0d353
|
|
@ -7,7 +7,7 @@ using Microsoft.Framework.DependencyInjection;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Identity.EntityFramework.InMemory.Test
|
namespace Microsoft.AspNet.Identity.EntityFramework.InMemory.Test
|
||||||
{
|
{
|
||||||
public class InMemoryEFUserStoreTest : UserManagerTestBase<IdentityUser, IdentityRole>,IDisposable
|
public class InMemoryEFUserStoreTest : UserManagerTestBase<IdentityUser, IdentityRole>
|
||||||
{
|
{
|
||||||
protected override object CreateTestContext()
|
protected override object CreateTestContext()
|
||||||
{
|
{
|
||||||
|
|
@ -24,10 +24,5 @@ namespace Microsoft.AspNet.Identity.EntityFramework.InMemory.Test
|
||||||
var store = new RoleStore<IdentityRole, InMemoryContext>((InMemoryContext)context);
|
var store = new RoleStore<IdentityRole, InMemoryContext>((InMemoryContext)context);
|
||||||
services.AddInstance<IRoleStore<IdentityRole>>(store);
|
services.AddInstance<IRoleStore<IdentityRole>>(store);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
loggerFactory.Dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test
|
||||||
public void DropDatabaseDone()
|
public void DropDatabaseDone()
|
||||||
{
|
{
|
||||||
DropDb();
|
DropDb();
|
||||||
loggerFactory.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DropDb()
|
public void DropDb()
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ using Microsoft.Framework.DependencyInjection;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Identity.InMemory.Test
|
namespace Microsoft.AspNet.Identity.InMemory.Test
|
||||||
{
|
{
|
||||||
public class InMemoryStoreTest : UserManagerTestBase<InMemoryUser, IdentityRole>, IDisposable
|
public class InMemoryStoreTest : UserManagerTestBase<InMemoryUser, IdentityRole>
|
||||||
{
|
{
|
||||||
protected override object CreateTestContext()
|
protected override object CreateTestContext()
|
||||||
{
|
{
|
||||||
|
|
@ -23,10 +23,5 @@ namespace Microsoft.AspNet.Identity.InMemory.Test
|
||||||
{
|
{
|
||||||
services.AddSingleton<IRoleStore<IdentityRole>, InMemoryRoleStore<IdentityRole>>();
|
services.AddSingleton<IRoleStore<IdentityRole>, InMemoryRoleStore<IdentityRole>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
loggerFactory.Dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.Framework.Logging;
|
using Microsoft.Framework.Logging;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
@ -60,15 +59,11 @@ namespace Microsoft.AspNet.Identity.Test
|
||||||
}
|
}
|
||||||
private static void VerifySuccessLog(ILogger logger, string className, string methodName, string id, string userOrRole = "user")
|
private static void VerifySuccessLog(ILogger logger, string className, string methodName, string id, string userOrRole = "user")
|
||||||
{
|
{
|
||||||
if (logger is TestFileLogger)
|
TestLogger testlogger = logger as TestLogger;
|
||||||
|
if (testlogger != null)
|
||||||
{
|
{
|
||||||
var fileLogger = logger as TestFileLogger;
|
|
||||||
string expected = string.Format("{0} for {1}: {2} : Success", methodName, userOrRole, id);
|
string expected = string.Format("{0} for {1}: {2} : Success", methodName, userOrRole, id);
|
||||||
|
Assert.True(testlogger.LogMessages.Contains(expected));
|
||||||
lock (TestFileLogger.FileLock)
|
|
||||||
{
|
|
||||||
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expected));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -78,13 +73,10 @@ namespace Microsoft.AspNet.Identity.Test
|
||||||
|
|
||||||
public static void VerifyLogMessage(ILogger logger, string expectedLog)
|
public static void VerifyLogMessage(ILogger logger, string expectedLog)
|
||||||
{
|
{
|
||||||
if (logger is TestFileLogger)
|
TestLogger testlogger = logger as TestLogger;
|
||||||
|
if (testlogger != null)
|
||||||
{
|
{
|
||||||
var fileLogger = logger as TestFileLogger;
|
Assert.True(testlogger.LogMessages.Contains(expectedLog));
|
||||||
lock (TestFileLogger.FileLock)
|
|
||||||
{
|
|
||||||
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expectedLog));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -94,16 +86,13 @@ namespace Microsoft.AspNet.Identity.Test
|
||||||
|
|
||||||
private static void VerifyFailureLog(ILogger logger, string className, string methodName, string userId, string userOrRole = "user", params IdentityError[] errors)
|
private static void VerifyFailureLog(ILogger logger, string className, string methodName, string userId, string userOrRole = "user", params IdentityError[] errors)
|
||||||
{
|
{
|
||||||
if (logger is TestFileLogger)
|
TestLogger testlogger = logger as TestLogger;
|
||||||
|
if (testlogger != null)
|
||||||
{
|
{
|
||||||
var fileLogger = logger as TestFileLogger;
|
|
||||||
errors = errors ?? new IdentityError[] { new IdentityError() };
|
errors = errors ?? new IdentityError[] { new IdentityError() };
|
||||||
string expected = string.Format("{0} for {1}: {2} : Failed : {3}", methodName, userOrRole, userId, string.Join(",", errors.Select(x => x.Code).ToList()));
|
string expected = string.Format("{0} for {1}: {2} : Failed : {3}", methodName, userOrRole, userId, string.Join(",", errors.Select(x => x.Code).ToList()));
|
||||||
|
|
||||||
lock (TestFileLogger.FileLock)
|
Assert.True(testlogger.LogMessages.Contains(expected));
|
||||||
{
|
|
||||||
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expected));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
// 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;
|
|
||||||
using System.IO;
|
|
||||||
using Microsoft.Framework.Logging;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Identity.Test
|
|
||||||
{
|
|
||||||
public class TestFileLogger : ILogger
|
|
||||||
{
|
|
||||||
public string FileName { get; set; }
|
|
||||||
|
|
||||||
public static object FileLock { get; private set; } = new object();
|
|
||||||
|
|
||||||
public TestFileLogger(string name)
|
|
||||||
{
|
|
||||||
var directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "IdentityTests");
|
|
||||||
Directory.CreateDirectory(directory);
|
|
||||||
FileName = Path.Combine(directory, (name + DateTime.Now.Ticks + "log.txt"));
|
|
||||||
lock (FileLock)
|
|
||||||
{
|
|
||||||
if (!File.Exists(FileName))
|
|
||||||
{
|
|
||||||
File.Create(FileName).Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IDisposable BeginScope(object state)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsEnabled(LogLevel logLevel)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Write(LogLevel logLevel, int eventId, object state, Exception exception, Func<object, Exception, string> formatter)
|
|
||||||
{
|
|
||||||
lock (FileLock)
|
|
||||||
{
|
|
||||||
File.AppendAllLines(FileName, new string[] { state.ToString() });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
// 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;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.IO;
|
|
||||||
using Microsoft.Framework.Logging;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Identity.Test
|
|
||||||
{
|
|
||||||
public class TestFileLoggerFactory : ILoggerFactory, IDisposable
|
|
||||||
{
|
|
||||||
private static Dictionary<string, ILogger> _loggers;
|
|
||||||
|
|
||||||
static TestFileLoggerFactory()
|
|
||||||
{
|
|
||||||
_loggers = new Dictionary<string, ILogger>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddProvider(ILoggerProvider provider)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public ILogger Create(string name)
|
|
||||||
{
|
|
||||||
if (!_loggers.ContainsKey(name))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_loggers.Add(name, new TestFileLogger(name));
|
|
||||||
}
|
|
||||||
catch (ArgumentException ex)
|
|
||||||
{
|
|
||||||
// Silently skip if there is already a logger with that key
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return _loggers[name];
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Parallel.ForEach(_loggers.Values, l =>
|
|
||||||
{
|
|
||||||
if(l is TestFileLogger)
|
|
||||||
{
|
|
||||||
var logger = l as TestFileLogger;
|
|
||||||
File.Delete(logger.FileName);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
// 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;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.Framework.Logging;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNet.Identity.Test
|
||||||
|
{
|
||||||
|
public class TestLogger : ILogger
|
||||||
|
{
|
||||||
|
public IList<string> LogMessages { get; private set; } = new List<string>();
|
||||||
|
|
||||||
|
public IDisposable BeginScope(object state)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsEnabled(LogLevel logLevel)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Write(LogLevel logLevel, int eventId, object state, Exception exception, Func<object, Exception, string> formatter)
|
||||||
|
{
|
||||||
|
LogMessages.Add(state.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
// 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 Microsoft.Framework.Logging;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNet.Identity.Test
|
||||||
|
{
|
||||||
|
public class TestLoggerFactory : ILoggerFactory
|
||||||
|
{
|
||||||
|
public void AddProvider(ILoggerProvider provider)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public ILogger Create(string name)
|
||||||
|
{
|
||||||
|
return new TestLogger();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -26,11 +26,11 @@ namespace Microsoft.AspNet.Identity.Test
|
||||||
where TRole : IdentityRole<TKey>, new()
|
where TRole : IdentityRole<TKey>, new()
|
||||||
where TKey : IEquatable<TKey>
|
where TKey : IEquatable<TKey>
|
||||||
{
|
{
|
||||||
protected TestFileLoggerFactory loggerFactory;
|
protected TestLoggerFactory loggerFactory;
|
||||||
|
|
||||||
public UserManagerTestBase()
|
public UserManagerTestBase()
|
||||||
{
|
{
|
||||||
loggerFactory = new TestFileLoggerFactory();
|
loggerFactory = new TestLoggerFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void SetupIdentityServices(IServiceCollection services, object context = null)
|
protected virtual void SetupIdentityServices(IServiceCollection services, object context = null)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue