From b2873fbc2d55c007d7fbc882bbcff701173b1887 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Fri, 26 Jul 2013 11:11:17 +0100 Subject: [PATCH] Add WebMvcAutoConfigurationTests [Fixes #53027833] --- .../web/WebMvcAutoConfigurationTests.java | 98 ++++++++++++++++++- 1 file changed, 94 insertions(+), 4 deletions(-) diff --git a/spring-autoconfigure/src/test/java/org/springframework/autoconfigure/web/WebMvcAutoConfigurationTests.java b/spring-autoconfigure/src/test/java/org/springframework/autoconfigure/web/WebMvcAutoConfigurationTests.java index be2d0017d12..6bbc6170277 100644 --- a/spring-autoconfigure/src/test/java/org/springframework/autoconfigure/web/WebMvcAutoConfigurationTests.java +++ b/spring-autoconfigure/src/test/java/org/springframework/autoconfigure/web/WebMvcAutoConfigurationTests.java @@ -16,17 +16,107 @@ package org.springframework.autoconfigure.web; -import org.junit.Ignore; -import org.springframework.autoconfigure.web.WebMvcAutoConfiguration; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.junit.After; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.springframework.bootstrap.context.embedded.AnnotationConfigEmbeddedWebApplicationContext; +import org.springframework.bootstrap.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor; +import org.springframework.bootstrap.context.embedded.EmbeddedServletContainerFactory; +import org.springframework.bootstrap.context.embedded.MockEmbeddedServletContainerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.HandlerAdapter; +import org.springframework.web.servlet.HandlerMapping; +import org.springframework.web.servlet.View; +import org.springframework.web.servlet.ViewResolver; +import org.springframework.web.servlet.view.AbstractView; + +import static org.junit.Assert.assertEquals; /** * Tests for {@link WebMvcAutoConfiguration}. * * @author Phillip Webb + * @author Dave Syer */ -@Ignore public class WebMvcAutoConfigurationTests { - // FIXME + private static final MockEmbeddedServletContainerFactory containerFactory = new MockEmbeddedServletContainerFactory(); + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + private AnnotationConfigEmbeddedWebApplicationContext context; + + @After + public void close() { + if (this.context != null) { + this.context.close(); + } + } + + @Test + public void handerAdaptersCreated() throws Exception { + this.context = new AnnotationConfigEmbeddedWebApplicationContext(); + this.context.register(Config.class, WebMvcAutoConfiguration.class); + this.context.refresh(); + assertEquals(3, this.context.getBeanNamesForType(HandlerAdapter.class).length); + } + + @Test + public void handerMappingsCreated() throws Exception { + this.context = new AnnotationConfigEmbeddedWebApplicationContext(); + this.context.register(Config.class, WebMvcAutoConfiguration.class); + this.context.refresh(); + assertEquals(6, this.context.getBeanNamesForType(HandlerMapping.class).length); + } + + @Test + public void viewResolversCreatedIfViewsPresent() throws Exception { + this.context = new AnnotationConfigEmbeddedWebApplicationContext(); + this.context.register(Config.class, ViewConfig.class, + WebMvcAutoConfiguration.class); + this.context.refresh(); + assertEquals(2, this.context.getBeanNamesForType(ViewResolver.class).length); + } + + @Configuration + protected static class ViewConfig { + + @Bean + public View jsonView() { + return new AbstractView() { + + @Override + protected void renderMergedOutputModel(Map model, + HttpServletRequest request, HttpServletResponse response) + throws Exception { + response.getOutputStream().write("Hello World".getBytes()); + } + }; + } + + } + + @Configuration + protected static class Config { + + @Bean + public EmbeddedServletContainerFactory containerFactory() { + return containerFactory; + } + + @Bean + public EmbeddedServletContainerCustomizerBeanPostProcessor embeddedServletContainerCustomizerBeanPostProcessor() { + return new EmbeddedServletContainerCustomizerBeanPostProcessor(); + } + + } }