1212import org .springframework .webflow .test .MockParameterMap ;
1313import org .springframework .webflow .test .MockRequestContext ;
1414
15+ import java .io .UnsupportedEncodingException ;
16+ import java .net .URLEncoder ;
1517import java .util .HashMap ;
1618import java .util .Map ;
1719
@@ -28,12 +30,22 @@ public void setUp() {
2830 }
2931
3032 @ Test
31- public void getServiceClientIdShouldReturnNullWhenMalformedServiceUrl () {
33+ public void getServiceClientIdShouldReturnServiceUrlWhenMalformedServiceUrl () {
3234 RequestContext requestContext = getMockRequestContext (new HashMap <>());
3335 ((MockHttpServletRequest ) requestContext .getExternalContext ().getNativeRequest ()).addParameter ("service" , "invalidUrl" );
3436
3537 String clientId = abstractService .getServiceClientId (requestContext );
36- Assert .assertEquals (null , clientId );
38+ Assert .assertEquals ("invalidUrl" , clientId );
39+ }
40+
41+ @ Test
42+ public void getServiceClientIdShouldReturnServiceUrlWhenMalformedServiceUrl2 () throws UnsupportedEncodingException {
43+ String serviceParameter = createStringFromRangeOfValues ('\0' , '\u007F' );
44+ RequestContext requestContext = getMockRequestContext (new HashMap <>());
45+ ((MockHttpServletRequest ) requestContext .getExternalContext ().getNativeRequest ()).addParameter ("service" , serviceParameter );
46+
47+ String clientId = abstractService .getServiceClientId (requestContext );
48+ Assert .assertEquals (URLEncoder .encode (serviceParameter , "UTF-8" ), clientId );
3749 }
3850
3951 @ Test
@@ -77,4 +89,15 @@ private RequestContext getMockRequestContext(Map<String, String> parameters) {
7789 return context ;
7890 }
7991
92+ private String createStringFromRangeOfValues (char min , char max ) {
93+ final int length = (max - min ) + 1 ;
94+ char [] values = new char [length ];
95+
96+ for (int i = 0 ; i < length ; ++i ) {
97+ values [i ] = (char ) (min + i );
98+ }
99+
100+ return new String (values );
101+ }
102+
80103}
0 commit comments