From d73979fdf28ead60fffdbcd2991cbb55170cfd21 Mon Sep 17 00:00:00 2001 From: maryarm Date: Sat, 1 Jun 2019 12:15:57 +0430 Subject: [PATCH 1/3] #BAEL-2802: Implement response decoder for ok http client and apply review notes --- libraries-2/pom.xml | 27 +++ .../okhttp/ResponseDecoderUnitTest.java | 160 ++++++++++++++++++ .../com/baeldung/okhttp/SimpleEntity.java | 21 +++ 3 files changed, 208 insertions(+) create mode 100644 libraries-2/src/test/java/com/baeldung/okhttp/ResponseDecoderUnitTest.java create mode 100644 libraries-2/src/test/java/com/baeldung/okhttp/SimpleEntity.java diff --git a/libraries-2/pom.xml b/libraries-2/pom.xml index 6303c0cab5..d3c0f7204b 100644 --- a/libraries-2/pom.xml +++ b/libraries-2/pom.xml @@ -55,6 +55,33 @@ spring-boot-starter ${spring-boot-starter.version} + + + + com.squareup.okhttp3 + okhttp + 3.14.2 + + + + com.fasterxml.jackson.core + jackson-databind + 2.9.9 + + + + com.google.code.gson + gson + 2.8.5 + + + + com.squareup.okhttp3 + mockwebserver + 3.14.2 + test + + diff --git a/libraries-2/src/test/java/com/baeldung/okhttp/ResponseDecoderUnitTest.java b/libraries-2/src/test/java/com/baeldung/okhttp/ResponseDecoderUnitTest.java new file mode 100644 index 0000000000..e9f829abe4 --- /dev/null +++ b/libraries-2/src/test/java/com/baeldung/okhttp/ResponseDecoderUnitTest.java @@ -0,0 +1,160 @@ +package com.baeldung.okhttp; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.ResponseBody; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import java.io.InputStreamReader; + +public class ResponseDecoderUnitTest { + + @Rule + public ExpectedException exceptionRule = ExpectedException.none(); + + @Rule + public MockWebServer server = new MockWebServer(); + + SimpleEntity sampleResponse; + + MockResponse mockResponse; + + OkHttpClient client; + + + @Before + public void setUp() { + sampleResponse = new SimpleEntity("Baeldung"); + client = new OkHttpClient.Builder() + .build(); + mockResponse = new MockResponse() + .setResponseCode(200) + .setHeader("Content-Type", "application/json") + .setBody(new Gson().toJson(sampleResponse)); + } + + @Test + public void givenJacksonDecoder_whenGetByteStreamOfResponse_thenExpectSimpleEntity() throws Exception { + + server.enqueue(mockResponse); + + Request request = new Request.Builder() + .url(server.url("")) + .build(); + ResponseBody responseBody = client.newCall(request).execute().body(); + + Assert.assertNotNull(responseBody); + Assert.assertNotEquals(0, responseBody.contentLength()); + + ObjectMapper objectMapper = new ObjectMapper(); + SimpleEntity response = objectMapper.readValue(responseBody.byteStream() + , SimpleEntity.class); + + Assert.assertEquals(sampleResponse.getName(), response.getName()); + } + + @Test + public void givenJacksonDecoder_whenGetStringOfResponse_thenExpectSimpleEntity() throws Exception { + + server.enqueue(mockResponse); + + Request request = new Request.Builder() + .url(server.url("")) + .build(); + ResponseBody responseBody = client.newCall(request).execute().body(); + + Assert.assertNotNull(responseBody); + Assert.assertNotEquals(0, responseBody.contentLength()); + + ObjectMapper objectMapper = new ObjectMapper(); + SimpleEntity response = objectMapper.readValue(responseBody.string(), SimpleEntity.class); + + Assert.assertEquals(sampleResponse.getName(), response.getName()); + } + + @Test + public void givenJacksonDecoder_whenGetCharStreamOfResponse_thenExpectSimpleEntity() throws Exception { + + server.enqueue(mockResponse); + + Request request = new Request.Builder() + .url(server.url("")) + .build(); + ResponseBody responseBody = client.newCall(request).execute().body(); + + Assert.assertNotNull(responseBody); + Assert.assertNotEquals(0, responseBody.contentLength()); + + ObjectMapper objectMapper = new ObjectMapper(); + SimpleEntity response = objectMapper.readValue(responseBody.charStream(), SimpleEntity.class); + + Assert.assertEquals(sampleResponse.getName(), response.getName()); + } + + @Test + public void givenGsonDecoder_whenGetByteStreamOfResponse_thenExpectSimpleEntity() throws Exception { + + server.enqueue(mockResponse); + + Request request = new Request.Builder() + .url(server.url("")) + .build(); + ResponseBody responseBody = client.newCall(request).execute().body(); + + Assert.assertNotNull(responseBody); + Assert.assertNotEquals(0, responseBody.contentLength()); + + Gson gson = new Gson(); + SimpleEntity response = gson.fromJson(new InputStreamReader(responseBody.byteStream()) + , SimpleEntity.class); + + Assert.assertEquals(sampleResponse.getName(), response.getName()); + } + + @Test + public void givenGsonDecoder_whenGetStringOfResponse_thenExpectSimpleEntity() throws Exception { + + server.enqueue(mockResponse); + + Request request = new Request.Builder() + .url(server.url("")) + .build(); + ResponseBody responseBody = client.newCall(request).execute().body(); + + Assert.assertNotNull(responseBody); + + Gson gson = new Gson(); + SimpleEntity response = gson.fromJson(responseBody.string(), SimpleEntity.class); + + Assert.assertEquals(sampleResponse.getName(), response.getName()); + } + + @Test + public void givenGsonDecoder_whenGetCharStreamOfResponse_thenExpectSimpleEntity() throws Exception { + + server.enqueue(mockResponse); + + Request request = new Request.Builder() + .url(server.url("")) + .build(); + + ResponseBody responseBody = client.newCall(request).execute().body(); + + Assert.assertNotNull(responseBody); + + Gson gson = new Gson(); + SimpleEntity response = gson.fromJson(responseBody.charStream(), SimpleEntity.class); + + Assert.assertEquals(sampleResponse.getName(), response.getName()); + } + + +} diff --git a/libraries-2/src/test/java/com/baeldung/okhttp/SimpleEntity.java b/libraries-2/src/test/java/com/baeldung/okhttp/SimpleEntity.java new file mode 100644 index 0000000000..4c7cae6fdc --- /dev/null +++ b/libraries-2/src/test/java/com/baeldung/okhttp/SimpleEntity.java @@ -0,0 +1,21 @@ +package com.baeldung.okhttp; + +public class SimpleEntity { + protected String name; + + public SimpleEntity(String name) { + this.name = name; + } + + //no-arg constructor, getters and setters here + public SimpleEntity() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} From c18bb8e18878680635a8e5fbfe1af1d10cb46a49 Mon Sep 17 00:00:00 2001 From: maryarm Date: Fri, 7 Jun 2019 19:36:31 +0430 Subject: [PATCH 2/3] #BAEL-2802 Fix problems with code indentions, spacing and commas. --- .../okhttp/ResponseDecoderUnitTest.java | 124 +++++------------- .../com/baeldung/okhttp/SimpleEntity.java | 1 + 2 files changed, 34 insertions(+), 91 deletions(-) diff --git a/libraries-2/src/test/java/com/baeldung/okhttp/ResponseDecoderUnitTest.java b/libraries-2/src/test/java/com/baeldung/okhttp/ResponseDecoderUnitTest.java index e9f829abe4..11a295031a 100644 --- a/libraries-2/src/test/java/com/baeldung/okhttp/ResponseDecoderUnitTest.java +++ b/libraries-2/src/test/java/com/baeldung/okhttp/ResponseDecoderUnitTest.java @@ -17,11 +17,9 @@ import java.io.InputStreamReader; public class ResponseDecoderUnitTest { - @Rule - public ExpectedException exceptionRule = ExpectedException.none(); + @Rule public ExpectedException exceptionRule = ExpectedException.none(); - @Rule - public MockWebServer server = new MockWebServer(); + @Rule public MockWebServer server = new MockWebServer(); SimpleEntity sampleResponse; @@ -29,132 +27,76 @@ public class ResponseDecoderUnitTest { OkHttpClient client; - @Before public void setUp() { sampleResponse = new SimpleEntity("Baeldung"); - client = new OkHttpClient.Builder() - .build(); + client = new OkHttpClient.Builder().build(); mockResponse = new MockResponse() - .setResponseCode(200) - .setHeader("Content-Type", "application/json") - .setBody(new Gson().toJson(sampleResponse)); - } - - @Test - public void givenJacksonDecoder_whenGetByteStreamOfResponse_thenExpectSimpleEntity() throws Exception { - - server.enqueue(mockResponse); - - Request request = new Request.Builder() - .url(server.url("")) - .build(); - ResponseBody responseBody = client.newCall(request).execute().body(); - - Assert.assertNotNull(responseBody); - Assert.assertNotEquals(0, responseBody.contentLength()); - - ObjectMapper objectMapper = new ObjectMapper(); - SimpleEntity response = objectMapper.readValue(responseBody.byteStream() - , SimpleEntity.class); - - Assert.assertEquals(sampleResponse.getName(), response.getName()); + .setResponseCode(200) + .setHeader("Content-Type", "application/json") + .setBody(new Gson().toJson(sampleResponse)); } @Test public void givenJacksonDecoder_whenGetStringOfResponse_thenExpectSimpleEntity() throws Exception { - server.enqueue(mockResponse); - Request request = new Request.Builder() - .url(server.url("")) - .build(); - ResponseBody responseBody = client.newCall(request).execute().body(); + .url(server.url("")) + .build(); + ResponseBody responseBody = client + .newCall(request) + .execute() + .body(); Assert.assertNotNull(responseBody); Assert.assertNotEquals(0, responseBody.contentLength()); ObjectMapper objectMapper = new ObjectMapper(); - SimpleEntity response = objectMapper.readValue(responseBody.string(), SimpleEntity.class); + SimpleEntity entity = objectMapper.readValue(responseBody.string(), SimpleEntity.class); - Assert.assertEquals(sampleResponse.getName(), response.getName()); - } - - @Test - public void givenJacksonDecoder_whenGetCharStreamOfResponse_thenExpectSimpleEntity() throws Exception { - - server.enqueue(mockResponse); - - Request request = new Request.Builder() - .url(server.url("")) - .build(); - ResponseBody responseBody = client.newCall(request).execute().body(); - - Assert.assertNotNull(responseBody); - Assert.assertNotEquals(0, responseBody.contentLength()); - - ObjectMapper objectMapper = new ObjectMapper(); - SimpleEntity response = objectMapper.readValue(responseBody.charStream(), SimpleEntity.class); - - Assert.assertEquals(sampleResponse.getName(), response.getName()); + Assert.assertNotNull(entity); + Assert.assertEquals(sampleResponse.getName(), entity.getName()); } @Test public void givenGsonDecoder_whenGetByteStreamOfResponse_thenExpectSimpleEntity() throws Exception { - server.enqueue(mockResponse); - Request request = new Request.Builder() - .url(server.url("")) - .build(); - ResponseBody responseBody = client.newCall(request).execute().body(); + .url(server.url("")) + .build(); + ResponseBody responseBody = client + .newCall(request) + .execute() + .body(); Assert.assertNotNull(responseBody); Assert.assertNotEquals(0, responseBody.contentLength()); Gson gson = new Gson(); - SimpleEntity response = gson.fromJson(new InputStreamReader(responseBody.byteStream()) - , SimpleEntity.class); + SimpleEntity entity = gson.fromJson(new InputStreamReader(responseBody.byteStream()), SimpleEntity.class); - Assert.assertEquals(sampleResponse.getName(), response.getName()); + Assert.assertNotNull(entity); + Assert.assertEquals(sampleResponse.getName(), entity.getName()); } @Test public void givenGsonDecoder_whenGetStringOfResponse_thenExpectSimpleEntity() throws Exception { - server.enqueue(mockResponse); - Request request = new Request.Builder() - .url(server.url("")) - .build(); - ResponseBody responseBody = client.newCall(request).execute().body(); + .url(server.url("")) + .build(); + ResponseBody responseBody = client + .newCall(request) + .execute() + .body(); Assert.assertNotNull(responseBody); Gson gson = new Gson(); - SimpleEntity response = gson.fromJson(responseBody.string(), SimpleEntity.class); + SimpleEntity entity = gson.fromJson(responseBody.string(), SimpleEntity.class); - Assert.assertEquals(sampleResponse.getName(), response.getName()); + Assert.assertNotNull(entity); + Assert.assertEquals(sampleResponse.getName(), entity.getName()); } - @Test - public void givenGsonDecoder_whenGetCharStreamOfResponse_thenExpectSimpleEntity() throws Exception { - - server.enqueue(mockResponse); - - Request request = new Request.Builder() - .url(server.url("")) - .build(); - - ResponseBody responseBody = client.newCall(request).execute().body(); - - Assert.assertNotNull(responseBody); - - Gson gson = new Gson(); - SimpleEntity response = gson.fromJson(responseBody.charStream(), SimpleEntity.class); - - Assert.assertEquals(sampleResponse.getName(), response.getName()); - } - - } diff --git a/libraries-2/src/test/java/com/baeldung/okhttp/SimpleEntity.java b/libraries-2/src/test/java/com/baeldung/okhttp/SimpleEntity.java index 4c7cae6fdc..211e43e556 100644 --- a/libraries-2/src/test/java/com/baeldung/okhttp/SimpleEntity.java +++ b/libraries-2/src/test/java/com/baeldung/okhttp/SimpleEntity.java @@ -8,6 +8,7 @@ public class SimpleEntity { } //no-arg constructor, getters and setters here + public SimpleEntity() { } From b7e654ed650fa75264c7deb0b20e7e62771d2b2b Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 7 Jun 2019 19:12:29 -0500 Subject: [PATCH 3/3] Update pom.xml Fixed merge issue --- libraries-2/pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries-2/pom.xml b/libraries-2/pom.xml index f9cb1201be..8e493e2d05 100644 --- a/libraries-2/pom.xml +++ b/libraries-2/pom.xml @@ -82,11 +82,11 @@ test - - edu.uci.ics - crawler4j - ${crawler4j.version} - + edu.uci.ics + crawler4j + ${crawler4j.version} +