/** * Tests that the filter encodes any query parameters on the return_to URL. */ @Test public void encodesUrlParameters() throws Exception { // Arbitrary parameter name and value that will both need to be encoded: String paramName = "foo&bar"; String paramValue = "http://example.com/path?a=b&c=d"; MockHttpServletRequest req = new MockHttpServletRequest("GET", REQUEST_PATH); req.addParameter(paramName, paramValue); filter.setReturnToUrlParameters(Collections.singleton(paramName)); URI returnTo = new URI(filter.buildReturnToUrl(req)); String query = returnTo.getRawQuery(); assertThat(count(query, '=')).isEqualTo(1); assertThat(count(query, '&')).isZero(); }