Add removeOnly mode to ForwardedHeaderFilter

Issue: SPR-15610
This commit is contained in:
Rossen Stoyanchev
2017-06-01 15:39:19 -04:00
parent cf1bc81199
commit 895fa2ea7b
2 changed files with 115 additions and 50 deletions

View File

@@ -32,7 +32,10 @@ import org.springframework.mock.web.test.MockFilterChain;
import org.springframework.mock.web.test.MockHttpServletRequest;
import org.springframework.mock.web.test.MockHttpServletResponse;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
/**
* Unit tests for {@link ForwardedHeaderFilter}.
@@ -239,6 +242,30 @@ public class ForwardedHeaderFilterTests {
assertEquals("bar", actual.getHeader("foo"));
}
@Test
public void forwardedRequestInRemoveOnlyMode() throws Exception {
this.request.setRequestURI("/mvc-showcase");
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.addHeader("foo", "bar");
this.filter.setRemoveOnly(true);
this.filter.doFilter(this.request, new MockHttpServletResponse(), this.filterChain);
HttpServletRequest actual = (HttpServletRequest) this.filterChain.getRequest();
assertEquals("http://localhost/mvc-showcase", actual.getRequestURL().toString());
assertEquals("http", actual.getScheme());
assertEquals("localhost", actual.getServerName());
assertEquals(80, actual.getServerPort());
assertFalse(actual.isSecure());
assertNull(actual.getHeader(X_FORWARDED_PROTO));
assertNull(actual.getHeader(X_FORWARDED_HOST));
assertNull(actual.getHeader(X_FORWARDED_PORT));
assertEquals("bar", actual.getHeader("foo"));
}
@Test
public void requestUriWithForwardedPrefix() throws Exception {
this.request.addHeader(X_FORWARDED_PREFIX, "/prefix");