Test for correct handling of multiple header values
Issue: SPR-15166
This commit is contained in:
parent
23aac2de8c
commit
9243a14794
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2016 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;
|
|||
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;
|
|||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/** @author Arjen Poutsma */
|
||||
/**
|
||||
* @author Arjen Poutsma
|
||||
* @author Juergen Hoeller
|
||||
*/
|
||||
public class InterceptingClientHttpRequestFactoryTests {
|
||||
|
||||
private RequestFactoryMock requestFactoryMock = new RequestFactoryMock();
|
||||
|
||||
private RequestMock requestMock = new RequestMock();
|
||||
|
||||
private ResponseMock responseMock = new ResponseMock();
|
||||
|
||||
private InterceptingClientHttpRequestFactory requestFactory;
|
||||
|
||||
private RequestFactoryMock requestFactoryMock;
|
||||
|
||||
private RequestMock requestMock;
|
||||
|
||||
private ResponseMock responseMock;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
|
||||
requestFactoryMock = new RequestFactoryMock();
|
||||
requestMock = new RequestMock();
|
||||
responseMock = new ResponseMock();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void basic() throws Exception {
|
||||
|
|
@ -101,29 +95,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 +129,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 +162,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 +195,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 +212,7 @@ public class InterceptingClientHttpRequestFactoryTests {
|
|||
assertTrue(Arrays.equals(changedBody, requestMock.body.toByteArray()));
|
||||
}
|
||||
|
||||
|
||||
private static class NoOpInterceptor implements ClientHttpRequestInterceptor {
|
||||
|
||||
private boolean invoked = false;
|
||||
|
|
@ -230,6 +225,7 @@ public class InterceptingClientHttpRequestFactoryTests {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private class RequestFactoryMock implements ClientHttpRequestFactory {
|
||||
|
||||
@Override
|
||||
|
|
@ -241,6 +237,7 @@ public class InterceptingClientHttpRequestFactoryTests {
|
|||
|
||||
}
|
||||
|
||||
|
||||
private class RequestMock implements ClientHttpRequest {
|
||||
|
||||
private URI uri;
|
||||
|
|
@ -291,6 +288,7 @@ public class InterceptingClientHttpRequestFactoryTests {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private static class ResponseMock implements ClientHttpResponse {
|
||||
|
||||
private HttpStatus statusCode = HttpStatus.OK;
|
||||
|
|
@ -328,4 +326,5 @@ public class InterceptingClientHttpRequestFactoryTests {
|
|||
public void close() {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue