@Test public void withIncompleteInitialization() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); given(request.getCharacterEncoding()).willReturn(null); given(request.getAttribute(WebUtils.ERROR_REQUEST_URI_ATTRIBUTE)).willReturn(null); given(request.getAttribute(filteredName(CharacterEncodingFilter.class.getName()))).willReturn(null); MockHttpServletResponse response = new MockHttpServletResponse(); FilterChain filterChain = mock(FilterChain.class); CharacterEncodingFilter filter = new CharacterEncodingFilter(ENCODING); filter.doFilter(request, response, filterChain); verify(request).setCharacterEncoding(ENCODING); verify(request).setAttribute(filteredName(CharacterEncodingFilter.class.getName()), Boolean.TRUE); verify(request).removeAttribute(filteredName(CharacterEncodingFilter.class.getName())); verify(filterChain).doFilter(request, response); }
@Test public void forceEncodingAlwaysSetsEncoding() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); request.setCharacterEncoding(ENCODING); given(request.getAttribute(WebUtils.ERROR_REQUEST_URI_ATTRIBUTE)).willReturn(null); given(request.getAttribute(filteredName(FILTER_NAME))).willReturn(null); HttpServletResponse response = mock(HttpServletResponse.class); FilterChain filterChain = mock(FilterChain.class); CharacterEncodingFilter filter = new CharacterEncodingFilter(ENCODING, true); filter.init(new MockFilterConfig(FILTER_NAME)); filter.doFilter(request, response, filterChain); verify(request).setAttribute(filteredName(FILTER_NAME), Boolean.TRUE); verify(request).removeAttribute(filteredName(FILTER_NAME)); verify(response).setCharacterEncoding(ENCODING); verify(filterChain).doFilter(request, response); }
@Test public void setForceEncodingOnRequestOnly() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); request.setCharacterEncoding(ENCODING); given(request.getAttribute(WebUtils.ERROR_REQUEST_URI_ATTRIBUTE)).willReturn(null); given(request.getAttribute(filteredName(FILTER_NAME))).willReturn(null); HttpServletResponse response = mock(HttpServletResponse.class); FilterChain filterChain = mock(FilterChain.class); CharacterEncodingFilter filter = new CharacterEncodingFilter(ENCODING, true, false); filter.init(new MockFilterConfig(FILTER_NAME)); filter.doFilter(request, response, filterChain); verify(request).setAttribute(filteredName(FILTER_NAME), Boolean.TRUE); verify(request).removeAttribute(filteredName(FILTER_NAME)); verify(request, times(2)).setCharacterEncoding(ENCODING); verify(response, never()).setCharacterEncoding(ENCODING); verify(filterChain).doFilter(request, response); }
@Test public void encodingIfEmptyAndNotForced() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); given(request.getCharacterEncoding()).willReturn(null); given(request.getAttribute(WebUtils.ERROR_REQUEST_URI_ATTRIBUTE)).willReturn(null); given(request.getAttribute(filteredName(FILTER_NAME))).willReturn(null); MockHttpServletResponse response = new MockHttpServletResponse(); FilterChain filterChain = mock(FilterChain.class); CharacterEncodingFilter filter = new CharacterEncodingFilter(ENCODING); filter.init(new MockFilterConfig(FILTER_NAME)); filter.doFilter(request, response, filterChain); verify(request).setCharacterEncoding(ENCODING); verify(request).setAttribute(filteredName(FILTER_NAME), Boolean.TRUE); verify(request).removeAttribute(filteredName(FILTER_NAME)); verify(filterChain).doFilter(request, response); }
@Test public void doesNotIfEncodingIsNotEmptyAndNotForced() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); given(request.getCharacterEncoding()).willReturn(ENCODING); given(request.getAttribute(WebUtils.ERROR_REQUEST_URI_ATTRIBUTE)).willReturn(null); given(request.getAttribute(filteredName(FILTER_NAME))).willReturn(null); MockHttpServletResponse response = new MockHttpServletResponse(); FilterChain filterChain = mock(FilterChain.class); CharacterEncodingFilter filter = new CharacterEncodingFilter(ENCODING); filter.init(new MockFilterConfig(FILTER_NAME)); filter.doFilter(request, response, filterChain); verify(request).setAttribute(filteredName(FILTER_NAME), Boolean.TRUE); verify(request).removeAttribute(filteredName(FILTER_NAME)); verify(filterChain).doFilter(request, response); }
@Test public void withBeanInitialization() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); given(request.getCharacterEncoding()).willReturn(null); given(request.getAttribute(WebUtils.ERROR_REQUEST_URI_ATTRIBUTE)).willReturn(null); given(request.getAttribute(filteredName(FILTER_NAME))).willReturn(null); MockHttpServletResponse response = new MockHttpServletResponse(); FilterChain filterChain = mock(FilterChain.class); CharacterEncodingFilter filter = new CharacterEncodingFilter(); filter.setEncoding(ENCODING); filter.setBeanName(FILTER_NAME); filter.setServletContext(new MockServletContext()); filter.doFilter(request, response, filterChain); verify(request).setCharacterEncoding(ENCODING); verify(request).setAttribute(filteredName(FILTER_NAME), Boolean.TRUE); verify(request).removeAttribute(filteredName(FILTER_NAME)); verify(filterChain).doFilter(request, response); }