@Test public void dispatcherServletCustomizerProcessedInOrder() { StubWebApplicationContext root = new StubWebApplicationContext(this.servletContext); DefaultMockMvcBuilder builder = webAppContextSetup(root); builder.addDispatcherServletCustomizer(ds -> ds.setContextId("test-id")); builder.addDispatcherServletCustomizer(ds -> ds.setContextId("override-id")); builder.dispatchOptions(true); MockMvc mvc = builder.build(); DispatcherServlet ds = (DispatcherServlet) new DirectFieldAccessor(mvc) .getPropertyValue("servlet"); assertEquals("override-id", ds.getContextId()); }
/** * See /SPR-14277 */ @Test public void dispatcherServletCustomizer() { StubWebApplicationContext root = new StubWebApplicationContext(this.servletContext); DefaultMockMvcBuilder builder = webAppContextSetup(root); builder.addDispatcherServletCustomizer(ds -> ds.setContextId("test-id")); builder.dispatchOptions(true); MockMvc mvc = builder.build(); DispatcherServlet ds = (DispatcherServlet) new DirectFieldAccessor(mvc) .getPropertyValue("servlet"); assertEquals("test-id", ds.getContextId()); }
@Test public void traceWhenDefaultConfigurationThenCsrfIsEnabled() throws Exception { this.spring.configLocations( this.xml("shared-controllers"), this.xml("AutoConfig") ).autowire(); MockMvc traceEnabled = MockMvcBuilders .webAppContextSetup((WebApplicationContext) this.spring.getContext()) .apply(springSecurity()) .addDispatcherServletCustomizer(dispatcherServlet -> dispatcherServlet.setDispatchTraceRequest(true)) .build(); traceEnabled.perform(request(HttpMethod.TRACE, "/csrf-in-header")) .andExpect(csrfInHeader()); }
@Test public void traceWhenCsrfElementEnabledThenOk() throws Exception { this.spring.configLocations( this.xml("shared-controllers"), this.xml("CsrfEnabled") ).autowire(); MockMvc traceEnabled = MockMvcBuilders .webAppContextSetup((WebApplicationContext) this.spring.getContext()) .apply(springSecurity()) .addDispatcherServletCustomizer(dispatcherServlet -> dispatcherServlet.setDispatchTraceRequest(true)) .build(); traceEnabled.perform(request(HttpMethod.TRACE, "/csrf-in-header")) .andExpect(csrfInHeader()); }
@Bean @ConditionalOnMissingBean(MockMvcBuilder.class) public DefaultMockMvcBuilder mockMvcBuilder( List<MockMvcBuilderCustomizer> customizers) { DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.context); builder.addDispatcherServletCustomizer( new MockMvcDispatcherServletCustomizer(this.webMvcProperties)); for (MockMvcBuilderCustomizer customizer : customizers) { customizer.customize(builder); } return builder; }