Description
Parser.parse produces a result with Query object that contains an array of one null value which is incorrect.
The test below failed with this assertion failure
Assertion failure: Expected: equalToIgnoringCase("https://webhcatTestHost.com:50111/templeton/v1/?version/hive") but: was https://webhcatTestHost.com:50111/templeton/v1/?version/hive=null
@Test public void testValuelessQueryParamParsingAndExpansion() throws Exception { URI inputUri, outputUri; Matcher<Void> matcher; Matcher<Void>.Match match; Template input, pattern, template; Evaluator evaluator; inputUri = new URI( "https://knoxHost:8443/gateway/knoxTopo/templeton/v1/?version/hive" ); input = Parser.parse( inputUri.toString() ); pattern = Parser.parse( "*://*:*/**/templeton/v1/?{**}" ); template = Parser.parse( "{$serviceUrl[WEBHCAT]}/v1/?{**}" ); matcher = new Matcher<Void>(); matcher.add( pattern, null ); match = matcher.match( input ); evaluator = new Evaluator() { @Override public List<String> evaluate( String function, List<String> parameters ) { return Arrays.asList( "https://webhcatTestHost.com:50111/templeton" ); } }; outputUri = Expander.expand( template, match.getParams(), evaluator ); assertThat( outputUri.toString(), equalToIgnoringCase( "https://webhcatTestHost.com:50111/templeton/v1/?version/hive" ) ); }
Attachments
Issue Links
- duplicates
-
KNOX-599 Template with {**} in queries are expanded with =null for query params without a value
- Closed