@@ -380,4 +380,57 @@ public void testExpandTemplates_reservedExpansion_mustNotEscapeUnreservedCharSet
380380 unReservedSet ,
381381 UriTemplate .expand ("{+var}" , requestMap , false ));
382382 }
383+
384+ @ Test
385+ // These tests are from the uri-template test suite
386+ // https://github.com/uri-templates/uritemplate-test/blob/master/extended-tests.json
387+ public void testExpandTemplates_reservedExpansion_alreadyEncodedInput () {
388+ Map <String , Object > variables = Maps .newLinkedHashMap ();
389+ variables .put ("id" , "admin%2F" );
390+ assertEquals ("admin%252F" , UriTemplate .expand ("{id}" , variables , false ));
391+ assertEquals ("admin%2F" , UriTemplate .expand ("{+id}" , variables , false ));
392+ assertEquals ("#admin%2F" , UriTemplate .expand ("{#id}" , variables , false ));
393+ }
394+
395+ @ Test
396+ // These tests are from the uri-template test suite
397+ // https://github.com/uri-templates/uritemplate-test/blob/master/extended-tests.json
398+ public void testExpandTemplates_reservedExpansion_notEncodedInput () {
399+ Map <String , Object > variables = Maps .newLinkedHashMap ();
400+ variables .put ("not_pct" , "%foo" );
401+ assertEquals ("%25foo" , UriTemplate .expand ("{not_pct}" , variables , false ));
402+ assertEquals ("%25foo" , UriTemplate .expand ("{+not_pct}" , variables , false ));
403+ assertEquals ("#%25foo" , UriTemplate .expand ("{#not_pct}" , variables , false ));
404+ }
405+
406+ @ Test
407+ // These tests are from the uri-template test suite
408+ // https://github.com/uri-templates/uritemplate-test/blob/master/extended-tests.json
409+ public void testExpandTemplates_reservedExpansion_listExpansionWithMixedEncodedInput () {
410+ Map <String , Object > variables = Maps .newLinkedHashMap ();
411+ variables .put ("list" , Arrays .asList ("red%25" , "%2Fgreen" , "blue " ));
412+ assertEquals ("red%2525,%252Fgreen,blue%20" , UriTemplate .expand ("{list}" , variables , false ));
413+ assertEquals ("red%25,%2Fgreen,blue%20" , UriTemplate .expand ("{+list}" , variables , false ));
414+ assertEquals ("#red%25,%2Fgreen,blue%20" , UriTemplate .expand ("{#list}" , variables , false ));
415+ }
416+
417+ @ Test
418+ // These tests are from the uri-template test suite
419+ // https://github.com/uri-templates/uritemplate-test/blob/master/extended-tests.json with an
420+ // additional map entry
421+ public void testExpandTemplates_reservedExpansion_mapWithMixedEncodedInput () {
422+ Map <String , Object > variables = Maps .newLinkedHashMap ();
423+ Map <String , String > keys = Maps .newLinkedHashMap ();
424+ keys .put ("key1" , "val1%2F" );
425+ keys .put ("key2" , "val2%2F" );
426+ keys .put ("key3" , "val " );
427+ variables .put ("keys" , keys );
428+ assertEquals (
429+ "key1,val1%252F,key2,val2%252F,key3,val%20" ,
430+ UriTemplate .expand ("{keys}" , variables , false ));
431+ assertEquals (
432+ "key1,val1%2F,key2,val2%2F,key3,val%20" , UriTemplate .expand ("{+keys}" , variables , false ));
433+ assertEquals (
434+ "#key1,val1%2F,key2,val2%2F,key3,val%20" , UriTemplate .expand ("{#keys}" , variables , false ));
435+ }
383436}
0 commit comments