public void CanEmit() { // Arrange var clientMock = new Mock <IElmahioAPI>(); var messagesMock = new Mock <IMessages>(); clientMock.Setup(x => x.Messages).Returns(messagesMock.Object); var sink = new ElmahIoSink(null, clientMock.Object); CreateMessage loggedMessage = null; messagesMock .Setup(x => x.CreateAndNotify(It.IsAny <Guid>(), It.IsAny <CreateMessage>())) .Callback <Guid, CreateMessage>((logId, msg) => { loggedMessage = msg; }); var now = DateTimeOffset.Now; var exception = Exception(); #if !DOTNETCORE var principalMock = new Mock <IPrincipal>(); var identityMock = new Mock <IIdentity>(); identityMock.Setup(x => x.Name).Returns("User"); principalMock.Setup(x => x.Identity).Returns(identityMock.Object); Thread.CurrentPrincipal = principalMock.Object; #endif // Act sink.Emit( new LogEvent( now, LogEventLevel.Error, exception, new MessageTemplate("Simple test", new List <MessageTemplateToken>()), new List <LogEventProperty> { new LogEventProperty("name", new ScalarValue("value")) } ) ); // Assert Assert.That(loggedMessage != null); Assert.That(loggedMessage.Severity, Is.EqualTo(Severity.Error.ToString())); Assert.That(loggedMessage.DateTime, Is.EqualTo(now.DateTime.ToUniversalTime())); Assert.That(loggedMessage.Detail, Is.EqualTo(exception.ToString())); Assert.That(loggedMessage.Data != null); Assert.That(loggedMessage.Data.Count, Is.EqualTo(1)); Assert.That(loggedMessage.Data.First().Key, Is.EqualTo("name")); Assert.That(loggedMessage.Type, Is.EqualTo(typeof(DivideByZeroException).FullName)); Assert.That(loggedMessage.Hostname, Is.EqualTo(Environment.MachineName)); #if !DOTNETCORE Assert.That(loggedMessage.User, Is.EqualTo("User")); #endif }
public void CanEmitCustomFields() { // Arrange var clientMock = new Mock <IElmahioAPI>(); var messagesMock = new Mock <IMessages>(); clientMock.Setup(x => x.Messages).Returns(messagesMock.Object); var sink = new ElmahIoSink(null, clientMock.Object); CreateMessage loggedMessage = null; messagesMock .Setup(x => x.CreateAndNotify(It.IsAny <Guid>(), It.IsAny <CreateMessage>())) .Callback <Guid, CreateMessage>((logId, msg) => { loggedMessage = msg; }); var now = DateTimeOffset.Now; // Act sink.Emit( new LogEvent( now, LogEventLevel.Error, null, new MessageTemplate("{type} {hostname} {application} {user} {source} {method} {version} {url} {statusCode}", new List <MessageTemplateToken>()), new List <LogEventProperty> { new LogEventProperty("type", new ScalarValue("type")), new LogEventProperty("hostname", new ScalarValue("hostname")), new LogEventProperty("application", new ScalarValue("application")), new LogEventProperty("user", new ScalarValue("user")), new LogEventProperty("source", new ScalarValue("source")), new LogEventProperty("method", new ScalarValue("method")), new LogEventProperty("version", new ScalarValue("version")), new LogEventProperty("url", new ScalarValue("url")), new LogEventProperty("statusCode", new ScalarValue(400)), } ) ); // Assert Assert.That(loggedMessage != null); Assert.That(loggedMessage.Type, Is.EqualTo("type")); Assert.That(loggedMessage.Hostname, Is.EqualTo("hostname")); Assert.That(loggedMessage.Application, Is.EqualTo("application")); Assert.That(loggedMessage.User, Is.EqualTo("user")); Assert.That(loggedMessage.Source, Is.EqualTo("source")); Assert.That(loggedMessage.Method, Is.EqualTo("method")); Assert.That(loggedMessage.Version, Is.EqualTo("version")); Assert.That(loggedMessage.Url, Is.EqualTo("url")); Assert.That(loggedMessage.StatusCode, Is.EqualTo(400)); }
public void CanEmit() { // Arrange var sink = new ElmahIoSink(new ElmahIoSinkOptions(string.Empty, Guid.Empty), clientMock); var exception = Exception(); #if !DOTNETCORE var principalMock = Substitute.For <IPrincipal>(); var identityMock = Substitute.For <IIdentity>(); identityMock.Name.Returns("User"); principalMock.Identity.Returns(identityMock); Thread.CurrentPrincipal = principalMock; #endif // Act sink.Emit( new LogEvent( Now, LogEventLevel.Error, exception, new MessageTemplate("Simple test", new List <MessageTemplateToken>()), new List <LogEventProperty> { new LogEventProperty("name", new ScalarValue("value")) } ) ); // Assert sink.Dispose(); Assert.That(loggedMessages != null); Assert.That(loggedMessages.Count, Is.EqualTo(1)); var loggedMessage = loggedMessages.First(); Assert.That(loggedMessage.Severity, Is.EqualTo(Severity.Error.ToString())); Assert.That(loggedMessage.DateTime.HasValue); Assert.That(loggedMessage.DateTime.Value.DateTime, Is.EqualTo(Now.DateTime.ToUniversalTime())); Assert.That(loggedMessage.Detail, Is.EqualTo(exception.ToString())); Assert.That(loggedMessage.Data != null); Assert.That(loggedMessage.Data.Count, Is.EqualTo(1)); Assert.That(loggedMessage.Data.First().Key, Is.EqualTo("name")); Assert.That(loggedMessage.Type, Is.EqualTo(typeof(DivideByZeroException).FullName)); Assert.That(loggedMessage.Hostname, Is.EqualTo(Environment.MachineName)); #if !DOTNETCORE Assert.That(loggedMessage.User, Is.EqualTo("User")); #endif }
public void CanEmitApplicationFromOptions() { // Arrange var sink = new ElmahIoSink(new ElmahIoSinkOptions(string.Empty, Guid.Empty) { Application = "MyApp" }, clientMock); // Act sink.Emit(new LogEvent(Now, LogEventLevel.Information, null, new MessageTemplate("Hello World", new List <MessageTemplateToken>()), new List <LogEventProperty>())); // Assert sink.Dispose(); Assert.That(loggedMessages != null); Assert.That(loggedMessages.Count, Is.EqualTo(1)); var loggedMessage = loggedMessages.First(); Assert.That(loggedMessage.Application, Is.EqualTo("MyApp")); }
public void CanEmitCustomFields() { // Arrange var sink = new ElmahIoSink(new ElmahIoSinkOptions(string.Empty, Guid.Empty), clientMock); var serverVariables = new Dictionary <ScalarValue, LogEventPropertyValue>(); serverVariables.Add(new ScalarValue("serverVariableKey"), new ScalarValue("serverVariableValue")); var cookies = new Dictionary <ScalarValue, LogEventPropertyValue>(); cookies.Add(new ScalarValue("cookiesKey"), new ScalarValue("cookiesValue")); var form = new Dictionary <ScalarValue, LogEventPropertyValue>(); form.Add(new ScalarValue("formKey"), new ScalarValue("formValue")); var queryString = new Dictionary <ScalarValue, LogEventPropertyValue>(); queryString.Add(new ScalarValue("queryStringKey"), new ScalarValue("queryStringValue")); // Act sink.Emit( new LogEvent( Now, LogEventLevel.Error, null, new MessageTemplate("{type} {hostname} {application} {user} {source} {method} {version} {url} {statusCode}", new List <MessageTemplateToken>()), new List <LogEventProperty> { new LogEventProperty("type", new ScalarValue("type")), new LogEventProperty("hostname", new ScalarValue("hostname")), new LogEventProperty("application", new ScalarValue("application")), new LogEventProperty("user", new ScalarValue("user")), new LogEventProperty("source", new ScalarValue("source")), new LogEventProperty("method", new ScalarValue("method")), new LogEventProperty("version", new ScalarValue("version")), new LogEventProperty("url", new ScalarValue("url")), new LogEventProperty("statusCode", new ScalarValue(400)), new LogEventProperty("correlationId", new ScalarValue("correlationId")), new LogEventProperty("serverVariables", new DictionaryValue(serverVariables)), new LogEventProperty("cookies", new DictionaryValue(cookies)), new LogEventProperty("form", new DictionaryValue(form)), new LogEventProperty("queryString", new DictionaryValue(queryString)), } ) ); // Assert sink.Dispose(); Assert.That(loggedMessages != null); Assert.That(loggedMessages.Count, Is.EqualTo(1)); var loggedMessage = loggedMessages.First(); Assert.That(loggedMessage.Type, Is.EqualTo("type")); Assert.That(loggedMessage.Hostname, Is.EqualTo("hostname")); Assert.That(loggedMessage.Application, Is.EqualTo("application")); Assert.That(loggedMessage.User, Is.EqualTo("user")); Assert.That(loggedMessage.Source, Is.EqualTo("source")); Assert.That(loggedMessage.Method, Is.EqualTo("method")); Assert.That(loggedMessage.Version, Is.EqualTo("version")); Assert.That(loggedMessage.Url, Is.EqualTo("url")); Assert.That(loggedMessage.StatusCode, Is.EqualTo(400)); Assert.That(loggedMessage.CorrelationId, Is.EqualTo("correlationId")); Assert.That(loggedMessage.ServerVariables.Any(sv => sv.Key == "serverVariableKey" && sv.Value == "serverVariableValue")); Assert.That(loggedMessage.Cookies.Any(sv => sv.Key == "cookiesKey" && sv.Value == "cookiesValue")); Assert.That(loggedMessage.Form.Any(sv => sv.Key == "formKey" && sv.Value == "formValue")); Assert.That(loggedMessage.QueryString.Any(sv => sv.Key == "queryStringKey" && sv.Value == "queryStringValue")); }