|
|
@ -34,6 +34,7 @@ import org.springframework.mock.web.MockHttpServletRequest;
|
|
|
|
import org.springframework.mock.web.MockHttpServletResponse;
|
|
|
|
import org.springframework.mock.web.MockHttpServletResponse;
|
|
|
|
|
|
|
|
|
|
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
|
|
|
|
|
|
import static org.junit.Assert.assertFalse;
|
|
|
|
import static org.junit.Assert.assertNotNull;
|
|
|
|
import static org.junit.Assert.assertNotNull;
|
|
|
|
import static org.junit.Assert.assertThat;
|
|
|
|
import static org.junit.Assert.assertThat;
|
|
|
|
import static org.junit.Assert.assertTrue;
|
|
|
|
import static org.junit.Assert.assertTrue;
|
|
|
@ -59,6 +60,7 @@ public class ErrorPageFilterTests {
|
|
|
|
assertThat(this.chain.getRequest(), equalTo((ServletRequest) this.request));
|
|
|
|
assertThat(this.chain.getRequest(), equalTo((ServletRequest) this.request));
|
|
|
|
assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse(),
|
|
|
|
assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse(),
|
|
|
|
equalTo((ServletResponse) this.response));
|
|
|
|
equalTo((ServletResponse) this.response));
|
|
|
|
|
|
|
|
assertTrue(this.response.isCommitted());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
@ -79,6 +81,7 @@ public class ErrorPageFilterTests {
|
|
|
|
equalTo((ServletResponse) this.response));
|
|
|
|
equalTo((ServletResponse) this.response));
|
|
|
|
assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus(),
|
|
|
|
assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus(),
|
|
|
|
equalTo(400));
|
|
|
|
equalTo(400));
|
|
|
|
|
|
|
|
assertTrue(this.response.isCommitted());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
@ -97,6 +100,7 @@ public class ErrorPageFilterTests {
|
|
|
|
equalTo((ServletResponse) this.response));
|
|
|
|
equalTo((ServletResponse) this.response));
|
|
|
|
assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus(),
|
|
|
|
assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus(),
|
|
|
|
equalTo(400));
|
|
|
|
equalTo(400));
|
|
|
|
|
|
|
|
assertTrue(this.response.isCommitted());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
@ -199,6 +203,62 @@ public class ErrorPageFilterTests {
|
|
|
|
equalTo((Object) "BAD"));
|
|
|
|
equalTo((Object) "BAD"));
|
|
|
|
assertThat(this.request.getAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE),
|
|
|
|
assertThat(this.request.getAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE),
|
|
|
|
equalTo((Object) IllegalStateException.class.getName()));
|
|
|
|
equalTo((Object) IllegalStateException.class.getName()));
|
|
|
|
|
|
|
|
assertTrue(this.response.isCommitted());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
|
|
|
public void responseIsNotCommitedWhenRequestIsAsync() throws Exception {
|
|
|
|
|
|
|
|
this.request.setAsyncStarted(true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.filter.doFilter(this.request, this.response, this.chain);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertThat(this.chain.getRequest(), equalTo((ServletRequest) this.request));
|
|
|
|
|
|
|
|
assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse(),
|
|
|
|
|
|
|
|
equalTo((ServletResponse) this.response));
|
|
|
|
|
|
|
|
assertFalse(this.response.isCommitted());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
|
|
|
public void responseIsCommitedWhenRequestIsAsyncAndExceptionIsThrown()
|
|
|
|
|
|
|
|
throws Exception {
|
|
|
|
|
|
|
|
this.filter.addErrorPages(new ErrorPage("/error"));
|
|
|
|
|
|
|
|
this.request.setAsyncStarted(true);
|
|
|
|
|
|
|
|
this.chain = new MockFilterChain() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void doFilter(ServletRequest request, ServletResponse response)
|
|
|
|
|
|
|
|
throws IOException, ServletException {
|
|
|
|
|
|
|
|
super.doFilter(request, response);
|
|
|
|
|
|
|
|
throw new RuntimeException("BAD");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.filter.doFilter(this.request, this.response, this.chain);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertThat(this.chain.getRequest(), equalTo((ServletRequest) this.request));
|
|
|
|
|
|
|
|
assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse(),
|
|
|
|
|
|
|
|
equalTo((ServletResponse) this.response));
|
|
|
|
|
|
|
|
assertTrue(this.response.isCommitted());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
|
|
|
public void responseIsCommitedWhenRequestIsAsyncAndStatusIs400Plus() throws Exception {
|
|
|
|
|
|
|
|
this.filter.addErrorPages(new ErrorPage("/error"));
|
|
|
|
|
|
|
|
this.request.setAsyncStarted(true);
|
|
|
|
|
|
|
|
this.chain = new MockFilterChain() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void doFilter(ServletRequest request, ServletResponse response)
|
|
|
|
|
|
|
|
throws IOException, ServletException {
|
|
|
|
|
|
|
|
super.doFilter(request, response);
|
|
|
|
|
|
|
|
((HttpServletResponse) response).sendError(400, "BAD");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.filter.doFilter(this.request, this.response, this.chain);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertThat(this.chain.getRequest(), equalTo((ServletRequest) this.request));
|
|
|
|
|
|
|
|
assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse(),
|
|
|
|
|
|
|
|
equalTo((ServletResponse) this.response));
|
|
|
|
|
|
|
|
assertTrue(this.response.isCommitted());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|