예제 #1
0
        public void map_from_execution_when_the_request_was_redirected()
        {
            var log = new ChainExecutionLog();

            log.Request.Add(OwinConstants.ResponseStatusCodeKey, 302);
            log.Request.ResponseHeaders().Add(HttpResponseHeaders.ContentType, new[] { "text/plain" });
            log.Request.ResponseHeaders().Add(HttpResponseHeaders.Location, new[] { "/new/place" });


            var request = new OwinHttpRequest(log.Request);

            request.HttpMethod("GET");
            request.FullUrl("http://server/foo");

            log.MarkFinished();

            var summary = new HttpRequestSummary(log);

            summary.id.ShouldBe(log.Id.ToString());
            summary.time.ShouldBe(log.Time.ToHttpDateString());
            summary.url.ShouldBe("/foo");
            summary.method.ShouldBe("GET");
            summary.status.ShouldBe(302);
            summary.contentType.ShouldBe("text/plain");
            summary.duration.ShouldBe(log.ExecutionTime);

            summary.description.ShouldBe("/new/place");
        }
예제 #2
0
        public string ToHtml()
        {
            var table = new TableTag();

            table.AddClass("table");
            table.AddClass("table-striped");
            table.AddHeaderRow(row =>
            {
                row.Header("Details");
                row.Header("Duration (ms)");
                row.Header("Method");
                row.Header("Endpoint");
                row.Header("Status");
                row.Header("Content Type");
            });

            _logs.Each(log =>
            {
                var url = _runtime.BaseAddress.TrimEnd('/') + "/_fubu/#/fubumvc/request-details/" + log.Id;

                table.AddBodyRow(row =>
                {
                    row.Cell().Add("a").Text("Details").Attr("href", url).Attr("target", "_blank");
                    row.Cell(log.ExecutionTime.ToString()).Attr("align", "right");

                    var summary = new HttpRequestSummary(log);
                    row.Cell(summary.method);
                    row.Cell(log.Title());
                    row.Cell(summary.status.ToString());
                    row.Cell(summary.contentType);
                });
            });


            return(table.ToString());
        }
예제 #3
0
        public void map_from_execution_log_happy_path()
        {
            var log = new ChainExecutionLog();

            log.Request.Add(OwinConstants.ResponseStatusCodeKey, 200);
            log.Request.ResponseHeaders().Add(HttpResponseHeaders.ContentType, new [] { "text/plain" });

            var request = new OwinHttpRequest(log.Request);

            request.HttpMethod("POST");
            request.FullUrl("http://server/foo");

            log.MarkFinished();

            var summary = new HttpRequestSummary(log);

            summary.id.ShouldBe(log.Id.ToString());
            summary.time.ShouldBe(log.Time.ToHttpDateString());
            summary.url.ShouldBe("/foo");
            summary.method.ShouldBe("POST");
            summary.status.ShouldBe(200);
            summary.contentType.ShouldBe("text/plain");
            summary.duration.ShouldBe(log.ExecutionTime);
        }