Browse Source

Polish RequestLoggingFilterTests

pull/23643/head
Sam Brannen 5 years ago
parent
commit
52128fe863
  1. 166
      spring-web/src/test/java/org/springframework/web/filter/RequestLoggingFilterTests.java

166
spring-web/src/test/java/org/springframework/web/filter/RequestLoggingFilterTests.java

@ -19,8 +19,6 @@ package org.springframework.web.filter; @@ -19,8 +19,6 @@ package org.springframework.web.filter;
import java.nio.charset.StandardCharsets;
import javax.servlet.FilterChain;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -36,200 +34,152 @@ import org.springframework.web.util.WebUtils; @@ -36,200 +34,152 @@ import org.springframework.web.util.WebUtils;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Test for {@link AbstractRequestLoggingFilter} and subclasses.
* Unit tests for {@link AbstractRequestLoggingFilter} and subclasses.
*
* @author Arjen Poutsma
* @author Juergen Hoeller
* @author Sam Brannen
*/
public class RequestLoggingFilterTests {
class RequestLoggingFilterTests {
private final MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
private final MockHttpServletResponse response = new MockHttpServletResponse();
private final FilterChain filterChain = (request, response) -> {};
private final MyRequestLoggingFilter filter = new MyRequestLoggingFilter();
@Test
public void defaultPrefix() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
@Test
void defaultPrefix() throws Exception {
applyFilter();
assertThat(filter.beforeRequestMessage).startsWith(AbstractRequestLoggingFilter.DEFAULT_BEFORE_MESSAGE_PREFIX);
assertThat(filter.afterRequestMessage).startsWith(AbstractRequestLoggingFilter.DEFAULT_AFTER_MESSAGE_PREFIX);
}
@Test
public void customPrefix() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
void customPrefix() throws Exception {
filter.setBeforeMessagePrefix("Before prefix: ");
filter.setAfterMessagePrefix("After prefix: ");
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
applyFilter();
assertThat(filter.beforeRequestMessage).startsWith("Before prefix: ");
assertThat(filter.afterRequestMessage).startsWith("After prefix: ");
}
@Test
public void defaultSuffix() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
void defaultSuffix() throws Exception {
applyFilter();
assertThat(filter.beforeRequestMessage).endsWith(AbstractRequestLoggingFilter.DEFAULT_BEFORE_MESSAGE_SUFFIX);
assertThat(filter.afterRequestMessage).endsWith(AbstractRequestLoggingFilter.DEFAULT_AFTER_MESSAGE_SUFFIX);
}
@Test
public void customSuffix() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
void customSuffix() throws Exception {
filter.setBeforeMessageSuffix("}");
filter.setAfterMessageSuffix(")");
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
applyFilter();
assertThat(filter.beforeRequestMessage).endsWith("}");
assertThat(filter.afterRequestMessage).endsWith(")");
}
@Test
public void method() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest("PATCH", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
void method() throws Exception {
filter.setBeforeMessagePrefix("");
filter.setAfterMessagePrefix("");
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
applyFilter();
assertThat(filter.beforeRequestMessage).startsWith("PATCH");
assertThat(filter.afterRequestMessage).startsWith("PATCH");
assertThat(filter.beforeRequestMessage).startsWith("POST");
assertThat(filter.afterRequestMessage).startsWith("POST");
}
@Test
public void uri() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
void uri() throws Exception {
request.setQueryString("booking=42");
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
applyFilter();
assertThat(filter.beforeRequestMessage).contains("/hotel");
assertThat(filter.beforeRequestMessage).doesNotContain("booking=42");
assertThat(filter.afterRequestMessage).contains("/hotel");
assertThat(filter.afterRequestMessage).doesNotContain("booking=42");
assertThat(filter.beforeRequestMessage).contains("/hotel").doesNotContain("booking=42");
assertThat(filter.afterRequestMessage).contains("/hotel").doesNotContain("booking=42");
}
@Test
public void queryStringIncluded() throws Exception {
filter.setIncludeQueryString(true);
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
void queryStringIncluded() throws Exception {
request.setQueryString("booking=42");
filter.setIncludeQueryString(true);
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
applyFilter();
assertThat(filter.beforeRequestMessage).contains("/hotels?booking=42");
assertThat(filter.afterRequestMessage).contains("/hotels?booking=42");
}
@Test
public void noQueryStringAvailable() throws Exception {
void noQueryStringAvailable() throws Exception {
filter.setIncludeQueryString(true);
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
applyFilter();
assertThat(filter.beforeRequestMessage).contains("/hotels]");
assertThat(filter.afterRequestMessage).contains("/hotels]");
}
@Test
public void client() throws Exception {
filter.setIncludeClientInfo(true);
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
void client() throws Exception {
request.setRemoteAddr("4.2.2.2");
MockHttpServletResponse response = new MockHttpServletResponse();
filter.setIncludeClientInfo(true);
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
applyFilter();
assertThat(filter.beforeRequestMessage).contains("client=4.2.2.2");
assertThat(filter.afterRequestMessage).contains("client=4.2.2.2");
}
@Test
public void session() throws Exception {
void session() throws Exception {
request.setSession(new MockHttpSession(null, "42"));
filter.setIncludeClientInfo(true);
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpSession session = new MockHttpSession(null, "42");
request.setSession(session);
MockHttpServletResponse response = new MockHttpServletResponse();
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
applyFilter();
assertThat(filter.beforeRequestMessage).contains("session=42");
assertThat(filter.afterRequestMessage).contains("session=42");
}
@Test
public void user() throws Exception {
filter.setIncludeClientInfo(true);
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
void user() throws Exception {
request.setRemoteUser("Arthur");
MockHttpServletResponse response = new MockHttpServletResponse();
filter.setIncludeClientInfo(true);
FilterChain filterChain = new NoOpFilterChain();
filter.doFilter(request, response, filterChain);
applyFilter();
assertThat(filter.beforeRequestMessage).contains("user=Arthur");
assertThat(filter.afterRequestMessage).contains("user=Arthur");
}
@Test
public void headers() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
void headers() throws Exception {
request.setContentType("application/json");
request.addHeader("token", "123");
MockHttpServletResponse response = new MockHttpServletResponse();
FilterChain filterChain = new NoOpFilterChain();
filter.setIncludeHeaders(true);
filter.setHeaderPredicate(name -> !name.equalsIgnoreCase("token"));
filter.doFilter(request, response, filterChain);
assertThat(filter.beforeRequestMessage).isEqualTo("Before request [POST /hotels, headers=[Content-Type:\"application/json\", token:\"masked\"]]");
assertThat(filter.afterRequestMessage).isEqualTo("After request [POST /hotels, headers=[Content-Type:\"application/json\", token:\"masked\"]]");
applyFilter();
assertThat(filter.beforeRequestMessage)
.isEqualTo("Before request [POST /hotels, headers=[Content-Type:\"application/json\", token:\"masked\"]]");
assertThat(filter.afterRequestMessage)
.isEqualTo("After request [POST /hotels, headers=[Content-Type:\"application/json\", token:\"masked\"]]");
}
@Test
public void payloadInputStream() throws Exception {
void payloadInputStream() throws Exception {
filter.setIncludePayload(true);
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
byte[] requestBody = "Hello World".getBytes(StandardCharsets.UTF_8);
request.setContent(requestBody);
@ -245,12 +195,9 @@ public class RequestLoggingFilterTests { @@ -245,12 +195,9 @@ public class RequestLoggingFilterTests {
}
@Test
public void payloadReader() throws Exception {
void payloadReader() throws Exception {
filter.setIncludePayload(true);
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
String requestBody = "Hello World";
request.setContent(requestBody.getBytes(StandardCharsets.UTF_8));
@ -266,13 +213,10 @@ public class RequestLoggingFilterTests { @@ -266,13 +213,10 @@ public class RequestLoggingFilterTests {
}
@Test
public void payloadMaxLength() throws Exception {
void payloadMaxLength() throws Exception {
filter.setIncludePayload(true);
filter.setMaxPayloadLength(3);
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
MockHttpServletResponse response = new MockHttpServletResponse();
byte[] requestBody = "Hello World".getBytes(StandardCharsets.UTF_8);
request.setContent(requestBody);
@ -292,13 +236,12 @@ public class RequestLoggingFilterTests { @@ -292,13 +236,12 @@ public class RequestLoggingFilterTests {
}
@Test
public void allOptions() throws Exception {
void allOptions() throws Exception {
filter.setIncludeQueryString(true);
filter.setIncludeClientInfo(true);
filter.setIncludeHeaders(true);
filter.setIncludePayload(true);
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/hotels");
request.setQueryString("booking=42");
request.setRemoteAddr("4.2.2.2");
request.setSession(new MockHttpSession(null, "42"));
@ -306,7 +249,6 @@ public class RequestLoggingFilterTests { @@ -306,7 +249,6 @@ public class RequestLoggingFilterTests {
request.setContentType("application/json");
String requestBody = "{\"msg\": \"Hello World\"}";
request.setContent(requestBody.getBytes(StandardCharsets.UTF_8));
MockHttpServletResponse response = new MockHttpServletResponse();
FilterChain filterChain = (filterRequest, filterResponse) -> {
((HttpServletResponse) filterResponse).setStatus(HttpServletResponse.SC_OK);
@ -336,6 +278,10 @@ public class RequestLoggingFilterTests { @@ -336,6 +278,10 @@ public class RequestLoggingFilterTests {
+ "]");
}
private void applyFilter() throws Exception {
filter.doFilter(request, response, filterChain);
}
private static class MyRequestLoggingFilter extends AbstractRequestLoggingFilter {
@ -354,12 +300,4 @@ public class RequestLoggingFilterTests { @@ -354,12 +300,4 @@ public class RequestLoggingFilterTests {
}
}
private static class NoOpFilterChain implements FilterChain {
@Override
public void doFilter(ServletRequest request, ServletResponse response) {
}
}
}

Loading…
Cancel
Save