@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2012 the original author or authors .
* Copyright 2002 - 2017 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -26,7 +26,6 @@ import java.util.Arrays;
@@ -26,7 +26,6 @@ import java.util.Arrays;
import java.util.Collections ;
import java.util.List ;
import org.junit.Before ;
import org.junit.Test ;
import org.springframework.http.HttpHeaders ;
@ -37,25 +36,20 @@ import org.springframework.http.client.support.HttpRequestWrapper;
@@ -37,25 +36,20 @@ import org.springframework.http.client.support.HttpRequestWrapper;
import static org.junit.Assert.* ;
/** @author Arjen Poutsma */
/ * *
* @author Arjen Poutsma
* @author Juergen Hoeller
* /
public class InterceptingClientHttpRequestFactoryTests {
private InterceptingClientHttpRequestFactory requestFactory ;
private RequestFactoryMock requestFactoryMock ;
private RequestFactoryMock requestFactoryMock = new RequestFactoryMock ( ) ;
private RequestMock requestMock ;
private RequestMock requestMock = new RequestMock ( ) ;
private ResponseMock responseMock ;
private ResponseMock responseMock = new ResponseMock ( ) ;
@Before
public void setUp ( ) throws Exception {
requestFactoryMock = new RequestFactoryMock ( ) ;
requestMock = new RequestMock ( ) ;
responseMock = new ResponseMock ( ) ;
private InterceptingClientHttpRequestFactory requestFactory ;
}
@Test
public void basic ( ) throws Exception {
@ -78,6 +72,7 @@ public class InterceptingClientHttpRequestFactoryTests {
@@ -78,6 +72,7 @@ public class InterceptingClientHttpRequestFactoryTests {
@Test
public void noExecution ( ) throws Exception {
List < ClientHttpRequestInterceptor > interceptors = new ArrayList < ClientHttpRequestInterceptor > ( ) ;
interceptors . add ( new ClientHttpRequestInterceptor ( ) {
@Override
public ClientHttpResponse intercept ( HttpRequest request , byte [ ] body , ClientHttpRequestExecution execution )
@ -101,29 +96,29 @@ public class InterceptingClientHttpRequestFactoryTests {
@@ -101,29 +96,29 @@ public class InterceptingClientHttpRequestFactoryTests {
public void changeHeaders ( ) throws Exception {
final String headerName = "Foo" ;
final String headerValue = "Bar" ;
final String otherValue = "Baz" ;
ClientHttpRequestInterceptor interceptor = new ClientHttpRequestInterceptor ( ) {
@Override
public ClientHttpResponse intercept ( HttpRequest request , byte [ ] body , ClientHttpRequestExecution execution )
throws IOException {
return execution . execute ( new HttpRequestWrapper ( request ) {
@Override
public HttpHeaders getHeaders ( ) {
HttpHeaders headers = new HttpHeaders ( ) ;
headers . set ( headerName , headerValue ) ;
return headers ;
}
} , body ) ;
HttpRequestWrapper wrapper = new HttpRequestWrapper ( request ) ;
wrapper . getHeaders ( ) . add ( headerName , otherValue ) ;
return execution . execute ( wrapper , body ) ;
}
} ;
requestMock = new RequestMock ( ) {
@Override
public ClientHttpResponse execute ( ) throws IOException {
assertEquals ( headerValue , getHeaders ( ) . getFirst ( headerName ) ) ;
List < String > headerValues = getHeaders ( ) . get ( headerName ) ;
assertEquals ( 2 , headerValues . size ( ) ) ;
assertEquals ( headerValue , headerValues . get ( 0 ) ) ;
assertEquals ( otherValue , headerValues . get ( 1 ) ) ;
return super . execute ( ) ;
}
} ;
requestMock . getHeaders ( ) . add ( headerName , headerValue ) ;
requestFactory =
new InterceptingClientHttpRequestFactory ( requestFactoryMock , Collections . singletonList ( interceptor ) ) ;
@ -135,11 +130,11 @@ public class InterceptingClientHttpRequestFactoryTests {
@@ -135,11 +130,11 @@ public class InterceptingClientHttpRequestFactoryTests {
@Test
public void changeURI ( ) throws Exception {
final URI changedUri = new URI ( "http://example.com/2" ) ;
ClientHttpRequestInterceptor interceptor = new ClientHttpRequestInterceptor ( ) {
@Override
public ClientHttpResponse intercept ( HttpRequest request , byte [ ] body , ClientHttpRequestExecution execution )
throws IOException {
return execution . execute ( new HttpRequestWrapper ( request ) {
@Override
public URI getURI ( ) {
@ -168,11 +163,11 @@ public class InterceptingClientHttpRequestFactoryTests {
@@ -168,11 +163,11 @@ public class InterceptingClientHttpRequestFactoryTests {
@Test
public void changeMethod ( ) throws Exception {
final HttpMethod changedMethod = HttpMethod . POST ;
ClientHttpRequestInterceptor interceptor = new ClientHttpRequestInterceptor ( ) {
@Override
public ClientHttpResponse intercept ( HttpRequest request , byte [ ] body , ClientHttpRequestExecution execution )
throws IOException {
return execution . execute ( new HttpRequestWrapper ( request ) {
@Override
public HttpMethod getMethod ( ) {
@ -201,11 +196,11 @@ public class InterceptingClientHttpRequestFactoryTests {
@@ -201,11 +196,11 @@ public class InterceptingClientHttpRequestFactoryTests {
@Test
public void changeBody ( ) throws Exception {
final byte [ ] changedBody = "Foo" . getBytes ( ) ;
ClientHttpRequestInterceptor interceptor = new ClientHttpRequestInterceptor ( ) {
@Override
public ClientHttpResponse intercept ( HttpRequest request , byte [ ] body , ClientHttpRequestExecution execution )
throws IOException {
return execution . execute ( request , changedBody ) ;
}
} ;
@ -218,6 +213,7 @@ public class InterceptingClientHttpRequestFactoryTests {
@@ -218,6 +213,7 @@ public class InterceptingClientHttpRequestFactoryTests {
assertTrue ( Arrays . equals ( changedBody , requestMock . body . toByteArray ( ) ) ) ;
}
private static class NoOpInterceptor implements ClientHttpRequestInterceptor {
private boolean invoked = false ;
@ -230,6 +226,7 @@ public class InterceptingClientHttpRequestFactoryTests {
@@ -230,6 +226,7 @@ public class InterceptingClientHttpRequestFactoryTests {
}
}
private class RequestFactoryMock implements ClientHttpRequestFactory {
@Override
@ -241,6 +238,7 @@ public class InterceptingClientHttpRequestFactoryTests {
@@ -241,6 +238,7 @@ public class InterceptingClientHttpRequestFactoryTests {
}
private class RequestMock implements ClientHttpRequest {
private URI uri ;
@ -291,6 +289,7 @@ public class InterceptingClientHttpRequestFactoryTests {
@@ -291,6 +289,7 @@ public class InterceptingClientHttpRequestFactoryTests {
}
}
private static class ResponseMock implements ClientHttpResponse {
private HttpStatus statusCode = HttpStatus . OK ;
@ -328,4 +327,5 @@ public class InterceptingClientHttpRequestFactoryTests {
@@ -328,4 +327,5 @@ public class InterceptingClientHttpRequestFactoryTests {
public void close ( ) {
}
}
}