You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@knox.apache.org by "Kevin Minder (JIRA)" <ji...@apache.org> on 2016/03/11 16:23:34 UTC
[jira] [Created] (KNOX-690) URL Template matching not properly
handling encoded URLs
Kevin Minder created KNOX-690:
---------------------------------
Summary: URL Template matching not properly handling encoded URLs
Key: KNOX-690
URL: https://issues.apache.org/jira/browse/KNOX-690
Project: Apache Knox
Issue Type: Bug
Components: Server
Affects Versions: 0.9.0
Reporter: Kevin Minder
Fix For: 0.9.0
For example as shown below the literal {{test-scheme://test-host:42/%7C}} does not match the template {{*://*:*/|}} as it probably should. The test below can be added to knox-url-decode/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/MatcherTest.java to help work on the issue.
{code}
@Test
public void testEncodedUrlMatching() throws Exception {
Template template;
Template input;
Matcher<String> matcher;
Matcher<?>.Match match;
matcher = new Matcher<String>();
template = Parser.parseTemplate( "*://*:*/example" );
matcher.add( template, "test-example" );
template = Parser.parseTemplate( "*://*:*/|" );
matcher.add( template, "test-pipe-in-path" );
template = Parser.parseTemplate( "*://*:*/test-path?{|=*}" );
matcher.add( template, "test-pipe-in-query-param-name" );
template = Parser.parseTemplate( "*://*:*/test-path?{test-param-name=*}" );
matcher.add( template, "test-pipe-in-query-param-value" );
template = Parser.parseTemplate( "*://*:*/path#|" );
matcher.add( template, "test-pipe-in-fragment" );
input = Parser.parseLiteral( "test-scheme://test-host:42/example" );
match = matcher.match( input );
assertThat( match, notNullValue() );
assertThat( (String)match.getValue(), is( "test-example" ) );
input = Parser.parseLiteral( "test-scheme://test-host:42/%7C" );
match = matcher.match( input );
assertThat( match, notNullValue() );
assertThat( (String)match.getValue(), is( "test-pipe-in-path" ) );
input = Parser.parseLiteral( "test-scheme://test-host:42/test-path?%7C=test-param-value" );
match = matcher.match( input );
assertThat( match, notNullValue() );
assertThat( (String)match.getValue(), is( "test-pipe-in-query-param-name" ) );
input = Parser.parseLiteral( "test-scheme://test-host:42/test-path?test-param-name=%7C" );
match = matcher.match( input );
assertThat( match, notNullValue() );
assertThat( (String)match.getValue(), is( "test-pipe-in-query-param-value" ) );
input = Parser.parseLiteral( "test-scheme://test-host:42/test-path#%7C" );
match = matcher.match( input );
assertThat( match, notNullValue() );
assertThat( (String)match.getValue(), is( "test-pipe-in-fragment" ) );
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)