public async Task LogRequestMiddleware_Info_Logger_Called_For_Info_Only() { var LogRequestMiddleware = new LogRequestMiddleware( async(innerHttpContext) => { await innerHttpContext.Response.WriteAsync("test response body"); }, _mockLoggerFactory.Object); var path = "/api/"; var bodyText = "request body text"; var context = CreateContext(path, bodyText); await LogRequestMiddleware.Invoke(context); context.Response.StatusCode.Should().Be((int)HttpStatusCode.OK); _mockLogger.Verify(x => x.Log(LogLevel.Debug, It.IsAny <EventId>(), It.IsAny <FormattedLogValues>(), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()), Times.Never); _mockLogger.Verify(x => x.Log(LogLevel.Information, It.IsAny <EventId>(), It.Is <FormattedLogValues>(v => v.ToString().Contains(path)), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()), Times.Once); _mockLogger.Verify(x => x.Log(LogLevel.Information, It.IsAny <EventId>(), It.Is <FormattedLogValues>(v => v.ToString().Contains("UserClaim")), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()), Times.Once); _requestBodyStream.Dispose(); }
public async void It_Should_Log_Request() { var loggerMock = new Mock <ILogger <LogRequestMiddleware> >(); var requestMock = new Mock <HttpRequest>(); requestMock.Setup(x => x.Scheme).Returns("http"); requestMock.Setup(x => x.Host).Returns(new HostString("localhost")); requestMock.Setup(x => x.Path).Returns(new PathString("/test")); requestMock.Setup(x => x.PathBase).Returns(new PathString("/")); requestMock.Setup(x => x.Method).Returns("GET"); requestMock.Setup(x => x.Body).Returns(new MemoryStream()); requestMock.Setup(x => x.QueryString).Returns(new QueryString("?param1=2")); var contextMock = new Mock <HttpContext>(); contextMock.Setup(x => x.Request).Returns(requestMock.Object); var logRequestMiddleware = new LogRequestMiddleware(next: (innerHttpContext) => Task.FromResult(0), logger: loggerMock.Object); await logRequestMiddleware.Invoke(contextMock.Object); loggerMock.Verify(m => m.Log( LogLevel.Information, It.IsAny <EventId>(), It.Is <string>(v => v.Contains("REQUEST METHOD: GET, REQUEST BODY: , REQUEST URL: http://localhost//test?param1=2")), null, It.IsAny <Func <string, Exception, string> >())); }
public async Task LogRequestMiddleware_Logger_NotCalled() { var LogRequestMiddleware = new LogRequestMiddleware( async(innerHttpContext) => { await innerHttpContext.Response.WriteAsync("test response body"); }, _mockLoggerFactory.Object); var context = CreateContext("/filename/", "request body text"); await LogRequestMiddleware.Invoke(context); context.Response.StatusCode.Should().Be((int)HttpStatusCode.OK); _mockLogger.Verify(x => x.Log(LogLevel.Information, It.IsAny <EventId>(), It.IsAny <FormattedLogValues>(), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()), Times.Never); _mockLogger.Verify(x => x.Log(LogLevel.Debug, It.IsAny <EventId>(), It.IsAny <FormattedLogValues>(), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()), Times.Never); _requestBodyStream.Dispose(); }