package io.selendroid.standalone.server.util; import io.netty.handler.codec.http.HttpMethod; import junit.framework.TestCase; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.json.JSONException; import org.json.JSONObject; import org.junit.Test; import org.mockito.Mockito; import java.io.InputStream; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class HttpClientUtilTest extends TestCase { private HttpClientUtil httpClientUtil = Mockito.spy(new HttpClientUtil()); public void testParseJsonResponse() throws Exception { InputStream inputStream = IOUtils.toInputStream("{ 'id' : 5, 'name' : 'kitkat' }"); JSONObject expectedResult = new JSONObject(); expectedResult.put("id", 5); expectedResult.put("name", "kitkat"); HttpEntity httpEntity = mock(HttpEntity.class); when(httpEntity.getContent()).thenReturn(inputStream); HttpResponse httpResponse = mock(HttpResponse.class); when(httpResponse.getEntity()).thenReturn(httpEntity); JSONObject result = httpClientUtil.parseJsonResponse(httpResponse); assertEquals(result.toString(), expectedResult.toString()); } public void testParseJsonResponseThrowsException() throws Exception { InputStream inputStream = IOUtils.toInputStream("{{{ 'id' :;; 5, 'name' ? 'kitkat' }"); HttpEntity httpEntity = mock(HttpEntity.class); when(httpEntity.getContent()).thenReturn(inputStream); HttpResponse httpResponse = mock(HttpResponse.class); when(httpResponse.getEntity()).thenReturn(httpEntity); Throwable e = null; try { JSONObject result = httpClientUtil.parseJsonResponse(httpResponse); } catch(Throwable ex) { e = ex; } assertTrue(e instanceof JSONException); } public void testExecuteThrowsException() throws Exception { HttpMethod httpMethod = new HttpMethod("DOESNOTEXIST"); String url = "http://localhost:50/wd/hub/sessions"; Throwable e = null; try { HttpResponse response = httpClientUtil.executeRequest(url, httpMethod); } catch(Exception ex) { e = ex; } assertTrue(e instanceof RuntimeException); assertEquals(e.getMessage(), "Provided HttpMethod not supported: DOESNOTEXIST"); } }