public async Task LogRequestAndResponseMustNotBeBeforeBatchLogs() { const string url = "https://v-mock.org/v2/smoke-testing-company/ver"; #if NETCOREAPP var innerHandler = new BatchLogs(async ctx => await Task.CompletedTask); var outerHandler = new LogRequestAndResponse(innerHandler.InvokeAsync); var context = new DefaultHttpContext(); SetRequest(context, url); #else var outerHandler = new LogRequestAndResponse() { InnerHandler = new BatchLogs { InnerHandler = new GetContextTestHandler() { InnerHandler = new Mock <HttpMessageHandler>().Object } } }; var invoker = new HttpMessageInvoker(outerHandler); var request = new HttpRequestMessage(HttpMethod.Get, url); #endif try { #if NETCOREAPP await outerHandler.InvokeAsync(context); #else await invoker.SendAsync(request, CancellationToken.None); #endif Assert.Fail("Expected an exception"); } catch (FulcrumContractException e) { Assert.IsTrue(e.Message.Contains("must not precede")); } catch (Exception e) { Assert.Fail( $"Expected an exception of type {nameof(FulcrumContractException)}, but caught exception {e.GetType().FullName}"); } }
public async Task BatchLogs() { _logCounter = 0; var mockLogger = new Mock <ISyncLogger>(); mockLogger.Setup(logger => logger.LogSync( It.IsAny <LogRecord>())) .Callback((LogRecord lr) => { Assert.IsTrue(FulcrumApplication.Context.IsInBatchLogger); Interlocked.Increment(ref _logCounter); }) .Verifiable(); FulcrumApplication.Setup.SynchronousFastLogger = new BatchLogger(mockLogger.Object); FulcrumApplication.Setup.LogSeverityLevelThreshold = LogSeverityLevel.Information; #if NETCOREAPP var doLogging = new LogFiveTimesHandler(async c => await Task.CompletedTask); var batchLogsHandler = new BatchLogs(doLogging.InvokeAsync, LogSeverityLevel.Warning); var context = new DefaultHttpContext(); Assert.IsFalse(FulcrumApplication.Context.IsInBatchLogger); await batchLogsHandler.InvokeAsync(context); Assert.IsFalse(FulcrumApplication.Context.IsInBatchLogger); #else var handler = new BatchLogs(LogSeverityLevel.Warning) { InnerHandler = new LogFiveTimesHandler() }; var invoker = new HttpMessageInvoker(handler); var request = new HttpRequestMessage(HttpMethod.Get, "https://v-mock.org/v2/smoke-testing-company/ver"); Assert.IsFalse(FulcrumApplication.Context.IsInBatchLogger); await invoker.SendAsync(request, CancellationToken.None); Assert.IsFalse(FulcrumApplication.Context.IsInBatchLogger); #endif mockLogger.Verify(); }