Include WebSecurityConfigurer beans in @WebMvcTest
Update `WebMvcTypeExcludeFilter` to include `WebSecurityConfigurer` beans. Fixes gh-12275
This commit is contained in:
		
							parent
							
								
									00218dbfea
								
							
						
					
					
						commit
						eef6fdb066
					
				| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright 2012-2017 the original author or authors.
 | 
					 * Copyright 2012-2018 the original author or authors.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 * you may not use this file except in compliance with the License.
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,7 @@ import org.springframework.core.convert.converter.Converter;
 | 
				
			||||||
import org.springframework.core.convert.converter.GenericConverter;
 | 
					import org.springframework.core.convert.converter.GenericConverter;
 | 
				
			||||||
import org.springframework.http.converter.HttpMessageConverter;
 | 
					import org.springframework.http.converter.HttpMessageConverter;
 | 
				
			||||||
import org.springframework.stereotype.Controller;
 | 
					import org.springframework.stereotype.Controller;
 | 
				
			||||||
 | 
					import org.springframework.util.ClassUtils;
 | 
				
			||||||
import org.springframework.util.ObjectUtils;
 | 
					import org.springframework.util.ObjectUtils;
 | 
				
			||||||
import org.springframework.web.bind.annotation.ControllerAdvice;
 | 
					import org.springframework.web.bind.annotation.ControllerAdvice;
 | 
				
			||||||
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
 | 
					import org.springframework.web.method.support.HandlerMethodArgumentResolver;
 | 
				
			||||||
| 
						 | 
					@ -45,6 +46,9 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class WebMvcTypeExcludeFilter extends AnnotationCustomizableTypeExcludeFilter {
 | 
					class WebMvcTypeExcludeFilter extends AnnotationCustomizableTypeExcludeFilter {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static final String[] OPTIONAL_INCLUDES = {
 | 
				
			||||||
 | 
								"org.springframework.security.config.annotation.web.WebSecurityConfigurer" };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final Set<Class<?>> DEFAULT_INCLUDES;
 | 
						private static final Set<Class<?>> DEFAULT_INCLUDES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	static {
 | 
						static {
 | 
				
			||||||
| 
						 | 
					@ -60,6 +64,13 @@ class WebMvcTypeExcludeFilter extends AnnotationCustomizableTypeExcludeFilter {
 | 
				
			||||||
		includes.add(ErrorAttributes.class);
 | 
							includes.add(ErrorAttributes.class);
 | 
				
			||||||
		includes.add(Converter.class);
 | 
							includes.add(Converter.class);
 | 
				
			||||||
		includes.add(GenericConverter.class);
 | 
							includes.add(GenericConverter.class);
 | 
				
			||||||
 | 
							for (String optionalInclude : OPTIONAL_INCLUDES) {
 | 
				
			||||||
 | 
								try {
 | 
				
			||||||
 | 
									includes.add(ClassUtils.forName(optionalInclude, null));
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								catch (Exception ex) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		DEFAULT_INCLUDES = Collections.unmodifiableSet(includes);
 | 
							DEFAULT_INCLUDES = Collections.unmodifiableSet(includes);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright 2012-2017 the original author or authors.
 | 
					 * Copyright 2012-2018 the original author or authors.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 * you may not use this file except in compliance with the License.
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
| 
						 | 
					@ -26,6 +26,7 @@ import org.springframework.core.type.classreading.MetadataReader;
 | 
				
			||||||
import org.springframework.core.type.classreading.MetadataReaderFactory;
 | 
					import org.springframework.core.type.classreading.MetadataReaderFactory;
 | 
				
			||||||
import org.springframework.core.type.classreading.SimpleMetadataReaderFactory;
 | 
					import org.springframework.core.type.classreading.SimpleMetadataReaderFactory;
 | 
				
			||||||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
 | 
					import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
 | 
				
			||||||
 | 
					import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 | 
				
			||||||
import org.springframework.stereotype.Controller;
 | 
					import org.springframework.stereotype.Controller;
 | 
				
			||||||
import org.springframework.stereotype.Repository;
 | 
					import org.springframework.stereotype.Repository;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
| 
						 | 
					@ -54,6 +55,7 @@ public class WebMvcTypeExcludeFilterTests {
 | 
				
			||||||
		assertThat(excludes(filter, ExampleMessageConverter.class)).isFalse();
 | 
							assertThat(excludes(filter, ExampleMessageConverter.class)).isFalse();
 | 
				
			||||||
		assertThat(excludes(filter, ExampleService.class)).isTrue();
 | 
							assertThat(excludes(filter, ExampleService.class)).isTrue();
 | 
				
			||||||
		assertThat(excludes(filter, ExampleRepository.class)).isTrue();
 | 
							assertThat(excludes(filter, ExampleRepository.class)).isTrue();
 | 
				
			||||||
 | 
							assertThat(excludes(filter, ExampleWebSecurityConfigurer.class)).isFalse();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Test
 | 
						@Test
 | 
				
			||||||
| 
						 | 
					@ -67,6 +69,7 @@ public class WebMvcTypeExcludeFilterTests {
 | 
				
			||||||
		assertThat(excludes(filter, ExampleMessageConverter.class)).isFalse();
 | 
							assertThat(excludes(filter, ExampleMessageConverter.class)).isFalse();
 | 
				
			||||||
		assertThat(excludes(filter, ExampleService.class)).isTrue();
 | 
							assertThat(excludes(filter, ExampleService.class)).isTrue();
 | 
				
			||||||
		assertThat(excludes(filter, ExampleRepository.class)).isTrue();
 | 
							assertThat(excludes(filter, ExampleRepository.class)).isTrue();
 | 
				
			||||||
 | 
							assertThat(excludes(filter, ExampleWebSecurityConfigurer.class)).isFalse();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Test
 | 
						@Test
 | 
				
			||||||
| 
						 | 
					@ -80,6 +83,7 @@ public class WebMvcTypeExcludeFilterTests {
 | 
				
			||||||
		assertThat(excludes(filter, ExampleMessageConverter.class)).isTrue();
 | 
							assertThat(excludes(filter, ExampleMessageConverter.class)).isTrue();
 | 
				
			||||||
		assertThat(excludes(filter, ExampleService.class)).isTrue();
 | 
							assertThat(excludes(filter, ExampleService.class)).isTrue();
 | 
				
			||||||
		assertThat(excludes(filter, ExampleRepository.class)).isTrue();
 | 
							assertThat(excludes(filter, ExampleRepository.class)).isTrue();
 | 
				
			||||||
 | 
							assertThat(excludes(filter, ExampleWebSecurityConfigurer.class)).isTrue();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Test
 | 
						@Test
 | 
				
			||||||
| 
						 | 
					@ -106,6 +110,7 @@ public class WebMvcTypeExcludeFilterTests {
 | 
				
			||||||
		assertThat(excludes(filter, ExampleMessageConverter.class)).isFalse();
 | 
							assertThat(excludes(filter, ExampleMessageConverter.class)).isFalse();
 | 
				
			||||||
		assertThat(excludes(filter, ExampleService.class)).isTrue();
 | 
							assertThat(excludes(filter, ExampleService.class)).isTrue();
 | 
				
			||||||
		assertThat(excludes(filter, ExampleRepository.class)).isTrue();
 | 
							assertThat(excludes(filter, ExampleRepository.class)).isTrue();
 | 
				
			||||||
 | 
							assertThat(excludes(filter, ExampleWebSecurityConfigurer.class)).isFalse();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private boolean excludes(WebMvcTypeExcludeFilter filter, Class<?> type)
 | 
						private boolean excludes(WebMvcTypeExcludeFilter filter, Class<?> type)
 | 
				
			||||||
| 
						 | 
					@ -173,4 +178,8 @@ public class WebMvcTypeExcludeFilterTests {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						static class ExampleWebSecurityConfigurer extends WebSecurityConfigurerAdapter {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue