added a test to confirm write causes a POST to execute
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/17372cfc Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/17372cfc Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/17372cfc Branch: refs/heads/STREAMS-212 Commit: 17372cfc149bad5e81408111492a5c0a0af270a9 Parents: 78d3bad Author: Steve Blackmon <[email protected]> Authored: Sat Nov 22 20:50:07 2014 -0600 Committer: Steve Blackmon <[email protected]> Committed: Sat Nov 22 20:50:07 2014 -0600 ---------------------------------------------------------------------- streams-components/streams-http/pom.xml | 17 +++ .../persist/SimpleHTTPPostPersistWriter.java | 2 +- .../java/SimpleHTTPPostPersistWriterTest.java | 119 +++++++++++++++++++ 3 files changed, 137 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/17372cfc/streams-components/streams-http/pom.xml ---------------------------------------------------------------------- diff --git a/streams-components/streams-http/pom.xml b/streams-components/streams-http/pom.xml index 39a4faa..57b7686 100644 --- a/streams-components/streams-http/pom.xml +++ b/streams-components/streams-http/pom.xml @@ -78,6 +78,23 @@ <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-all</artifactId> + </dependency> + <dependency> + <groupId>org.powermock</groupId> + <artifactId>powermock-module-junit4</artifactId> + </dependency> + <dependency> + <groupId>org.powermock</groupId> + <artifactId>powermock-api-mockito</artifactId> + </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/17372cfc/streams-components/streams-http/src/main/java/org/apache/streams/components/http/persist/SimpleHTTPPostPersistWriter.java ---------------------------------------------------------------------- diff --git a/streams-components/streams-http/src/main/java/org/apache/streams/components/http/persist/SimpleHTTPPostPersistWriter.java b/streams-components/streams-http/src/main/java/org/apache/streams/components/http/persist/SimpleHTTPPostPersistWriter.java index 1ed6ebf..8dd4e4d 100644 --- a/streams-components/streams-http/src/main/java/org/apache/streams/components/http/persist/SimpleHTTPPostPersistWriter.java +++ b/streams-components/streams-http/src/main/java/org/apache/streams/components/http/persist/SimpleHTTPPostPersistWriter.java @@ -142,7 +142,7 @@ public class SimpleHTTPPostPersistWriter implements StreamsPersistWriter { response = httpclient.execute(httpPost); HttpEntity entity = response.getEntity(); // TODO: handle retry - if (response.getStatusLine().getStatusCode() >= 200 && entity != null) { + if (response.getStatusLine() != null && response.getStatusLine().getStatusCode() >= 200 && entity != null) { entityString = EntityUtils.toString(entity); result = mapper.readValue(entityString, ObjectNode.class); } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/17372cfc/streams-components/streams-http/src/test/java/SimpleHTTPPostPersistWriterTest.java ---------------------------------------------------------------------- diff --git a/streams-components/streams-http/src/test/java/SimpleHTTPPostPersistWriterTest.java b/streams-components/streams-http/src/test/java/SimpleHTTPPostPersistWriterTest.java new file mode 100644 index 0000000..1733b43 --- /dev/null +++ b/streams-components/streams-http/src/test/java/SimpleHTTPPostPersistWriterTest.java @@ -0,0 +1,119 @@ +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.streams.components.http.HttpPersistWriterConfiguration; +import org.apache.streams.components.http.persist.SimpleHTTPPostPersistWriter; +import org.apache.streams.core.StreamsDatum; +import org.apache.streams.jackson.StreamsJacksonMapper; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; + +import static org.mockito.Matchers.any; + +/** + * Created by steve on 11/22/14. + */ +@RunWith(PowerMockRunner.class) +@PrepareForTest({HttpClients.class, CloseableHttpResponse.class, CloseableHttpResponse.class}) +public class SimpleHTTPPostPersistWriterTest { + + private ObjectMapper mapper = StreamsJacksonMapper.getInstance(); + + /** + * test port. + */ + private static final int PORT = 18080; + + /** + * test hosts. + */ + private static final String HOSTNAME = "localhost"; + + /** + * test protocol. + */ + private static final String PROTOCOL = "http"; + + /** + * HttpClients mock. + */ + private HttpClients httpClients; + + /** + * CloseableHttpClient mock. + */ + private CloseableHttpClient client; + + /** + * CloseableHttpClient mock. + */ + private CloseableHttpResponse response = Mockito.mock(CloseableHttpResponse.class); + + /** + * Our output. + */ + private ByteArrayOutputStream output; + + /** + * Our input. + */ + private ByteArrayInputStream input; + + /** + * Instance under tests. + */ + private SimpleHTTPPostPersistWriter writer; + + @Before + public void setUp() throws Exception + { + this.httpClients = PowerMockito.mock(HttpClients.class); + this.client = PowerMockito.mock(CloseableHttpClient.class); + + PowerMockito.mockStatic(HttpClients.class); + + PowerMockito.when(HttpClients.createDefault()) + .thenReturn(client); + + PowerMockito.when(client.execute(any(HttpUriRequest.class))) + .thenReturn(response); + + Mockito.when(response.getEntity()).thenReturn(null); + Mockito.doNothing().when(response).close(); + + } + + @Test + public void testPersist() throws Exception + { + HttpPersistWriterConfiguration configuration = new HttpPersistWriterConfiguration(); + configuration.setProtocol(PROTOCOL); + configuration.setHostname(HOSTNAME); + configuration.setPort(new Long(PORT)); + configuration.setResourcePath("/"); + + this.writer = new SimpleHTTPPostPersistWriter(configuration); + + this.writer.prepare(null); + + StreamsDatum testDatum = new StreamsDatum(mapper.readValue("{\"message\":\"ping\"}", ObjectNode.class)); + + this.writer.write(testDatum); + + Mockito.verify(this.client).execute(any(HttpUriRequest.class)); + + Mockito.verify(this.response).close(); + + } +}
