From e72c8bdc4d49834e7624e9c3af59f4525c4acdae Mon Sep 17 00:00:00 2001 From: mikhailovav Date: Fri, 25 Jan 2019 16:44:11 +0300 Subject: [PATCH 1/3] fix allure-httpclient request without body --- .../httpclient/AllureHttpClientResponse.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/allure-httpclient/src/main/java/io/qameta/allure/httpclient/AllureHttpClientResponse.java b/allure-httpclient/src/main/java/io/qameta/allure/httpclient/AllureHttpClientResponse.java index c9d23862f..357527fe6 100644 --- a/allure-httpclient/src/main/java/io/qameta/allure/httpclient/AllureHttpClientResponse.java +++ b/allure-httpclient/src/main/java/io/qameta/allure/httpclient/AllureHttpClientResponse.java @@ -1,10 +1,6 @@ package io.qameta.allure.httpclient; -import io.qameta.allure.attachment.AttachmentData; -import io.qameta.allure.attachment.AttachmentProcessor; -import io.qameta.allure.attachment.AttachmentRenderer; -import io.qameta.allure.attachment.DefaultAttachmentProcessor; -import io.qameta.allure.attachment.FreemarkerAttachmentRenderer; +import io.qameta.allure.attachment.*; import io.qameta.allure.attachment.http.HttpResponseAttachment; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; @@ -51,10 +47,14 @@ public void process(final HttpResponse response, Stream.of(response.getAllHeaders()) .forEach(header -> builder.setHeader(header.getName(), header.getValue())); - final LoggableEntity loggableEntity = new LoggableEntity(response.getEntity()); - response.setEntity(loggableEntity); + if (response.getEntity() != null) { + final LoggableEntity loggableEntity = new LoggableEntity(response.getEntity()); + response.setEntity(loggableEntity); - builder.setBody(loggableEntity.getBody()); + builder.setBody(loggableEntity.getBody()); + } else { + builder.setBody("No body present"); + } final HttpResponseAttachment responseAttachment = builder.build(); processor.addAttachment(responseAttachment, renderer); From 6f680a1299d93db29a828328412f95245b4ac142 Mon Sep 17 00:00:00 2001 From: mikhailovav Date: Fri, 25 Jan 2019 17:37:09 +0300 Subject: [PATCH 2/3] revert wildcard import --- .../qameta/allure/httpclient/AllureHttpClientResponse.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/allure-httpclient/src/main/java/io/qameta/allure/httpclient/AllureHttpClientResponse.java b/allure-httpclient/src/main/java/io/qameta/allure/httpclient/AllureHttpClientResponse.java index 357527fe6..2f5cc47ed 100644 --- a/allure-httpclient/src/main/java/io/qameta/allure/httpclient/AllureHttpClientResponse.java +++ b/allure-httpclient/src/main/java/io/qameta/allure/httpclient/AllureHttpClientResponse.java @@ -1,6 +1,10 @@ package io.qameta.allure.httpclient; -import io.qameta.allure.attachment.*; +import io.qameta.allure.attachment.AttachmentData; +import io.qameta.allure.attachment.AttachmentProcessor; +import io.qameta.allure.attachment.AttachmentRenderer; +import io.qameta.allure.attachment.DefaultAttachmentProcessor; +import io.qameta.allure.attachment.FreemarkerAttachmentRenderer; import io.qameta.allure.attachment.http.HttpResponseAttachment; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; From 7068c25a52149d9ae440ceeffc6416e5db59dbc0 Mon Sep 17 00:00:00 2001 From: mikhailovav Date: Mon, 28 Jan 2019 13:46:40 +0300 Subject: [PATCH 3/3] add test shouldCreateResponseAttachmentWithEmptyBody --- .../httpclient/AllureHttpClientTest.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/allure-httpclient/src/test/java/io/qameta/allure/httpclient/AllureHttpClientTest.java b/allure-httpclient/src/test/java/io/qameta/allure/httpclient/AllureHttpClientTest.java index 33a3dc2e2..f8dd370af 100644 --- a/allure-httpclient/src/test/java/io/qameta/allure/httpclient/AllureHttpClientTest.java +++ b/allure-httpclient/src/test/java/io/qameta/allure/httpclient/AllureHttpClientTest.java @@ -46,6 +46,10 @@ void setUp() { stubFor(get(urlEqualTo("/hello")) .willReturn(aResponse() .withBody(BODY_STRING))); + + stubFor(get(urlEqualTo("/empty")) + .willReturn(aResponse() + .withStatus(304))); } @AfterEach @@ -110,4 +114,30 @@ void shouldCreateResponseAttachment() throws Exception { .extracting("responseCode") .containsExactly(200); } + + @Test + void shouldCreateResponseAttachmentWithEmptyBody() throws Exception { + final AttachmentRenderer renderer = mock(AttachmentRenderer.class); + final AttachmentProcessor processor = mock(AttachmentProcessor.class); + + final HttpClientBuilder builder = HttpClientBuilder.create() + .addInterceptorLast(new AllureHttpClientResponse(renderer, processor)); + + try (CloseableHttpClient httpClient = builder.build()) { + final HttpGet httpGet = new HttpGet(String.format("http://localhost:%d/empty", server.port())); + try (CloseableHttpResponse response = httpClient.execute(httpGet)) { + assertThat(response.getEntity()) + .isEqualTo(null); + } + } + + final ArgumentCaptor captor = ArgumentCaptor.forClass(AttachmentData.class); + verify(processor, times(1)) + .addAttachment(captor.capture(), eq(renderer)); + + assertThat(captor.getAllValues()) + .hasSize(1) + .extracting("body") + .containsExactly("No body present"); + } }