From 04893fdfb0941dc9feade87438989fce30272e52 Mon Sep 17 00:00:00 2001 From: artsok Date: Tue, 15 Oct 2019 18:39:29 +0300 Subject: [PATCH 1/4] add request time property to the http request attachment --- .../http/HttpRequestAttachment.java | 27 +++++++++++++++++-- .../src/main/resources/tpl/http-request.ftl | 7 +++++ .../FreemarkerAttachmentRendererTest.java | 9 +++++++ .../allure/attachment/testdata/TestData.java | 2 ++ .../allure/restassured/AllureRestAssured.java | 1 + 5 files changed, 44 insertions(+), 2 deletions(-) diff --git a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java index 831b2a5da..7222d3d86 100644 --- a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java +++ b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java @@ -17,6 +17,7 @@ import io.qameta.allure.attachment.AttachmentData; +import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -36,18 +37,23 @@ public class HttpRequestAttachment implements AttachmentData { private final String curl; + private final LocalDateTime time; + private final Map headers; private final Map cookies; + @SuppressWarnings("checkstyle:ParameterNumber") public HttpRequestAttachment(final String name, final String url, final String method, - final String body, final String curl, final Map headers, + final String body, final String curl, final LocalDateTime time, + final Map headers, final Map cookies) { this.name = name; this.url = url; this.method = method; this.body = body; this.curl = curl; + this.time = time; this.headers = headers; this.cookies = cookies; } @@ -76,6 +82,10 @@ public String getCurl() { return curl; } + public LocalDateTime getTime() { + return time; + } + @Override public String getName() { return name; @@ -95,6 +105,8 @@ public static final class Builder { private String body; + private LocalDateTime time; + private final Map headers = new HashMap<>(); private final Map cookies = new HashMap<>(); @@ -110,6 +122,11 @@ public static Builder create(final String attachmentName, final String url) { return new Builder(attachmentName, url); } + public Builder setRequestTime() { + this.time = LocalDateTime.now(); + return this; + } + public Builder setMethod(final String method) { Objects.requireNonNull(method, "Method must not be null value"); this.method = method; @@ -150,6 +167,7 @@ public Builder setBody(final String body) { /** * Use setter method instead. + * * @deprecated scheduled for removal in 3.0 release */ @Deprecated @@ -159,6 +177,7 @@ public Builder withMethod(final String method) { /** * Use setter method instead. + * * @deprecated scheduled for removal in 3.0 release */ @Deprecated @@ -168,6 +187,7 @@ public Builder withHeader(final String name, final String value) { /** * Use setter method instead. + * * @deprecated scheduled for removal in 3.0 release */ @Deprecated @@ -177,6 +197,7 @@ public Builder withHeaders(final Map headers) { /** * Use setter method instead. + * * @deprecated scheduled for removal in 3.0 release */ @Deprecated @@ -186,6 +207,7 @@ public Builder withCookie(final String name, final String value) { /** * Use setter method instead. + * * @deprecated scheduled for removal in 3.0 release */ @Deprecated @@ -195,6 +217,7 @@ public Builder withCookies(final Map cookies) { /** * Use setter method instead. + * * @deprecated scheduled for removal in 3.0 release */ @Deprecated @@ -203,7 +226,7 @@ public Builder withBody(final String body) { } public HttpRequestAttachment build() { - return new HttpRequestAttachment(name, url, method, body, getCurl(), headers, cookies); + return new HttpRequestAttachment(name, url, method, body, getCurl(), time, headers, cookies); } private String getCurl() { diff --git a/allure-attachments/src/main/resources/tpl/http-request.ftl b/allure-attachments/src/main/resources/tpl/http-request.ftl index 5ef76b521..781f49484 100644 --- a/allure-attachments/src/main/resources/tpl/http-request.ftl +++ b/allure-attachments/src/main/resources/tpl/http-request.ftl @@ -2,6 +2,13 @@ <#-- @ftlvariable name="data" type="io.qameta.allure.attachment.http.HttpRequestAttachment" -->
<#if data.method??>${data.method}<#else>GET to <#if data.url??>${data.url}<#else>Unknown
+<#if data.time??> +

Request time

+
+ ${data.time} +
+ + <#if data.body??>

Body

diff --git a/allure-attachments/src/test/java/io/qameta/allure/attachment/FreemarkerAttachmentRendererTest.java b/allure-attachments/src/test/java/io/qameta/allure/attachment/FreemarkerAttachmentRendererTest.java index 75ddac32d..d19729a8a 100644 --- a/allure-attachments/src/test/java/io/qameta/allure/attachment/FreemarkerAttachmentRendererTest.java +++ b/allure-attachments/src/test/java/io/qameta/allure/attachment/FreemarkerAttachmentRendererTest.java @@ -40,6 +40,15 @@ void shouldRenderRequestAttachment() { .hasFieldOrProperty("content"); } + @Test + void shouldRenderRequestTimeAttachment() { + final HttpRequestAttachment data = randomHttpRequestAttachment(); + final DefaultAttachmentContent content = new FreemarkerAttachmentRenderer("http-request.ftl") + .render(data); + + assertThat(content.getContent()).contains("Request time"); + } + @AllureFeatures.Attachments @Test void shouldRenderResponseAttachment() { diff --git a/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java b/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java index 26eba1c6f..9915b6b1a 100644 --- a/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java +++ b/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java @@ -21,6 +21,7 @@ import io.qameta.allure.attachment.http.HttpResponseAttachment; import org.apache.commons.lang3.RandomStringUtils; +import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ThreadLocalRandom; @@ -45,6 +46,7 @@ public static HttpRequestAttachment randomHttpRequestAttachment() { randomString(), randomString(), randomString(), + LocalDateTime.now(), randomMap(), randomMap() ); diff --git a/allure-rest-assured/src/main/java/io/qameta/allure/restassured/AllureRestAssured.java b/allure-rest-assured/src/main/java/io/qameta/allure/restassured/AllureRestAssured.java index 717b64ecd..68cfadacc 100644 --- a/allure-rest-assured/src/main/java/io/qameta/allure/restassured/AllureRestAssured.java +++ b/allure-rest-assured/src/main/java/io/qameta/allure/restassured/AllureRestAssured.java @@ -78,6 +78,7 @@ public Response filter(final FilterableRequestSpecification requestSpec, final HttpRequestAttachment.Builder requestAttachmentBuilder = create("Request", requestSpec.getURI()) + .setRequestTime() .setMethod(requestSpec.getMethod()) .setHeaders(toMapConverter(requestSpec.getHeaders())) .setCookies(toMapConverter(requestSpec.getCookies())); From e1355163ef8c1c2ec671c24805a652169ea464af Mon Sep 17 00:00:00 2001 From: artsok Date: Tue, 15 Oct 2019 19:04:43 +0300 Subject: [PATCH 2/4] add response time property to the http response attachment --- .../http/HttpRequestAttachment.java | 16 ++++++++-------- .../http/HttpResponseAttachment.java | 19 +++++++++++++++++-- .../src/main/resources/tpl/http-request.ftl | 4 ++-- .../src/main/resources/tpl/http-response.ftl | 7 +++++++ .../FreemarkerAttachmentRendererTest.java | 13 +++++++++++++ .../allure/attachment/testdata/TestData.java | 1 + .../allure/restassured/AllureRestAssured.java | 1 + 7 files changed, 49 insertions(+), 12 deletions(-) diff --git a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java index 7222d3d86..285b78a1e 100644 --- a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java +++ b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java @@ -37,7 +37,7 @@ public class HttpRequestAttachment implements AttachmentData { private final String curl; - private final LocalDateTime time; + private final LocalDateTime requestTime; private final Map headers; @@ -45,7 +45,7 @@ public class HttpRequestAttachment implements AttachmentData { @SuppressWarnings("checkstyle:ParameterNumber") public HttpRequestAttachment(final String name, final String url, final String method, - final String body, final String curl, final LocalDateTime time, + final String body, final String curl, final LocalDateTime requestTime, final Map headers, final Map cookies) { this.name = name; @@ -53,7 +53,7 @@ public HttpRequestAttachment(final String name, final String url, final String m this.method = method; this.body = body; this.curl = curl; - this.time = time; + this.requestTime = requestTime; this.headers = headers; this.cookies = cookies; } @@ -82,8 +82,8 @@ public String getCurl() { return curl; } - public LocalDateTime getTime() { - return time; + public LocalDateTime getRequestTime() { + return requestTime; } @Override @@ -105,7 +105,7 @@ public static final class Builder { private String body; - private LocalDateTime time; + private LocalDateTime requestTime; private final Map headers = new HashMap<>(); @@ -123,7 +123,7 @@ public static Builder create(final String attachmentName, final String url) { } public Builder setRequestTime() { - this.time = LocalDateTime.now(); + this.requestTime = LocalDateTime.now(); return this; } @@ -226,7 +226,7 @@ public Builder withBody(final String body) { } public HttpRequestAttachment build() { - return new HttpRequestAttachment(name, url, method, body, getCurl(), time, headers, cookies); + return new HttpRequestAttachment(name, url, method, body, getCurl(), requestTime, headers, cookies); } private String getCurl() { diff --git a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java index d73b21701..efa5b1822 100644 --- a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java +++ b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java @@ -17,6 +17,7 @@ import io.qameta.allure.attachment.AttachmentData; +import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -34,17 +35,20 @@ public class HttpResponseAttachment implements AttachmentData { private final int responseCode; + private final LocalDateTime responseTime; + private final Map headers; private final Map cookies; public HttpResponseAttachment(final String name, final String url, - final String body, final int responseCode, + final String body, final int responseCode, final LocalDateTime responseTime, final Map headers, final Map cookies) { this.name = name; this.url = url; this.body = body; this.responseCode = responseCode; + this.responseTime = responseTime; this.headers = headers; this.cookies = cookies; } @@ -66,6 +70,10 @@ public int getResponseCode() { return responseCode; } + public LocalDateTime getResponseTime() { + return responseTime; + } + public Map getHeaders() { return headers; } @@ -86,6 +94,8 @@ public static final class Builder { private int responseCode; + private LocalDateTime responseTime; + private String body; private final Map headers = new HashMap<>(); @@ -101,6 +111,11 @@ public static Builder create(final String attachmentName) { return new Builder(attachmentName); } + public Builder setResponseTime() { + this.responseTime = LocalDateTime.now(); + return this; + } + public Builder setUrl(final String url) { Objects.requireNonNull(url, "Url must not be null value"); this.url = url; @@ -209,7 +224,7 @@ public Builder withBody(final String body) { } public HttpResponseAttachment build() { - return new HttpResponseAttachment(name, url, body, responseCode, headers, cookies); + return new HttpResponseAttachment(name, url, body, responseCode, responseTime, headers, cookies); } } } diff --git a/allure-attachments/src/main/resources/tpl/http-request.ftl b/allure-attachments/src/main/resources/tpl/http-request.ftl index 781f49484..d577a8c7b 100644 --- a/allure-attachments/src/main/resources/tpl/http-request.ftl +++ b/allure-attachments/src/main/resources/tpl/http-request.ftl @@ -2,10 +2,10 @@ <#-- @ftlvariable name="data" type="io.qameta.allure.attachment.http.HttpRequestAttachment" -->
<#if data.method??>${data.method}<#else>GET to <#if data.url??>${data.url}<#else>Unknown
-<#if data.time??> +<#if data.requestTime??>

Request time

- ${data.time} + ${data.requestTime}
diff --git a/allure-attachments/src/main/resources/tpl/http-response.ftl b/allure-attachments/src/main/resources/tpl/http-response.ftl index 2bc55de9f..f7c8329f9 100644 --- a/allure-attachments/src/main/resources/tpl/http-response.ftl +++ b/allure-attachments/src/main/resources/tpl/http-response.ftl @@ -3,6 +3,13 @@
Status code <#if data.responseCode??>${data.responseCode} <#else>Unknown
<#if data.url??>
${data.url}
+<#if data.responseTime??> +

Response time

+
+ ${data.responseTime} +
+ + <#if data.body??>

Body

diff --git a/allure-attachments/src/test/java/io/qameta/allure/attachment/FreemarkerAttachmentRendererTest.java b/allure-attachments/src/test/java/io/qameta/allure/attachment/FreemarkerAttachmentRendererTest.java index d19729a8a..a39fe09ea 100644 --- a/allure-attachments/src/test/java/io/qameta/allure/attachment/FreemarkerAttachmentRendererTest.java +++ b/allure-attachments/src/test/java/io/qameta/allure/attachment/FreemarkerAttachmentRendererTest.java @@ -16,10 +16,12 @@ package io.qameta.allure.attachment; import io.qameta.allure.attachment.http.HttpRequestAttachment; +import io.qameta.allure.attachment.http.HttpResponseAttachment; import io.qameta.allure.test.AllureFeatures; import org.junit.jupiter.api.Test; import static io.qameta.allure.attachment.testdata.TestData.randomHttpRequestAttachment; +import static io.qameta.allure.attachment.testdata.TestData.randomHttpResponseAttachment; import static org.assertj.core.api.Assertions.assertThat; /** @@ -40,6 +42,7 @@ void shouldRenderRequestAttachment() { .hasFieldOrProperty("content"); } + @AllureFeatures.Attachments @Test void shouldRenderRequestTimeAttachment() { final HttpRequestAttachment data = randomHttpRequestAttachment(); @@ -49,6 +52,16 @@ void shouldRenderRequestTimeAttachment() { assertThat(content.getContent()).contains("Request time"); } + @AllureFeatures.Attachments + @Test + void shouldRenderResponseTimeAttachment() { + final HttpResponseAttachment data = randomHttpResponseAttachment(); + final DefaultAttachmentContent content = new FreemarkerAttachmentRenderer("http-response.ftl") + .render(data); + + assertThat(content.getContent()).contains("Response time"); + } + @AllureFeatures.Attachments @Test void shouldRenderResponseAttachment() { diff --git a/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java b/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java index 9915b6b1a..228ae7850 100644 --- a/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java +++ b/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java @@ -58,6 +58,7 @@ public static HttpResponseAttachment randomHttpResponseAttachment() { randomString(), randomString(), ThreadLocalRandom.current().nextInt(), + LocalDateTime.now(), randomMap(), randomMap() ); diff --git a/allure-rest-assured/src/main/java/io/qameta/allure/restassured/AllureRestAssured.java b/allure-rest-assured/src/main/java/io/qameta/allure/restassured/AllureRestAssured.java index 68cfadacc..4945fea68 100644 --- a/allure-rest-assured/src/main/java/io/qameta/allure/restassured/AllureRestAssured.java +++ b/allure-rest-assured/src/main/java/io/qameta/allure/restassured/AllureRestAssured.java @@ -96,6 +96,7 @@ public Response filter(final FilterableRequestSpecification requestSpec, final Response response = filterContext.next(requestSpec, responseSpec); final HttpResponseAttachment responseAttachment = create(response.getStatusLine()) + .setResponseTime() .setResponseCode(response.getStatusCode()) .setHeaders(toMapConverter(response.getHeaders())) .setBody(prettifier.getPrettifiedBodyIfPossible(response, response.getBody())) From b56f5ff52b4c1122541126621549d9ac66f30f54 Mon Sep 17 00:00:00 2001 From: artsok Date: Sun, 27 Oct 2019 22:17:52 +0300 Subject: [PATCH 3/4] changed to ZonedDateTime --- .../attachment/http/HttpRequestAttachment.java | 13 +++++++------ .../attachment/http/HttpResponseAttachment.java | 14 ++++++++------ .../allure/attachment/testdata/TestData.java | 7 ++++--- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java index 285b78a1e..600bc6e8c 100644 --- a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java +++ b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java @@ -17,7 +17,8 @@ import io.qameta.allure.attachment.AttachmentData; -import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -37,7 +38,7 @@ public class HttpRequestAttachment implements AttachmentData { private final String curl; - private final LocalDateTime requestTime; + private final ZonedDateTime requestTime; private final Map headers; @@ -45,7 +46,7 @@ public class HttpRequestAttachment implements AttachmentData { @SuppressWarnings("checkstyle:ParameterNumber") public HttpRequestAttachment(final String name, final String url, final String method, - final String body, final String curl, final LocalDateTime requestTime, + final String body, final String curl, final ZonedDateTime requestTime, final Map headers, final Map cookies) { this.name = name; @@ -82,7 +83,7 @@ public String getCurl() { return curl; } - public LocalDateTime getRequestTime() { + public ZonedDateTime getRequestTime() { return requestTime; } @@ -105,7 +106,7 @@ public static final class Builder { private String body; - private LocalDateTime requestTime; + private ZonedDateTime requestTime; private final Map headers = new HashMap<>(); @@ -123,7 +124,7 @@ public static Builder create(final String attachmentName, final String url) { } public Builder setRequestTime() { - this.requestTime = LocalDateTime.now(); + this.requestTime = ZonedDateTime.now(ZoneId.systemDefault()) ; return this; } diff --git a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java index efa5b1822..ce106cab5 100644 --- a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java +++ b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java @@ -17,7 +17,9 @@ import io.qameta.allure.attachment.AttachmentData; -import java.time.LocalDateTime; + +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -35,14 +37,14 @@ public class HttpResponseAttachment implements AttachmentData { private final int responseCode; - private final LocalDateTime responseTime; + private final ZonedDateTime responseTime; private final Map headers; private final Map cookies; public HttpResponseAttachment(final String name, final String url, - final String body, final int responseCode, final LocalDateTime responseTime, + final String body, final int responseCode, final ZonedDateTime responseTime, final Map headers, final Map cookies) { this.name = name; this.url = url; @@ -70,7 +72,7 @@ public int getResponseCode() { return responseCode; } - public LocalDateTime getResponseTime() { + public ZonedDateTime getResponseTime() { return responseTime; } @@ -94,7 +96,7 @@ public static final class Builder { private int responseCode; - private LocalDateTime responseTime; + private ZonedDateTime responseTime; private String body; @@ -112,7 +114,7 @@ public static Builder create(final String attachmentName) { } public Builder setResponseTime() { - this.responseTime = LocalDateTime.now(); + this.responseTime = ZonedDateTime.now(ZoneId.systemDefault()); return this; } diff --git a/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java b/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java index 228ae7850..e2c880ef7 100644 --- a/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java +++ b/allure-attachments/src/test/java/io/qameta/allure/attachment/testdata/TestData.java @@ -21,7 +21,8 @@ import io.qameta.allure.attachment.http.HttpResponseAttachment; import org.apache.commons.lang3.RandomStringUtils; -import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ThreadLocalRandom; @@ -46,7 +47,7 @@ public static HttpRequestAttachment randomHttpRequestAttachment() { randomString(), randomString(), randomString(), - LocalDateTime.now(), + ZonedDateTime.now(ZoneId.systemDefault()), randomMap(), randomMap() ); @@ -58,7 +59,7 @@ public static HttpResponseAttachment randomHttpResponseAttachment() { randomString(), randomString(), ThreadLocalRandom.current().nextInt(), - LocalDateTime.now(), + ZonedDateTime.now(ZoneId.systemDefault()), randomMap(), randomMap() ); From 8857fc4f21aacbbce56ea2d2abed8e988f5b54cb Mon Sep 17 00:00:00 2001 From: artsok Date: Mon, 28 Oct 2019 19:41:23 +0300 Subject: [PATCH 4/4] fixed code style --- .../io/qameta/allure/attachment/http/HttpRequestAttachment.java | 2 +- .../qameta/allure/attachment/http/HttpResponseAttachment.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java index 600bc6e8c..5d8d0a093 100644 --- a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java +++ b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpRequestAttachment.java @@ -124,7 +124,7 @@ public static Builder create(final String attachmentName, final String url) { } public Builder setRequestTime() { - this.requestTime = ZonedDateTime.now(ZoneId.systemDefault()) ; + this.requestTime = ZonedDateTime.now(ZoneId.systemDefault()); return this; } diff --git a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java index ce106cab5..ff5c64f00 100644 --- a/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java +++ b/allure-attachments/src/main/java/io/qameta/allure/attachment/http/HttpResponseAttachment.java @@ -17,7 +17,6 @@ import io.qameta.allure.attachment.AttachmentData; - import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.HashMap;