package com.rapidftr.net;
import static junit.framework.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import com.sun.me.web.request.Request;
import com.sun.me.web.request.RequestListener;
import com.sun.me.web.request.Response;
public class RequestExecutorTest {
private HttpGateway httpGateway;
private RequestExecutor requestExecutor;
@Before
public void setup() {
httpGateway = mock(HttpGateway.class);
requestExecutor = new RequestExecutor(httpGateway);
}
@Test
public void shouldPerformRequestViaGateway() throws IOException {
Request request = Request.createGetRequest("http://www.google.com/");
Response response = new Response();
when(httpGateway.perform(request)).thenReturn(response);
requestExecutor.execute(request);
verify(httpGateway).perform(request);
}
@Test
public void shouldInvokeListenerWithResponseAndContext() throws Exception {
RequestListener listener = mock(RequestListener.class);
Response response = new Response();
response.setResponseCode(200);
String context = "context";
Request request = Request.createGetRequest("http://www.google.com/someurl;deviceside=true;ConnectionTimeout=10000", null, null, listener, context);
when(httpGateway.perform(request)).thenReturn(response);
requestExecutor.execute(request);
verify(listener).done(context, response);
}
@Test
public void shouldSetExceptionOnResponseOnError() throws IOException {
TstRequestListener listener = new TstRequestListener();
RuntimeException someException = new RuntimeException("exception thrown for testing");
Request request = Request.createGetRequest("http://www.google.com/someurl;deviceside=true;ConnectionTimeout=10000", null, null, listener, null);
when(httpGateway.perform(request)).thenThrow(someException);
requestExecutor.execute(request);
Response response = listener.getResponse();
assertEquals(someException, response.getException());
}
}