ServletRequestMethodArgumentResolver passes null references through (again)

Issue: SPR-15214
(cherry picked from commit fc11321)
This commit is contained in:
Juergen Hoeller
2017-02-20 23:00:07 +01:00
parent 278199d467
commit f117b804a8
2 changed files with 23 additions and 12 deletions

View File

@@ -50,25 +50,27 @@ import static org.junit.Assert.*;
*/
public class ServletRequestMethodArgumentResolverTests {
private final ServletRequestMethodArgumentResolver resolver = new ServletRequestMethodArgumentResolver();
private Method method;
private ServletRequestMethodArgumentResolver resolver;
private ModelAndViewContainer mavContainer;
private MockHttpServletRequest servletRequest;
private ServletWebRequest webRequest;
private MockHttpServletRequest servletRequest;
private Method method;
@Before
public void setUp() throws Exception {
method = getClass().getMethod("supportedParams", ServletRequest.class, MultipartRequest.class,
HttpSession.class, Principal.class, Locale.class, InputStream.class, Reader.class,
WebRequest.class, TimeZone.class, ZoneId.class, HttpMethod.class);
public void setup() throws Exception {
resolver = new ServletRequestMethodArgumentResolver();
mavContainer = new ModelAndViewContainer();
servletRequest = new MockHttpServletRequest("GET", "");
webRequest = new ServletWebRequest(servletRequest, new MockHttpServletResponse());
method = getClass().getMethod("supportedParams", ServletRequest.class, MultipartRequest.class,
HttpSession.class, Principal.class, Locale.class, InputStream.class, Reader.class,
WebRequest.class, TimeZone.class, ZoneId.class, HttpMethod.class);
}
@@ -112,6 +114,15 @@ public class ServletRequestMethodArgumentResolverTests {
assertSame("Invalid result", principal, result);
}
@Test
public void principalAsNull() throws Exception {
MethodParameter principalParameter = new MethodParameter(method, 3);
assertTrue("Principal not supported", resolver.supportsParameter(principalParameter));
Object result = resolver.resolveArgument(principalParameter, null, webRequest, null);
assertNull("Invalid result", result);
}
@Test
public void locale() throws Exception {
Locale locale = Locale.ENGLISH;