public void WriteResponseTest()
        {
            var err           = "Some exception message";
            var totalDuration = TimeSpan.FromMilliseconds(200);
            var httpContext   = new DefaultHttpContext();

            httpContext.Response.Body = new MemoryStream();
            var reports = new Dictionary <string, HealthReportEntry>
            {
                { "Test1", new HealthReportEntry(HealthStatus.Healthy, "Check 1", TimeSpan.FromMilliseconds(50), null, null) },
                { "Test2", new HealthReportEntry(HealthStatus.Degraded, "Check 2", TimeSpan.FromMilliseconds(45), null, null) },
                { "Test3", new HealthReportEntry(HealthStatus.Unhealthy, "Check 3", TimeSpan.FromMilliseconds(50), new Exception(err), null) }
            };
            var fullReport = new HealthReport(reports, totalDuration);

            HealthCheckResponseWriter.WriteResponse(httpContext, fullReport).Wait();

            httpContext.Response.Body.Position = 0;
            using (var reader = new StreamReader(httpContext.Response.Body))
            {
                var responseText = reader.ReadToEnd();
                var options      = new JsonSerializerOptions()
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
                    WriteIndented        = true
                };
                options.Converters.Add(new JsonStringEnumConverter());
                var jsonResponse = JsonSerializer.Deserialize <HealthCheckResponse>(responseText, options);

                var expected = new HealthCheckResponse(fullReport);
                jsonResponse.Should().BeEquivalentTo(expected);
            }
        }
Beispiel #2
0
        public async void WriteToHttpResponse()
        {
            HealthReport report = CreateHealthReport(HealthStatus.Healthy);

            var context = new DefaultHttpContext();

            context.Response.Body = new MemoryStream();

            await HealthCheckResponseWriter.WriteHealthCheckResponseAsync(context, report);

            context.Response.Body.Seek(0, SeekOrigin.Begin);
            string responseBody = new StreamReader(context.Response.Body).ReadToEnd();

            var uiHealthReport = JsonConvert.DeserializeObject <UIHealthCheckReport>(responseBody);

            uiHealthReport.Status.Should().Be(HealthStatus.Healthy);
            uiHealthReport.TotalDuration.Seconds.Should().Be(5);
            uiHealthReport.Entries.Count.Should().Be(report.Entries.Count);
        }