Search in sources :

Example 6 with MockFilterChain

use of cn.taketoday.mock.web.MockFilterChain in project today-framework by TAKETODAY.

the class ServletWebServerApplicationContextTests method delegatingFilterProxyRegistrationBeansSkipsTargetBeanNames.

@Test
void delegatingFilterProxyRegistrationBeansSkipsTargetBeanNames() {
    addWebServerFactoryBean();
    DelegatingFilterProxyRegistrationBean initializer = new DelegatingFilterProxyRegistrationBean("filterBean");
    this.context.registerBeanDefinition("initializerBean", beanDefinition(initializer));
    BeanDefinition filterBeanDefinition = beanDefinition(new IllegalStateException("Create FilterBean Failure"));
    filterBeanDefinition.setLazyInit(true);
    this.context.registerBeanDefinition("filterBean", filterBeanDefinition);
    this.context.refresh();
    ServletContext servletContext = getWebServerFactory().getServletContext();
    then(servletContext).should(atMost(1)).addFilter(anyString(), this.filterCaptor.capture());
    // Up to this point the filterBean should not have been created, calling
    // the delegate proxy will trigger creation and an exception
    assertThatExceptionOfType(BeanCreationException.class).isThrownBy(() -> {
        this.filterCaptor.getValue().init(new MockFilterConfig());
        this.filterCaptor.getValue().doFilter(new MockHttpServletRequest(), new MockHttpServletResponse(), new MockFilterChain());
    }).havingRootCause().isInstanceOf(IllegalStateException.class).withMessageContaining("Create FilterBean Failure");
}
Also used : DelegatingFilterProxyRegistrationBean(cn.taketoday.framework.web.servlet.DelegatingFilterProxyRegistrationBean) Assertions.assertThatIllegalStateException(org.assertj.core.api.Assertions.assertThatIllegalStateException) MockHttpServletRequest(cn.taketoday.mock.web.MockHttpServletRequest) ServletContext(jakarta.servlet.ServletContext) AbstractBeanDefinition(cn.taketoday.beans.factory.support.AbstractBeanDefinition) BeanDefinition(cn.taketoday.beans.factory.config.BeanDefinition) RootBeanDefinition(cn.taketoday.beans.factory.support.RootBeanDefinition) MockFilterChain(cn.taketoday.mock.web.MockFilterChain) MockHttpServletResponse(cn.taketoday.mock.web.MockHttpServletResponse) MockFilterConfig(cn.taketoday.mock.web.MockFilterConfig) Test(org.junit.jupiter.api.Test)

Example 7 with MockFilterChain

use of cn.taketoday.mock.web.MockFilterChain in project today-framework by TAKETODAY.

the class MockFilterChainTests method doFilterNullResponse.

@Test
void doFilterNullResponse() throws Exception {
    MockFilterChain chain = new MockFilterChain();
    assertThatIllegalArgumentException().isThrownBy(() -> chain.doFilter(this.request, null));
}
Also used : MockFilterChain(cn.taketoday.mock.web.MockFilterChain) Test(org.junit.jupiter.api.Test)

Example 8 with MockFilterChain

use of cn.taketoday.mock.web.MockFilterChain in project today-framework by TAKETODAY.

the class MockFilterChainTests method doFilterNullRequest.

@Test
void doFilterNullRequest() throws Exception {
    MockFilterChain chain = new MockFilterChain();
    assertThatIllegalArgumentException().isThrownBy(() -> chain.doFilter(null, this.response));
}
Also used : MockFilterChain(cn.taketoday.mock.web.MockFilterChain) Test(org.junit.jupiter.api.Test)

Example 9 with MockFilterChain

use of cn.taketoday.mock.web.MockFilterChain in project today-framework by TAKETODAY.

the class MockFilterChainTests method doFilterWithServlet.

@Test
void doFilterWithServlet() throws Exception {
    Servlet servlet = mock(Servlet.class);
    MockFilterChain chain = new MockFilterChain(servlet);
    chain.doFilter(this.request, this.response);
    verify(servlet).service(this.request, this.response);
    assertThatIllegalStateException().isThrownBy(() -> chain.doFilter(this.request, this.response)).withMessage("This FilterChain has already been called!");
}
Also used : Servlet(jakarta.servlet.Servlet) MockFilterChain(cn.taketoday.mock.web.MockFilterChain) Test(org.junit.jupiter.api.Test)

Example 10 with MockFilterChain

use of cn.taketoday.mock.web.MockFilterChain in project today-framework by TAKETODAY.

the class MockFilterChainTests method doFilterEmptyChain.

@Test
void doFilterEmptyChain() throws Exception {
    MockFilterChain chain = new MockFilterChain();
    chain.doFilter(this.request, this.response);
    assertThat(chain.getRequest()).isEqualTo(request);
    assertThat(chain.getResponse()).isEqualTo(response);
    assertThatIllegalStateException().isThrownBy(() -> chain.doFilter(this.request, this.response)).withMessage("This FilterChain has already been called!");
}
Also used : MockFilterChain(cn.taketoday.mock.web.MockFilterChain) Test(org.junit.jupiter.api.Test)

Aggregations

MockFilterChain (cn.taketoday.mock.web.MockFilterChain)14 Test (org.junit.jupiter.api.Test)14 RootBeanDefinition (cn.taketoday.beans.factory.support.RootBeanDefinition)4 MockFilterConfig (cn.taketoday.mock.web.MockFilterConfig)4 MockHttpServletRequest (cn.taketoday.mock.web.MockHttpServletRequest)4 MockHttpServletResponse (cn.taketoday.mock.web.MockHttpServletResponse)4 Servlet (jakarta.servlet.Servlet)4 BeanDefinition (cn.taketoday.beans.factory.config.BeanDefinition)2 AbstractBeanDefinition (cn.taketoday.beans.factory.support.AbstractBeanDefinition)2 DelegatingFilterProxyRegistrationBean (cn.taketoday.framework.web.servlet.DelegatingFilterProxyRegistrationBean)2 Filter (jakarta.servlet.Filter)2 ServletContext (jakarta.servlet.ServletContext)2 Assertions.assertThatIllegalStateException (org.assertj.core.api.Assertions.assertThatIllegalStateException)2