// *************************************************************************************************************************** | |
// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * | |
// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file * | |
// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance * | |
// * with the License. You may obtain a copy of the License at * | |
// * * | |
// * http://www.apache.org/licenses/LICENSE-2.0 * | |
// * * | |
// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * | |
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * | |
// * specific language governing permissions and limitations under the License. * | |
// *************************************************************************************************************************** | |
package org.apache.juneau.rest; | |
import static org.apache.juneau.http.HttpMethod.*; | |
import static org.junit.runners.MethodSorters.*; | |
import org.apache.juneau.collections.*; | |
import org.apache.juneau.http.annotation.Path; | |
import org.apache.juneau.rest.annotation.*; | |
import org.apache.juneau.rest.mock2.*; | |
import org.junit.*; | |
@FixMethodOrder(NAME_ASCENDING) | |
public class Paths_Test { | |
//------------------------------------------------------------------------------------------------------------------ | |
// Setup | |
//------------------------------------------------------------------------------------------------------------------ | |
static OMap getPaths(RestRequest req) { | |
return OMap.of() | |
.a("pathInfo", req.getPathInfo()) | |
.a("pathRemainder", req.getPathMatch().getRemainder()) | |
.a("pathRemainderUndecoded", req.getPathMatch().getRemainderUndecoded()) | |
.a("requestURI", req.getRequestURI()) | |
.a("requestParentURI", req.getUriContext().getRootRelativePathInfoParent()) | |
.a("requestURL", req.getRequestURL()) | |
.a("servletPath", req.getServletPath()) | |
.a("servletURI", req.getUriContext().getRootRelativeServletPath()) | |
.a("servletParentURI", req.getUriContext().getRootRelativeServletPathParent()); | |
} | |
//------------------------------------------------------------------------------------------------------------------ | |
// No subpath | |
//------------------------------------------------------------------------------------------------------------------ | |
@Rest | |
public static class A { | |
@RestMethod(name=GET,path="/*") | |
public OMap get(RestRequest req, @Path("/*") String r) { | |
return getPaths(req).append("pathRemainder2", r).append("method",1); | |
} | |
} | |
static MockRestClient a = MockRestClient.create(A.class).contextPath("/cp").servletPath("/sp").build(); | |
@Test | |
public void a01() throws Exception { | |
a.get("http://localhost/cp/sp").run() | |
.assertBody().contains("pathInfo:null") | |
.assertBody().contains("pathRemainder:null") | |
.assertBody().contains("pathRemainderUndecoded:null") | |
.assertBody().contains("pathRemainder2:null") | |
.assertBody().contains("requestURI:'/cp/sp'") | |
.assertBody().contains("requestParentURI:'/cp'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:1") | |
; | |
} | |
@Test | |
public void a02() throws Exception { | |
a.get("http://localhost/cp/sp/").run() | |
.assertBody().contains("pathInfo:'/'") | |
.assertBody().contains("pathRemainder:''") | |
.assertBody().contains("pathRemainderUndecoded:''") | |
.assertBody().contains("pathRemainder2:''") | |
.assertBody().contains("requestURI:'/cp/sp/'") | |
.assertBody().contains("requestParentURI:'/cp'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:1") | |
; | |
} | |
@Test | |
public void a03() throws Exception { | |
a.get("http://localhost/cp/sp//").run() | |
.assertBody().contains("pathInfo:'//'") | |
.assertBody().contains("pathRemainder:'/'") | |
.assertBody().contains("pathRemainderUndecoded:'/'") | |
.assertBody().contains("pathRemainder2:'/'") | |
.assertBody().contains("requestURI:'/cp/sp//'") | |
.assertBody().contains("requestParentURI:'/cp'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp//'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:1") | |
; | |
} | |
@Test | |
public void a04() throws Exception { | |
a.get("http://localhost/cp/sp///").run() | |
.assertBody().contains("pathInfo:'///'") | |
.assertBody().contains("pathRemainder:'//'") | |
.assertBody().contains("pathRemainderUndecoded:'//'") | |
.assertBody().contains("pathRemainder2:'//'") | |
.assertBody().contains("requestURI:'/cp/sp///'") | |
.assertBody().contains("requestParentURI:'/cp'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp///'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:1") | |
; | |
} | |
@Test | |
public void a05() throws Exception { | |
a.get("http://localhost/cp/sp/foo/bar").run() | |
.assertBody().contains("pathInfo:'/foo/bar'") | |
.assertBody().contains("pathRemainder:'foo/bar'") | |
.assertBody().contains("pathRemainderUndecoded:'foo/bar'") | |
.assertBody().contains("pathRemainder2:'foo/bar'") | |
.assertBody().contains("requestURI:'/cp/sp/foo/bar'") | |
.assertBody().contains("requestParentURI:'/cp/sp/foo'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/foo/bar'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:1") | |
; | |
} | |
@Test | |
public void a06() throws Exception { | |
a.get("http://localhost/cp/sp/foo/bar/").run() | |
.assertBody().contains("pathInfo:'/foo/bar/'") | |
.assertBody().contains("pathRemainder:'foo/bar/'") | |
.assertBody().contains("pathRemainderUndecoded:'foo/bar/'") | |
.assertBody().contains("pathRemainder2:'foo/bar/'") | |
.assertBody().contains("requestURI:'/cp/sp/foo/bar/'") | |
.assertBody().contains("requestParentURI:'/cp/sp/foo'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/foo/bar/'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:1") | |
; | |
} | |
@Test | |
public void a07() throws Exception { | |
a.get("http://localhost/cp/sp//foo//bar//").run() | |
.assertBody().contains("pathInfo:'//foo//bar//'") | |
.assertBody().contains("pathRemainder:'/foo//bar//'") | |
.assertBody().contains("pathRemainderUndecoded:'/foo//bar//'") | |
.assertBody().contains("pathRemainder2:'/foo//bar//'") | |
.assertBody().contains("requestURI:'/cp/sp//foo//bar//'") | |
.assertBody().contains("requestParentURI:'/cp/sp/foo/'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp//foo//bar//'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:1") | |
; | |
} | |
@Test | |
public void a08() throws Exception { | |
a.get("http://localhost/cp/sp/%20").run() | |
.assertBody().contains("pathInfo:'/ '") | |
.assertBody().contains("pathRemainder:' '") | |
.assertBody().contains("pathRemainderUndecoded:'%20'") | |
.assertBody().contains("pathRemainder2:' '") | |
.assertBody().contains("requestURI:'/cp/sp/%20'") | |
.assertBody().contains("requestParentURI:'/cp/sp") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/%20'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:1") | |
; | |
} | |
@Test | |
public void a09() throws Exception { | |
a.get("http://localhost/cp/sp/+").run() | |
.assertBody().contains("pathInfo:'/ '") | |
.assertBody().contains("pathRemainder:' '") | |
.assertBody().contains("pathRemainderUndecoded:'+'") | |
.assertBody().contains("pathRemainder2:' '") | |
.assertBody().contains("requestURI:'/cp/sp/+'") | |
.assertBody().contains("requestParentURI:'/cp/sp") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/+'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:1") | |
; | |
} | |
//------------------------------------------------------------------------------------------------------------------ | |
// Subpath in method | |
//------------------------------------------------------------------------------------------------------------------ | |
public static class B { | |
@RestMethod(name=GET, path="/subpath/*") | |
public OMap get(RestRequest req, @Path("/*") String r) { | |
return getPaths(req).append("pathRemainder2", r).append("method",2); | |
} | |
} | |
static MockRestClient b = MockRestClient.create(B.class).contextPath("/cp").servletPath("/sp").build(); | |
@Test | |
public void b01() throws Exception { | |
b.get("http://localhost/cp/sp/subpath").run() | |
.assertBody().contains("pathInfo:'/subpath'") | |
.assertBody().contains("pathRemainder:null") | |
.assertBody().contains("pathRemainderUndecoded:null") | |
.assertBody().contains("pathRemainder2:null") | |
.assertBody().contains("requestURI:'/cp/sp/subpath'") | |
.assertBody().contains("requestParentURI:'/cp/sp'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/subpath'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:2") | |
; | |
} | |
@Test | |
public void b02() throws Exception { | |
b.get("http://localhost/cp/sp/subpath/").run() | |
.assertBody().contains("pathInfo:'/subpath/'") | |
.assertBody().contains("pathRemainder:''") | |
.assertBody().contains("pathRemainderUndecoded:''") | |
.assertBody().contains("pathRemainder2:''") | |
.assertBody().contains("requestURI:'/cp/sp/subpath/'") | |
.assertBody().contains("requestParentURI:'/cp/sp'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/subpath/'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:2") | |
; | |
} | |
@Test | |
public void b03() throws Exception { | |
b.get("http://localhost/cp/sp/subpath//").run() | |
.assertBody().contains("pathInfo:'/subpath//'") | |
.assertBody().contains("pathRemainder:'/'") | |
.assertBody().contains("pathRemainderUndecoded:'/'") | |
.assertBody().contains("pathRemainder2:'/'") | |
.assertBody().contains("requestURI:'/cp/sp/subpath//'") | |
.assertBody().contains("requestParentURI:'/cp/sp'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/subpath//'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:2") | |
; | |
} | |
@Test | |
public void b04() throws Exception { | |
b.get("http://localhost/cp/sp/subpath///").run() | |
.assertBody().contains("pathInfo:'/subpath///'") | |
.assertBody().contains("pathRemainder:'//'") | |
.assertBody().contains("pathRemainderUndecoded:'//'") | |
.assertBody().contains("pathRemainder2:'//'") | |
.assertBody().contains("requestURI:'/cp/sp/subpath///'") | |
.assertBody().contains("requestParentURI:'/cp/sp'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/subpath///'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:2") | |
; | |
} | |
@Test | |
public void b05() throws Exception { | |
b.get("http://localhost/cp/sp/subpath/foo/bar").run() | |
.assertBody().contains("pathInfo:'/subpath/foo/bar'") | |
.assertBody().contains("pathRemainder:'foo/bar'") | |
.assertBody().contains("pathRemainderUndecoded:'foo/bar'") | |
.assertBody().contains("pathRemainder2:'foo/bar'") | |
.assertBody().contains("requestURI:'/cp/sp/subpath/foo/bar'") | |
.assertBody().contains("requestParentURI:'/cp/sp/subpath/foo'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/subpath/foo/bar'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:2") | |
; | |
} | |
@Test | |
public void b06() throws Exception { | |
b.get("http://localhost/cp/sp/subpath/foo/bar/").run() | |
.assertBody().contains("pathInfo:'/subpath/foo/bar/'") | |
.assertBody().contains("pathRemainder:'foo/bar/'") | |
.assertBody().contains("pathRemainderUndecoded:'foo/bar/'") | |
.assertBody().contains("pathRemainder2:'foo/bar/'") | |
.assertBody().contains("requestURI:'/cp/sp/subpath/foo/bar/'") | |
.assertBody().contains("requestParentURI:'/cp/sp/subpath/foo'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/subpath/foo/bar/'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:2") | |
; | |
} | |
@Test | |
public void b07() throws Exception { | |
b.get("http://localhost/cp/sp/subpath//foo//bar//").run() | |
.assertBody().contains("pathInfo:'/subpath//foo//bar//'") | |
.assertBody().contains("pathRemainder:'/foo//bar//'") | |
.assertBody().contains("pathRemainderUndecoded:'/foo//bar//'") | |
.assertBody().contains("pathRemainder2:'/foo//bar//'") | |
.assertBody().contains("requestURI:'/cp/sp/subpath//foo//bar//'") | |
.assertBody().contains("requestParentURI:'/cp/sp/subpath//foo/'") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/subpath//foo//bar//'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:2") | |
; | |
} | |
@Test | |
public void b08() throws Exception { | |
b.get("http://localhost/cp/sp/subpath/%20").run() | |
.assertBody().contains("pathInfo:'/subpath/ '") | |
.assertBody().contains("pathRemainder:' '") | |
.assertBody().contains("pathRemainderUndecoded:'%20'") | |
.assertBody().contains("pathRemainder2:' '") | |
.assertBody().contains("requestURI:'/cp/sp/subpath/%20'") | |
.assertBody().contains("requestParentURI:'/cp/sp/subpath") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/subpath/%20'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:2") | |
; | |
} | |
@Test | |
public void b09() throws Exception { | |
b.get("http://localhost/cp/sp/subpath/+").run() | |
.assertBody().contains("pathInfo:'/subpath/ '") | |
.assertBody().contains("pathRemainder:' '") | |
.assertBody().contains("pathRemainderUndecoded:'+'") | |
.assertBody().contains("pathRemainder2:' '") | |
.assertBody().contains("requestURI:'/cp/sp/subpath/+'") | |
.assertBody().contains("requestParentURI:'/cp/sp/subpath") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/subpath/+'") | |
.assertBody().contains("servletPath:'/sp'") | |
.assertBody().contains("servletURI:'/cp/sp'") | |
.assertBody().contains("method:2") | |
; | |
} | |
//------------------------------------------------------------------------------------------------------------------ | |
// Child resource | |
//------------------------------------------------------------------------------------------------------------------ | |
@Rest(children={C1.class}) | |
public static class C {} | |
@Rest(path="/a") | |
public static class C1 { | |
@RestMethod(name=GET,path="/*") | |
public OMap get(RestRequest req, @Path("/*") String r) { | |
return getPaths(req).append("pathRemainder2", r).append("method",3); | |
} | |
} | |
static MockRestClient c = MockRestClient.create(C.class).contextPath("/cp").servletPath("/sp").build(); | |
@Test | |
public void c01() throws Exception { | |
c.get("http://localhost/cp/sp/a").run() | |
.assertBody().contains("pathInfo:null") | |
.assertBody().contains("pathRemainder:null") | |
.assertBody().contains("pathRemainderUndecoded:null") | |
.assertBody().contains("pathRemainder2:null") | |
.assertBody().contains("requestURI:'/cp/sp/a'") | |
.assertBody().contains("requestParentURI:'/cp/sp") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:3") | |
; | |
} | |
@Test | |
public void c02() throws Exception { | |
c.get("http://localhost/cp/sp/a/").run() | |
.assertBody().contains("pathInfo:'/'") | |
.assertBody().contains("pathRemainder:''") | |
.assertBody().contains("pathRemainderUndecoded:''") | |
.assertBody().contains("pathRemainder2:''") | |
.assertBody().contains("requestURI:'/cp/sp/a/'") | |
.assertBody().contains("requestParentURI:'/cp/sp") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:3") | |
; | |
} | |
@Test | |
public void c03() throws Exception { | |
c.get("http://localhost/cp/sp/a//").run() | |
.assertBody().contains("pathInfo:'//'") | |
.assertBody().contains("pathRemainder:'/'") | |
.assertBody().contains("pathRemainderUndecoded:'/'") | |
.assertBody().contains("pathRemainder2:'/'") | |
.assertBody().contains("requestURI:'/cp/sp/a//'") | |
.assertBody().contains("requestParentURI:'/cp/sp") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a//'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:3") | |
; | |
} | |
@Test | |
public void c04() throws Exception { | |
c.get("http://localhost/cp/sp/a///").run() | |
.assertBody().contains("pathInfo:'///'") | |
.assertBody().contains("pathRemainder:'//'") | |
.assertBody().contains("pathRemainderUndecoded:'//'") | |
.assertBody().contains("pathRemainder2:'//'") | |
.assertBody().contains("requestURI:'/cp/sp/a///'") | |
.assertBody().contains("requestParentURI:'/cp/sp") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a///'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:3") | |
; | |
} | |
@Test | |
public void c05() throws Exception { | |
c.get("http://localhost/cp/sp/a/foo/bar").run() | |
.assertBody().contains("pathInfo:'/foo/bar'") | |
.assertBody().contains("pathRemainder:'foo/bar'") | |
.assertBody().contains("pathRemainderUndecoded:'foo/bar'") | |
.assertBody().contains("pathRemainder2:'foo/bar'") | |
.assertBody().contains("requestURI:'/cp/sp/a/foo/bar'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a/foo") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/foo/bar'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:3") | |
; | |
} | |
@Test | |
public void c06() throws Exception { | |
c.get("http://localhost/cp/sp/a/foo/bar/").run() | |
.assertBody().contains("pathInfo:'/foo/bar/'") | |
.assertBody().contains("pathRemainder:'foo/bar/'") | |
.assertBody().contains("pathRemainderUndecoded:'foo/bar/'") | |
.assertBody().contains("pathRemainder2:'foo/bar/'") | |
.assertBody().contains("requestURI:'/cp/sp/a/foo/bar/'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a/foo") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/foo/bar/'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:3") | |
; | |
} | |
@Test | |
public void c07() throws Exception { | |
c.get("http://localhost/cp/sp/a//foo//bar//").run() | |
.assertBody().contains("pathInfo:'//foo//bar//'") | |
.assertBody().contains("pathRemainder:'/foo//bar//'") | |
.assertBody().contains("pathRemainderUndecoded:'/foo//bar//'") | |
.assertBody().contains("pathRemainder2:'/foo//bar//'") | |
.assertBody().contains("requestURI:'/cp/sp/a//foo//bar//'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a/foo/") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a//foo//bar//'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:3") | |
; | |
} | |
@Test | |
public void c08() throws Exception { | |
c.get("http://localhost/cp/sp/a/%20").run() | |
.assertBody().contains("pathInfo:'/ '") | |
.assertBody().contains("pathRemainder:' '") | |
.assertBody().contains("pathRemainderUndecoded:'%20'") | |
.assertBody().contains("pathRemainder2:' '") | |
.assertBody().contains("requestURI:'/cp/sp/a/%20'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/%20'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:3") | |
; | |
} | |
@Test | |
public void c09() throws Exception { | |
c.get("http://localhost/cp/sp/a/+").run() | |
.assertBody().contains("pathInfo:'/ '") | |
.assertBody().contains("pathRemainder:' '") | |
.assertBody().contains("pathRemainderUndecoded:'+'") | |
.assertBody().contains("pathRemainder2:' '") | |
.assertBody().contains("requestURI:'/cp/sp/a/+'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/+'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:3") | |
; | |
} | |
//------------------------------------------------------------------------------------------------------------------ | |
// Child resource and subpath in method | |
//------------------------------------------------------------------------------------------------------------------ | |
@Rest(children={D1.class}) | |
public static class D {} | |
@Rest(path="/a") | |
public static class D1 { | |
@RestMethod(name=GET, path="/subpath/*") | |
public OMap get(RestRequest req, @Path("/*") String r) { | |
return getPaths(req).append("pathRemainder2", r).append("method",4); | |
} | |
} | |
static MockRestClient d = MockRestClient.create(D.class).contextPath("/cp").servletPath("/sp").build(); | |
@Test | |
public void d01() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath").run() | |
.assertBody().contains("pathInfo:'/subpath'") | |
.assertBody().contains("pathRemainder:null") | |
.assertBody().contains("pathRemainderUndecoded:null") | |
.assertBody().contains("pathRemainder2:null") | |
.assertBody().contains("requestURI:'/cp/sp/a/subpath'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/subpath'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:4") | |
; | |
} | |
@Test | |
public void d02() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath/").run() | |
.assertBody().contains("pathInfo:'/subpath/'") | |
.assertBody().contains("pathRemainder:''") | |
.assertBody().contains("pathRemainderUndecoded:''") | |
.assertBody().contains("pathRemainder2:''") | |
.assertBody().contains("requestURI:'/cp/sp/a/subpath/'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/subpath/'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:4") | |
; | |
} | |
@Test | |
public void d03() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath//").run() | |
.assertBody().contains("pathInfo:'/subpath//'") | |
.assertBody().contains("pathRemainder:'/'") | |
.assertBody().contains("pathRemainderUndecoded:'/'") | |
.assertBody().contains("pathRemainder2:'/'") | |
.assertBody().contains("requestURI:'/cp/sp/a/subpath//'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/subpath//'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:4") | |
; | |
} | |
@Test | |
public void d04() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath///").run() | |
.assertBody().contains("pathInfo:'/subpath///'") | |
.assertBody().contains("pathRemainder:'//'") | |
.assertBody().contains("pathRemainderUndecoded:'//'") | |
.assertBody().contains("pathRemainder2:'//'") | |
.assertBody().contains("requestURI:'/cp/sp/a/subpath///'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/subpath///'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:4") | |
; | |
} | |
@Test | |
public void d05() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath/foo/bar").run() | |
.assertBody().contains("pathInfo:'/subpath/foo/bar'") | |
.assertBody().contains("pathRemainder:'foo/bar'") | |
.assertBody().contains("pathRemainderUndecoded:'foo/bar'") | |
.assertBody().contains("pathRemainder2:'foo/bar'") | |
.assertBody().contains("requestURI:'/cp/sp/a/subpath/foo/bar'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a/subpath/foo") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/subpath/foo/bar'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:4") | |
; | |
} | |
@Test | |
public void d06() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath/foo/bar/").run() | |
.assertBody().contains("pathInfo:'/subpath/foo/bar/'") | |
.assertBody().contains("pathRemainder:'foo/bar/'") | |
.assertBody().contains("pathRemainderUndecoded:'foo/bar/'") | |
.assertBody().contains("pathRemainder2:'foo/bar/'") | |
.assertBody().contains("requestURI:'/cp/sp/a/subpath/foo/bar/'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a/subpath/foo") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/subpath/foo/bar/'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:4") | |
; | |
} | |
@Test | |
public void d07() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath//foo//bar//").run() | |
.assertBody().contains("pathInfo:'/subpath//foo//bar//'") | |
.assertBody().contains("pathRemainder:'/foo//bar//'") | |
.assertBody().contains("pathRemainderUndecoded:'/foo//bar//'") | |
.assertBody().contains("pathRemainder2:'/foo//bar//'") | |
.assertBody().contains("requestURI:'/cp/sp/a/subpath//foo//bar//'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a/subpath//foo/") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/subpath//foo//bar//'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:4") | |
; | |
} | |
@Test | |
public void d08() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath/%20").run() | |
.assertBody().contains("pathInfo:'/subpath/ '") | |
.assertBody().contains("pathRemainder:' '") | |
.assertBody().contains("pathRemainderUndecoded:'%20'") | |
.assertBody().contains("pathRemainder2:' '") | |
.assertBody().contains("requestURI:'/cp/sp/a/subpath/%20'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a/subpath") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/subpath/%20'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:4") | |
; | |
} | |
@Test | |
public void d09() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath/+").run() | |
.assertBody().contains("pathInfo:'/subpath/ '") | |
.assertBody().contains("pathRemainder:' '") | |
.assertBody().contains("pathRemainderUndecoded:'+'") | |
.assertBody().contains("pathRemainder2:' '") | |
.assertBody().contains("requestURI:'/cp/sp/a/subpath/+'") | |
.assertBody().contains("requestParentURI:'/cp/sp/a/subpath") | |
.assertBody().contains("requestURL:'http://localhost/cp/sp/a/subpath/+'") | |
.assertBody().contains("servletPath:'/sp/a'") | |
.assertBody().contains("servletURI:'/cp/sp/a'") | |
.assertBody().contains("method:4") | |
; | |
} | |
} |