package com.flexmls.flexmls_api; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import java.io.IOException; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.junit.Before; import org.junit.Test; import com.flexmls.flexmls_api.Configuration; import com.flexmls.flexmls_api.ConnectionApacheHttp; import com.flexmls.flexmls_api.FlexmlsApiClientException; import com.flexmls.flexmls_api.JsonResponseHandler; import com.flexmls.flexmls_api.Response; public class ConnectionApacheHttpTest { ConnectionApacheHttp c; @Before public void setup(){ c = new ConnectionApacheHttp(new Configuration()); } @Test public void testProperties(){ PropertyAsserter.assertBasicGetterSetterBehavior(c); } @Test public void get() throws IOException, FlexmlsApiClientException{ Response rs = new Response(null); rs.setSuccess(true); mockupHttpClient(rs, HttpGet.class); Response rs2 = c.get("TESTGET"); assertEquals(rs2, rs); } @Test public void delete() throws IOException, FlexmlsApiClientException{ Response rs = new Response(null); rs.setSuccess(true); mockupHttpClient(rs, HttpDelete.class); Response rs2 = c.delete("TESTDELETE"); assertEquals(rs2, rs); } @Test public void post() throws IOException, FlexmlsApiClientException{ Response rs = new Response(null); rs.setSuccess(true); mockupHttpClient(rs, HttpPost.class); Response rs2 = c.post("TESTPOST", "data"); assertEquals(rs2, rs); } @Test public void put() throws IOException, FlexmlsApiClientException{ Response rs = new Response(null); rs.setSuccess(true); mockupHttpClient(rs, HttpPut.class); Response rs2 = c.put("TESTPUT", "data"); assertEquals(rs2, rs); } @Test public void failure() throws IOException, FlexmlsApiClientException{ FlexmlsApiClientException ex = new FlexmlsApiClientException("Something blew up"); Response rs = new Response(ex); rs.setSuccess(false); mockupHttpClient(rs, HttpPut.class); try { c.get("TEST"); fail("exception expected"); } catch (FlexmlsApiClientException e) { assertEquals(ex, e); } } @Test public void reset() throws IOException, FlexmlsApiClientException{ c.setClient(null); c.reset(); assertNotNull(c.getClient()); } private <T extends HttpRequest> void mockupHttpClient(Response rs, Class<T> klass) throws IOException { HttpClient hc = mock(HttpClient.class); HttpHost h = new HttpHost("MY.TEST.SERVER.FBSDATA.COM"); c.setClient(hc); c.setHost(h); when(hc.execute(eq(h), any(klass), any(JsonResponseHandler.class))).thenReturn(rs); } }