Polish MVC config tests
This commit is contained in:
parent
1cf0fb8174
commit
aa064d7653
|
|
@ -25,6 +25,7 @@ import org.springframework.beans.DirectFieldAccessor;
|
|||
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.http.converter.ResourceHttpMessageConverter;
|
||||
import org.springframework.http.converter.StringHttpMessageConverter;
|
||||
|
|
@ -62,17 +63,18 @@ public class AnnotationDrivenBeanDefinitionParserTests {
|
|||
|
||||
@Before
|
||||
public void setup() {
|
||||
appContext = new GenericWebApplicationContext();
|
||||
this.appContext = new GenericWebApplicationContext();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMessageCodesResolver() {
|
||||
loadBeanDefinitions("mvc-config-message-codes-resolver.xml");
|
||||
RequestMappingHandlerAdapter adapter = appContext.getBean(RequestMappingHandlerAdapter.class);
|
||||
RequestMappingHandlerAdapter adapter = this.appContext.getBean(RequestMappingHandlerAdapter.class);
|
||||
assertNotNull(adapter);
|
||||
Object initializer = adapter.getWebBindingInitializer();
|
||||
assertNotNull(initializer);
|
||||
MessageCodesResolver resolver = ((ConfigurableWebBindingInitializer) initializer).getMessageCodesResolver();
|
||||
MessageCodesResolver resolver =
|
||||
((ConfigurableWebBindingInitializer) initializer).getMessageCodesResolver();
|
||||
assertNotNull(resolver);
|
||||
assertEquals(TestMessageCodesResolver.class, resolver.getClass());
|
||||
assertEquals(false, new DirectFieldAccessor(adapter).getPropertyValue("ignoreDefaultModelOnRedirect"));
|
||||
|
|
@ -81,7 +83,7 @@ public class AnnotationDrivenBeanDefinitionParserTests {
|
|||
@Test
|
||||
public void testPathMatchingConfiguration() {
|
||||
loadBeanDefinitions("mvc-config-path-matching.xml");
|
||||
RequestMappingHandlerMapping hm = appContext.getBean(RequestMappingHandlerMapping.class);
|
||||
RequestMappingHandlerMapping hm = this.appContext.getBean(RequestMappingHandlerMapping.class);
|
||||
assertNotNull(hm);
|
||||
assertTrue(hm.useSuffixPatternMatch());
|
||||
assertFalse(hm.useTrailingSlashMatch());
|
||||
|
|
@ -96,17 +98,17 @@ public class AnnotationDrivenBeanDefinitionParserTests {
|
|||
@Test
|
||||
public void testMessageConverters() {
|
||||
loadBeanDefinitions("mvc-config-message-converters.xml");
|
||||
verifyMessageConverters(appContext.getBean(RequestMappingHandlerAdapter.class), true);
|
||||
verifyMessageConverters(appContext.getBean(ExceptionHandlerExceptionResolver.class), true);
|
||||
verifyRequestResponseBodyAdvice(appContext.getBean(RequestMappingHandlerAdapter.class));
|
||||
verifyResponseBodyAdvice(appContext.getBean(ExceptionHandlerExceptionResolver.class));
|
||||
verifyMessageConverters(this.appContext.getBean(RequestMappingHandlerAdapter.class), true);
|
||||
verifyMessageConverters(this.appContext.getBean(ExceptionHandlerExceptionResolver.class), true);
|
||||
verifyRequestResponseBodyAdvice(this.appContext.getBean(RequestMappingHandlerAdapter.class));
|
||||
verifyResponseBodyAdvice(this.appContext.getBean(ExceptionHandlerExceptionResolver.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMessageConvertersWithoutDefaultRegistrations() {
|
||||
loadBeanDefinitions("mvc-config-message-converters-defaults-off.xml");
|
||||
verifyMessageConverters(appContext.getBean(RequestMappingHandlerAdapter.class), false);
|
||||
verifyMessageConverters(appContext.getBean(ExceptionHandlerExceptionResolver.class), false);
|
||||
verifyMessageConverters(this.appContext.getBean(RequestMappingHandlerAdapter.class), false);
|
||||
verifyMessageConverters(this.appContext.getBean(ExceptionHandlerExceptionResolver.class), false);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -153,16 +155,16 @@ public class AnnotationDrivenBeanDefinitionParserTests {
|
|||
@Test
|
||||
public void beanNameUrlHandlerMapping() {
|
||||
loadBeanDefinitions("mvc-config.xml");
|
||||
BeanNameUrlHandlerMapping mapping = appContext.getBean(BeanNameUrlHandlerMapping.class);
|
||||
BeanNameUrlHandlerMapping mapping = this.appContext.getBean(BeanNameUrlHandlerMapping.class);
|
||||
assertNotNull(mapping);
|
||||
assertEquals(2, mapping.getOrder());
|
||||
}
|
||||
|
||||
private void loadBeanDefinitions(String fileName) {
|
||||
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(appContext);
|
||||
ClassPathResource resource = new ClassPathResource(fileName, AnnotationDrivenBeanDefinitionParserTests.class);
|
||||
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this.appContext);
|
||||
Resource resource = new ClassPathResource(fileName, AnnotationDrivenBeanDefinitionParserTests.class);
|
||||
reader.loadBeanDefinitions(resource);
|
||||
appContext.refresh();
|
||||
this.appContext.refresh();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
|
@ -173,9 +175,9 @@ public class AnnotationDrivenBeanDefinitionParserTests {
|
|||
assertTrue(value instanceof List);
|
||||
List<HttpMessageConverter<?>> converters = (List<HttpMessageConverter<?>>) value;
|
||||
if (hasDefaultRegistrations) {
|
||||
assertTrue("Default converters are registered in addition to custom ones", converters.size() > 2);
|
||||
assertTrue("Default and custom converter expected", converters.size() > 2);
|
||||
} else {
|
||||
assertTrue("Default converters should not be registered", converters.size() == 2);
|
||||
assertTrue("Only custom converters expected", converters.size() == 2);
|
||||
}
|
||||
assertTrue(converters.get(0) instanceof StringHttpMessageConverter);
|
||||
assertTrue(converters.get(1) instanceof ResourceHttpMessageConverter);
|
||||
|
|
|
|||
|
|
@ -20,8 +20,6 @@ import java.util.List;
|
|||
import java.util.Locale;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.MapperFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
||||
import org.joda.time.DateTime;
|
||||
|
|
@ -87,6 +85,8 @@ import org.springframework.web.servlet.view.InternalResourceViewResolver;
|
|||
import org.springframework.web.servlet.view.ViewResolverComposite;
|
||||
import org.springframework.web.util.UrlPathHelper;
|
||||
|
||||
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
|
||||
import static com.fasterxml.jackson.databind.MapperFeature.DEFAULT_VIEW_INCLUSION;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
|
@ -142,6 +142,7 @@ public class WebMvcConfigurationSupportTests {
|
|||
HttpServletRequest request = new MockHttpServletRequest("GET", "/testController");
|
||||
HandlerExecutionChain chain = handlerMapping.getHandler(request);
|
||||
|
||||
assertNotNull(chain);
|
||||
assertNotNull(chain.getInterceptors());
|
||||
assertEquals(3, chain.getInterceptors().length);
|
||||
assertEquals(ConversionServiceExposingInterceptor.class, chain.getInterceptors()[1].getClass());
|
||||
|
|
@ -175,19 +176,20 @@ public class WebMvcConfigurationSupportTests {
|
|||
RequestMappingHandlerAdapter adapter = context.getBean(RequestMappingHandlerAdapter.class);
|
||||
List<HttpMessageConverter<?>> converters = adapter.getMessageConverters();
|
||||
assertEquals(9, converters.size());
|
||||
for(HttpMessageConverter<?> converter : converters) {
|
||||
if (converter instanceof AbstractJackson2HttpMessageConverter) {
|
||||
ObjectMapper objectMapper = ((AbstractJackson2HttpMessageConverter)converter).getObjectMapper();
|
||||
assertFalse(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION));
|
||||
assertFalse(objectMapper.getSerializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION));
|
||||
assertFalse(objectMapper.getDeserializationConfig().isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES));
|
||||
if (converter instanceof MappingJackson2XmlHttpMessageConverter) {
|
||||
assertEquals(XmlMapper.class, objectMapper.getClass());
|
||||
}
|
||||
}
|
||||
}
|
||||
converters.stream()
|
||||
.filter(converter -> converter instanceof AbstractJackson2HttpMessageConverter)
|
||||
.forEach(converter -> {
|
||||
ObjectMapper mapper = ((AbstractJackson2HttpMessageConverter) converter).getObjectMapper();
|
||||
assertFalse(mapper.getDeserializationConfig().isEnabled(DEFAULT_VIEW_INCLUSION));
|
||||
assertFalse(mapper.getSerializationConfig().isEnabled(DEFAULT_VIEW_INCLUSION));
|
||||
assertFalse(mapper.getDeserializationConfig().isEnabled(FAIL_ON_UNKNOWN_PROPERTIES));
|
||||
if (converter instanceof MappingJackson2XmlHttpMessageConverter) {
|
||||
assertEquals(XmlMapper.class, mapper.getClass());
|
||||
}
|
||||
});
|
||||
|
||||
ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) adapter.getWebBindingInitializer();
|
||||
ConfigurableWebBindingInitializer initializer =
|
||||
(ConfigurableWebBindingInitializer) adapter.getWebBindingInitializer();
|
||||
assertNotNull(initializer);
|
||||
|
||||
ConversionService conversionService = initializer.getConversionService();
|
||||
|
|
@ -331,8 +333,8 @@ public class WebMvcConfigurationSupportTests {
|
|||
|
||||
|
||||
@EnableWebMvc
|
||||
@Configuration
|
||||
public static class WebConfig {
|
||||
@Configuration @SuppressWarnings("unused")
|
||||
static class WebConfig {
|
||||
|
||||
@Bean(name="/testController")
|
||||
public TestController testController() {
|
||||
|
|
@ -348,8 +350,8 @@ public class WebMvcConfigurationSupportTests {
|
|||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
public static class ViewResolverConfig {
|
||||
@Configuration @SuppressWarnings("unused")
|
||||
static class ViewResolverConfig {
|
||||
|
||||
@Bean
|
||||
public ViewResolver beanNameViewResolver() {
|
||||
|
|
@ -360,7 +362,7 @@ public class WebMvcConfigurationSupportTests {
|
|||
|
||||
@EnableWebMvc
|
||||
@Configuration
|
||||
public static class CustomViewResolverOrderConfig extends WebMvcConfigurerAdapter {
|
||||
static class CustomViewResolverOrderConfig extends WebMvcConfigurerAdapter {
|
||||
|
||||
@Override
|
||||
public void configureViewResolvers(ViewResolverRegistry registry) {
|
||||
|
|
@ -374,19 +376,19 @@ public class WebMvcConfigurationSupportTests {
|
|||
static class CustomArgumentResolverConfig extends WebMvcConfigurerAdapter {
|
||||
|
||||
@Override
|
||||
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
|
||||
argumentResolvers.add(new TestArgumentResolver());
|
||||
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
|
||||
resolvers.add(new TestArgumentResolver());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) {
|
||||
returnValueHandlers.add(new TestReturnValueHandler());
|
||||
public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) {
|
||||
handlers.add(new TestReturnValueHandler());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Controller
|
||||
public static class TestController {
|
||||
@Controller @SuppressWarnings("unused")
|
||||
private static class TestController {
|
||||
|
||||
@RequestMapping("/")
|
||||
public void handle() {
|
||||
|
|
@ -402,7 +404,7 @@ public class WebMvcConfigurationSupportTests {
|
|||
|
||||
@Controller
|
||||
@Scope("prototype")
|
||||
public static class ScopedController {
|
||||
private static class ScopedController {
|
||||
|
||||
@RequestMapping("/scoped")
|
||||
public void handle() {
|
||||
|
|
@ -412,7 +414,7 @@ public class WebMvcConfigurationSupportTests {
|
|||
|
||||
@Controller
|
||||
@Scope(value="prototype", proxyMode=ScopedProxyMode.TARGET_CLASS)
|
||||
public static class ScopedProxyController {
|
||||
static class ScopedProxyController {
|
||||
|
||||
@RequestMapping("/scopedProxy")
|
||||
public void handle() {
|
||||
|
|
@ -422,7 +424,7 @@ public class WebMvcConfigurationSupportTests {
|
|||
|
||||
@ResponseStatus(code = HttpStatus.BAD_REQUEST, reason = "exception.user.exists")
|
||||
@SuppressWarnings("serial")
|
||||
public static class UserAlreadyExistsException extends RuntimeException {
|
||||
private static class UserAlreadyExistsException extends RuntimeException {
|
||||
}
|
||||
|
||||
private static class TestArgumentResolver implements HandlerMethodArgumentResolver {
|
||||
|
|
|
|||
Loading…
Reference in New Issue