提交 5c463a16 编写于 作者: R Rossen Stoyanchev

Move X-Forwarded-* tests to UriComponentsBuilderTests

上级 0280a2a9
......@@ -32,6 +32,7 @@ import java.util.Map;
import org.junit.Test;
import org.springframework.http.HttpRequest;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.mock.web.test.MockHttpServletRequest;
import org.springframework.util.LinkedMultiValueMap;
......@@ -237,8 +238,6 @@ public class UriComponentsBuilderTests {
assertEquals("bar@baz", result.getQueryParams().getFirst("foo"));
}
// Also see X-Forwarded-* related tests in ServletUriComponentsBuilderTests
@Test
public void fromHttpRequest() throws URISyntaxException {
MockHttpServletRequest request = new MockHttpServletRequest();
......@@ -269,13 +268,140 @@ public class UriComponentsBuilderTests {
request.setServerPort(80);
request.setRequestURI("/rest/mobile/users/1");
UriComponents result = UriComponentsBuilder.fromHttpRequest(new ServletServerHttpRequest(request)).build();
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("https", result.getScheme());
assertEquals("84.198.58.199", result.getHost());
assertEquals(-1, result.getPort());
assertEquals("/rest/mobile/users/1", result.getPath());
}
@Test
public void fromHttpRequestWithForwardedHost() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("localhost");
request.setServerPort(-1);
request.setRequestURI("/mvc-showcase");
request.addHeader("X-Forwarded-Host", "anotherHost");
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("http://anotherHost/mvc-showcase", result.toString());
}
// SPR-10701
@Test
public void fromHttpRequestWithForwardedHostIncludingPort() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("localhost");
request.setServerPort(-1);
request.setRequestURI("/mvc-showcase");
request.addHeader("X-Forwarded-Host", "webtest.foo.bar.com:443");
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("webtest.foo.bar.com", result.getHost());
assertEquals(443, result.getPort());
}
// SPR-11140
@Test
public void fromHttpRequestWithForwardedHostMultiValuedHeader() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("localhost");
request.setServerPort(-1);
request.addHeader("X-Forwarded-Host", "a.example.org, b.example.org, c.example.org");
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("a.example.org", result.getHost());
assertEquals(-1, result.getPort());
}
// SPR-11855
@Test
public void fromHttpRequestWithForwardedHostAndPort() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("localhost");
request.setServerPort(8080);
request.addHeader("X-Forwarded-Host", "foobarhost");
request.addHeader("X-Forwarded-Port", "9090");
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("foobarhost", result.getHost());
assertEquals(9090, result.getPort());
}
// SPR-11872
@Test
public void fromHttpRequestWithForwardedHostWithDefaultPort() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("localhost");
request.setServerPort(10080);
request.addHeader("X-Forwarded-Host", "example.org");
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("example.org", result.getHost());
assertEquals(-1, result.getPort());
}
@Test
public void fromHttpRequestWithForwardedHostWithForwardedScheme() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("localhost");
request.setServerPort(10080);
request.addHeader("X-Forwarded-Host", "example.org");
request.addHeader("X-Forwarded-Proto", "https");
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("example.org", result.getHost());
assertEquals("https", result.getScheme());
assertEquals(-1, result.getPort());
}
// SPR-12771
@Test
public void fromHttpRequestWithForwardedProtoAndDefaultPort() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("localhost");
request.setServerPort(80);
request.setRequestURI("/mvc-showcase");
request.addHeader("X-Forwarded-Proto", "https");
request.addHeader("X-Forwarded-Host", "84.198.58.199");
request.addHeader("X-Forwarded-Port", "443");
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("https://84.198.58.199/mvc-showcase", result.toString());
}
@Test
public void path() throws URISyntaxException {
UriComponentsBuilder builder = UriComponentsBuilder.fromPath("/foo/bar");
......
......@@ -21,10 +21,14 @@ import static org.junit.Assert.assertNull;
import org.junit.Before;
import org.junit.Test;
import org.springframework.http.HttpRequest;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.mock.web.test.MockHttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
/**
* Unit tests for
......@@ -78,92 +82,31 @@ public class ServletUriComponentsBuilderTests {
assertEquals("https://localhost:9043/mvc-showcase", result);
}
@Test
public void fromRequestUri() {
this.request.setRequestURI("/mvc-showcase/data/param");
this.request.setQueryString("foo=123");
String result = ServletUriComponentsBuilder.fromRequestUri(this.request).build().toUriString();
assertEquals("http://localhost/mvc-showcase/data/param", result);
}
@Test
public void fromRequestWithForwardedHost() {
this.request.addHeader("X-Forwarded-Host", "anotherHost");
this.request.setRequestURI("/mvc-showcase/data/param");
this.request.setQueryString("foo=123");
String result = ServletUriComponentsBuilder.fromRequest(this.request).build().toUriString();
assertEquals("http://anotherHost/mvc-showcase/data/param?foo=123", result);
}
// SPR-10701
@Test
public void fromRequestWithForwardedHostIncludingPort() {
this.request.addHeader("X-Forwarded-Host", "webtest.foo.bar.com:443");
this.request.setRequestURI("/mvc-showcase/data/param");
this.request.setQueryString("foo=123");
UriComponents result = ServletUriComponentsBuilder.fromRequest(this.request).build();
assertEquals("webtest.foo.bar.com", result.getHost());
assertEquals(443, result.getPort());
}
// SPR-11140
@Test
public void fromRequestWithForwardedHostMultiValuedHeader() {
this.request.addHeader("X-Forwarded-Host", "a.example.org, b.example.org, c.example.org");
assertEquals("a.example.org", ServletUriComponentsBuilder.fromRequest(this.request).build().getHost());
}
// SPR-11855
// Most X-Forwarded-* tests in UriComponentsBuilderTests
@Test
public void fromRequestWithForwardedHostAndPort() {
this.request.addHeader("X-Forwarded-Host", "foobarhost");
this.request.addHeader("X-Forwarded-Port", "9090");
this.request.setServerPort(8080);
UriComponents uriComponents = ServletUriComponentsBuilder.fromRequest(this.request).build();
assertEquals("foobarhost", uriComponents.getHost());
assertEquals(9090, uriComponents.getPort());
}
// SPR-11872
@Test
public void fromRequestWithForwardedHostWithDefaultPort() {
this.request.setServerPort(10080);
this.request.addHeader("X-Forwarded-Host", "example.org");
UriComponents result = ServletUriComponentsBuilder.fromRequest(this.request).build();
assertEquals("example.org", result.getHost());
assertEquals("should have used the default port of the forwarded request", -1, result.getPort());
}
@Test
public void fromRequestWithForwardedHostWithForwardedScheme() {
this.request.setServerPort(10080);
this.request.addHeader("X-Forwarded-Proto", "https");
this.request.addHeader("X-Forwarded-Host", "example.org");
UriComponents result = ServletUriComponentsBuilder.fromRequest(this.request).build();
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("localhost");
request.setServerPort(80);
request.setRequestURI("/mvc-showcase");
request.addHeader("X-Forwarded-Proto", "https");
request.addHeader("X-Forwarded-Host", "84.198.58.199");
request.addHeader("X-Forwarded-Port", "443");
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("example.org", result.getHost());
assertEquals("should have derived scheme from header", "https", result.getScheme());
assertEquals("should have used the default port of the forwarded request", -1, result.getPort());
assertEquals("https://84.198.58.199/mvc-showcase", result.toString());
}
// SPR-12771
@Test
public void fromRequestWithForwardedProtoAndDefaultPort() {
this.request.addHeader("X-Forwarded-Proto", "https");
this.request.addHeader("X-Forwarded-Host", "84.198.58.199");
this.request.addHeader("X-Forwarded-Port", "443");
this.request.setServerPort(80);
UriComponents result = ServletUriComponentsBuilder.fromRequest(this.request).build();
assertEquals("https://84.198.58.199/mvc-showcase", result.toString());
public void fromRequestUri() {
this.request.setRequestURI("/mvc-showcase/data/param");
this.request.setQueryString("foo=123");
String result = ServletUriComponentsBuilder.fromRequestUri(this.request).build().toUriString();
assertEquals("http://localhost/mvc-showcase/data/param", result);
}
@Test
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册