package org.springframework.http.client;
import com.prateekj.snooper.networksnooper.model.HttpCall;
import org.junit.Test;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.util.Arrays;
import static com.prateekj.snooper.networksnooper.model.HttpHeader.CONTENT_TYPE;
import static java.net.URI.create;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.springframework.http.HttpMethod.POST;
import static org.springframework.http.HttpStatus.OK;
public class SpringHttpRequestTransformerTest {
@Test
public void shouldTransformHttpCallFromSpringHttpRequest() throws Exception {
String url = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0";
URI uri = create(url);
String responseBody = "responseBody";
String requestBody = "requestBody";
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.put("Content-Type", Arrays.asList("application/json"));
ClientHttpResponse httpResponse = mock(ClientHttpResponse.class);
when(httpResponse.getBody()).thenReturn(new ByteArrayInputStream(toBytes(responseBody)));
when(httpResponse.getStatusCode()).thenReturn(OK);
when(httpResponse.getRawStatusCode()).thenReturn(200);
when(httpResponse.getHeaders()).thenReturn(httpHeaders);
HttpRequest httpRequest = mock(HttpRequest.class);
when(httpRequest.getMethod()).thenReturn(POST);
when(httpRequest.getURI()).thenReturn(uri);
when(httpRequest.getHeaders()).thenReturn(httpHeaders);
SpringHttpRequestTransformer transformer = new SpringHttpRequestTransformer();
HttpCall httpCall = transformer.transform(httpRequest, toBytes(requestBody), httpResponse);
assertThat(httpCall.getMethod(), is("POST"));
assertThat(httpCall.getPayload(), is(requestBody));
assertThat(httpCall.getUrl(), is(url));
assertThat(httpCall.getResponseBody(), is(responseBody));
assertThat(httpCall.getStatusText(), is("OK"));
assertThat(httpCall.getStatusCode(), is(200));
assertThat(httpCall.getRequestHeaders().size(), is(1));
assertThat(httpCall.getResponseHeaders().size(), is(1));
assertNotNull(httpCall.getResponseHeader(CONTENT_TYPE));
assertNotNull(httpCall.getRequestHeader(CONTENT_TYPE));
}
public byte[] toBytes(String string) {
try {
return string.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return new byte[0];
}
}