提交 9243a147 编写于 作者: J Juergen Hoeller

Test for correct handling of multiple header values

Issue: SPR-15166
上级 23aac2de
/*
* 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 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 {
......@@ -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() {
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册