package com.mapzen.pelias; import org.junit.Test; import java.io.IOException; import java.util.HashMap; import java.util.Map; import okhttp3.Connection; import okhttp3.Interceptor; import okhttp3.Protocol; import okhttp3.Request; import okhttp3.Response; import static org.fest.assertions.api.Assertions.assertThat; public class RequestInterceptorTest { private RequestInterceptor requestInterceptor = new RequestInterceptor(); @Test public void shouldNotBeNull() throws Exception { assertThat(requestInterceptor).isNotNull(); } @Test public void intercept_shouldReturnResponseFromChain() throws Exception { assertThat(requestInterceptor.intercept(new TestChain())).isInstanceOf(Response.class); } @Test public void intercept_shouldAppendHeadersToRequest() throws Exception { requestInterceptor.setRequestHandler(new TestRequestHandler()); Response response = requestInterceptor.intercept(new TestChain()); assertThat(response.request().header("header_key")).isEqualTo("header_value"); } @Test public void intercept_shouldAppendQueryParamsToRequest() throws Exception { requestInterceptor.setRequestHandler(new TestRequestHandler()); Response response = requestInterceptor.intercept(new TestChain()); assertThat(response.request().url().toString()).contains("param_key=param_value"); } private class TestChain implements Interceptor.Chain { @Override public Request request() { return new Request.Builder().url("http://example.com/").build(); } @Override public Response proceed(Request request) throws IOException { return new Response.Builder().request(request).protocol(Protocol.HTTP_1_1).code(200).build(); } @Override public Connection connection() { return null; } } private class TestRequestHandler implements PeliasRequestHandler { @Override public Map<String, String> headersForRequest() { HashMap<String, String> headers = new HashMap<>(); headers.put("header_key", "header_value"); return headers; } @Override public Map<String, String> queryParamsForRequest() { HashMap<String, String> params = new HashMap<>(); params.put("param_key", "param_value"); return params; } } }