Exemple #1
0
        public async Task HandleResponseSetsResponseBody()
        {
            var factory  = new Mock <IHttpLogMessageFactory>();
            var accessor = new Mock <IHttpContextAccessor>();
            var handler  = new DefaultHttpResponseLogHandler(factory.Object, accessor.Object, DefaultOptions.Default);

            var context    = new DefaultHttpContext();
            var logMessage = new HttpResponseLog(0, null, null);

            var content     = "This the http response content!";
            var response    = new FakeHttpResponse(content);
            var bodyWrapper = new HttpResponseBodyWrapper(response.Body);

            context.Features.Set(bodyWrapper);
            context.Features.Set <IHttpResponseFeature>(response);

            accessor.Setup(h => h.HttpContext).Returns(context);
            factory.Setup(f => f.Create(context.Response)).Returns(logMessage);

            await handler.Handle(context.Response);

            bodyWrapper.Dispose();

            Assert.Equal(logMessage.Body, content);
        }
Exemple #2
0
        public static void ShouldBe(this HttpResponseLog responseLog, HttpResponseMessage response)
        {
            foreach (var header in response.Headers)
            {
                var(key, value) = responseLog.Headers.First(h => h.Key == header.Key);

                Assert.Equal(header.Key, key);
                Assert.Equal(string.Join(',', header.Value), value);
            }

            var responseBody = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();

            Assert.Equal(responseBody, responseLog.Body?.ToString());
            Assert.Equal((int)response.StatusCode, responseLog.StatusCode);
        }
Exemple #3
0
    public static void LogResponseHeaders(HttpResponse response, HttpLoggingOptions options, ILogger logger)
    {
        var list = new List <KeyValuePair <string, object?> >(
            response.Headers.Count + DefaultResponseFieldsMinusHeaders);

        if (options.LoggingFields.HasFlag(HttpLoggingFields.ResponseStatusCode))
        {
            list.Add(new KeyValuePair <string, object?>(nameof(response.StatusCode), response.StatusCode));
        }

        if (options.LoggingFields.HasFlag(HttpLoggingFields.ResponseHeaders))
        {
            FilterHeaders(list, response.Headers, options._internalResponseHeaders);
        }

        var httpResponseLog = new HttpResponseLog(list);

        logger.ResponseLog(httpResponseLog);
    }
Exemple #4
0
 public ValueTask StoreAsync(HttpResponseLog responseLog, CancellationToken cancellationToken = default)
 {
     return(SaveLogMessageAsync(responseLog, cancellationToken));
 }
Exemple #5
0
 public static void ResponseLog(this ILogger logger, HttpResponseLog responseLog) => logger.Log(
     LogLevel.Information,
     new EventId(2, "ResponseLog"),
     responseLog,
     exception: null,
     formatter: HttpResponseLog.Callback);