Search in sources :

Example 1 with ErrorPage

use of org.springframework.boot.web.server.ErrorPage in project spring-boot by spring-projects.

the class ErrorPageFilterTests method errorMessageForRequestWithPathInfo.

@Test
public void errorMessageForRequestWithPathInfo() throws IOException, ServletException {
    this.request.setServletPath("/test");
    this.request.setPathInfo("/alpha");
    this.filter.addErrorPages(new ErrorPage("/error"));
    this.chain = new MockFilterChain() {

        @Override
        public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException {
            super.doFilter(request, response);
            throw new RuntimeException();
        }
    };
    this.filter.doFilter(this.request, this.response, this.chain);
    assertThat(this.output.toString()).contains("request [/test/alpha]");
}
Also used : ServletException(javax.servlet.ServletException) NestedServletException(org.springframework.web.util.NestedServletException) ServletRequest(javax.servlet.ServletRequest) MockHttpServletRequest(org.springframework.mock.web.MockHttpServletRequest) MockHttpServletResponse(org.springframework.mock.web.MockHttpServletResponse) HttpServletResponse(javax.servlet.http.HttpServletResponse) ServletResponse(javax.servlet.ServletResponse) ErrorPage(org.springframework.boot.web.server.ErrorPage) IOException(java.io.IOException) MockFilterChain(org.springframework.mock.web.MockFilterChain) Test(org.junit.Test)

Example 2 with ErrorPage

use of org.springframework.boot.web.server.ErrorPage in project spring-boot by spring-projects.

the class AbstractServletWebServerFactoryTests method errorPage.

@Test
void errorPage() throws Exception {
    AbstractServletWebServerFactory factory = getFactory();
    factory.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/hello"));
    this.webServer = factory.getWebServer(exampleServletRegistration(), errorServletRegistration());
    this.webServer.start();
    assertThat(getResponse(getLocalUrl("/hello"))).isEqualTo("Hello World");
    assertThat(getResponse(getLocalUrl("/bang"))).isEqualTo("Hello World");
}
Also used : ErrorPage(org.springframework.boot.web.server.ErrorPage) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) Test(org.junit.jupiter.api.Test)

Example 3 with ErrorPage

use of org.springframework.boot.web.server.ErrorPage in project spring-boot by spring-projects.

the class UndertowServletWebServerFactoryTests method errorPage404.

@Test
void errorPage404() throws Exception {
    AbstractServletWebServerFactory factory = getFactory();
    factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/hello"));
    this.webServer = factory.getWebServer(new ServletRegistrationBean<>(new ExampleServlet(), "/hello"));
    this.webServer.start();
    assertThat(getResponse(getLocalUrl("/hello"))).isEqualTo("Hello World");
    assertThat(getResponse(getLocalUrl("/not-found"))).isEqualTo("Hello World");
}
Also used : ErrorPage(org.springframework.boot.web.server.ErrorPage) AbstractServletWebServerFactory(org.springframework.boot.web.servlet.server.AbstractServletWebServerFactory) ServletRegistrationBean(org.springframework.boot.web.servlet.ServletRegistrationBean) ExampleServlet(org.springframework.boot.testsupport.web.servlet.ExampleServlet) Test(org.junit.jupiter.api.Test)

Example 4 with ErrorPage

use of org.springframework.boot.web.server.ErrorPage in project spring-boot by spring-projects.

the class ErrorPageFilterTests method nestedServletExceptionWithNoCause.

@Test
void nestedServletExceptionWithNoCause() throws Exception {
    this.filter.addErrorPages(new ErrorPage(MissingServletRequestParameterException.class, "/500"));
    this.chain = new TestFilterChain((request, response, chain) -> {
        chain.call();
        throw new MissingServletRequestParameterException("test", "string");
    });
    this.filter.doFilter(this.request, this.response, this.chain);
    assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus()).isEqualTo(500);
    assertThat(this.request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE)).isEqualTo(500);
    assertThat(this.request.getAttribute(RequestDispatcher.ERROR_MESSAGE)).isEqualTo("Required request parameter 'test' for method parameter type string is not present");
    Map<String, Object> requestAttributes = getAttributesForDispatch("/500");
    assertThat(requestAttributes.get(RequestDispatcher.ERROR_EXCEPTION_TYPE)).isEqualTo(MissingServletRequestParameterException.class);
    assertThat(requestAttributes.get(RequestDispatcher.ERROR_EXCEPTION)).isInstanceOf(MissingServletRequestParameterException.class);
    assertThat(this.request.getAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE)).isNull();
    assertThat(this.request.getAttribute(RequestDispatcher.ERROR_EXCEPTION)).isNull();
    assertThat(this.request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI)).isEqualTo("/test/path");
    assertThat(this.response.isCommitted()).isTrue();
    assertThat(this.response.getForwardedUrl()).isEqualTo("/500");
}
Also used : RequestDispatcher(jakarta.servlet.RequestDispatcher) HttpServletRequest(jakarta.servlet.http.HttpServletRequest) MockFilterChain(org.springframework.mock.web.MockFilterChain) Enumeration(java.util.Enumeration) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) DeferredResult(org.springframework.web.context.request.async.DeferredResult) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) ClientAbortException(org.apache.catalina.connector.ClientAbortException) ServletException(jakarta.servlet.ServletException) WebAsyncManager(org.springframework.web.context.request.async.WebAsyncManager) MockHttpServletResponse(org.springframework.mock.web.MockHttpServletResponse) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) OutputCaptureExtension(org.springframework.boot.testsupport.system.OutputCaptureExtension) BDDMockito.given(org.mockito.BDDMockito.given) NestedServletException(org.springframework.web.util.NestedServletException) Map(java.util.Map) StandardServletAsyncWebRequest(org.springframework.web.context.request.async.StandardServletAsyncWebRequest) ServletRequest(jakarta.servlet.ServletRequest) MissingServletRequestParameterException(org.springframework.web.bind.MissingServletRequestParameterException) WebAsyncUtils(org.springframework.web.context.request.async.WebAsyncUtils) ErrorPage(org.springframework.boot.web.server.ErrorPage) MockRequestDispatcher(org.springframework.mock.web.MockRequestDispatcher) BDDMockito.then(org.mockito.BDDMockito.then) IOException(java.io.IOException) MockHttpServletRequest(org.springframework.mock.web.MockHttpServletRequest) Test(org.junit.jupiter.api.Test) HttpServletResponseWrapper(jakarta.servlet.http.HttpServletResponseWrapper) HttpStatus(org.springframework.http.HttpStatus) Mockito.never(org.mockito.Mockito.never) ServletResponse(jakarta.servlet.ServletResponse) HttpServletResponse(jakarta.servlet.http.HttpServletResponse) MockFilterConfig(org.springframework.mock.web.MockFilterConfig) CapturedOutput(org.springframework.boot.testsupport.system.CapturedOutput) Mockito.mock(org.mockito.Mockito.mock) ErrorPage(org.springframework.boot.web.server.ErrorPage) HttpServletResponseWrapper(jakarta.servlet.http.HttpServletResponseWrapper) MissingServletRequestParameterException(org.springframework.web.bind.MissingServletRequestParameterException) Test(org.junit.jupiter.api.Test)

Example 5 with ErrorPage

use of org.springframework.boot.web.server.ErrorPage in project spring-boot by spring-projects.

the class ErrorPageFilterTests method statusError.

@Test
void statusError() throws Exception {
    this.filter.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
    this.chain = new TestFilterChain((request, response, chain) -> response.sendError(400, "BAD"));
    this.filter.doFilter(this.request, this.response, this.chain);
    assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus()).isEqualTo(400);
    assertThat(this.request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE)).isEqualTo(400);
    assertThat(this.request.getAttribute(RequestDispatcher.ERROR_MESSAGE)).isEqualTo("BAD");
    assertThat(this.request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI)).isEqualTo("/test/path");
    assertThat(this.response.isCommitted()).isTrue();
    assertThat(this.response.getForwardedUrl()).isEqualTo("/400");
}
Also used : RequestDispatcher(jakarta.servlet.RequestDispatcher) HttpServletRequest(jakarta.servlet.http.HttpServletRequest) MockFilterChain(org.springframework.mock.web.MockFilterChain) Enumeration(java.util.Enumeration) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) DeferredResult(org.springframework.web.context.request.async.DeferredResult) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) ClientAbortException(org.apache.catalina.connector.ClientAbortException) ServletException(jakarta.servlet.ServletException) WebAsyncManager(org.springframework.web.context.request.async.WebAsyncManager) MockHttpServletResponse(org.springframework.mock.web.MockHttpServletResponse) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) OutputCaptureExtension(org.springframework.boot.testsupport.system.OutputCaptureExtension) BDDMockito.given(org.mockito.BDDMockito.given) NestedServletException(org.springframework.web.util.NestedServletException) Map(java.util.Map) StandardServletAsyncWebRequest(org.springframework.web.context.request.async.StandardServletAsyncWebRequest) ServletRequest(jakarta.servlet.ServletRequest) MissingServletRequestParameterException(org.springframework.web.bind.MissingServletRequestParameterException) WebAsyncUtils(org.springframework.web.context.request.async.WebAsyncUtils) ErrorPage(org.springframework.boot.web.server.ErrorPage) MockRequestDispatcher(org.springframework.mock.web.MockRequestDispatcher) BDDMockito.then(org.mockito.BDDMockito.then) IOException(java.io.IOException) MockHttpServletRequest(org.springframework.mock.web.MockHttpServletRequest) Test(org.junit.jupiter.api.Test) HttpServletResponseWrapper(jakarta.servlet.http.HttpServletResponseWrapper) HttpStatus(org.springframework.http.HttpStatus) Mockito.never(org.mockito.Mockito.never) ServletResponse(jakarta.servlet.ServletResponse) HttpServletResponse(jakarta.servlet.http.HttpServletResponse) MockFilterConfig(org.springframework.mock.web.MockFilterConfig) CapturedOutput(org.springframework.boot.testsupport.system.CapturedOutput) Mockito.mock(org.mockito.Mockito.mock) ErrorPage(org.springframework.boot.web.server.ErrorPage) HttpServletResponseWrapper(jakarta.servlet.http.HttpServletResponseWrapper) Test(org.junit.jupiter.api.Test)

Aggregations

ErrorPage (org.springframework.boot.web.server.ErrorPage)24 Test (org.junit.jupiter.api.Test)20 IOException (java.io.IOException)19 MockFilterChain (org.springframework.mock.web.MockFilterChain)19 MockHttpServletRequest (org.springframework.mock.web.MockHttpServletRequest)19 MockHttpServletResponse (org.springframework.mock.web.MockHttpServletResponse)19 NestedServletException (org.springframework.web.util.NestedServletException)19 RequestDispatcher (jakarta.servlet.RequestDispatcher)17 ServletException (jakarta.servlet.ServletException)17 ServletRequest (jakarta.servlet.ServletRequest)17 ServletResponse (jakarta.servlet.ServletResponse)17 HttpServletRequest (jakarta.servlet.http.HttpServletRequest)17 HttpServletResponse (jakarta.servlet.http.HttpServletResponse)17 HttpServletResponseWrapper (jakarta.servlet.http.HttpServletResponseWrapper)17 Enumeration (java.util.Enumeration)17 HashMap (java.util.HashMap)17 Map (java.util.Map)17 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)17 ClientAbortException (org.apache.catalina.connector.ClientAbortException)17 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)17