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();
+
+    }
+}

Reply via email to