// *************************************************************************************************************************** | |
// * 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.HttpMethodName.*; | |
import org.apache.juneau.*; | |
import org.apache.juneau.http.annotation.Path; | |
import org.apache.juneau.rest.annotation.*; | |
import org.apache.juneau.rest.mock2.*; | |
import org.junit.*; | |
import org.junit.runners.*; | |
/** | |
* Tests various aspects of URL path parts. | |
*/ | |
@SuppressWarnings({}) | |
@FixMethodOrder(MethodSorters.NAME_ASCENDING) | |
public class PathsTest { | |
//================================================================================================================= | |
// Setup | |
//================================================================================================================= | |
static ObjectMap getPaths(RestRequest req) { | |
return new ObjectMap() | |
.append("pathInfo", req.getPathInfo()) | |
.append("pathRemainder", req.getPathMatch().getRemainder()) | |
.append("pathRemainderUndecoded", req.getPathMatch().getRemainderUndecoded()) | |
.append("requestURI", req.getRequestURI()) | |
.append("requestParentURI", req.getUriContext().getRootRelativePathInfoParent()) | |
.append("requestURL", req.getRequestURL()) | |
.append("servletPath", req.getServletPath()) | |
.append("servletURI", req.getUriContext().getRootRelativeServletPath()) | |
.append("servletParentURI", req.getUriContext().getRootRelativeServletPathParent()); | |
} | |
//================================================================================================================= | |
// No subpath | |
//================================================================================================================= | |
@Rest | |
public static class A { | |
@RestMethod(name=GET,path="/*") | |
public ObjectMap get(RestRequest req, @Path("/*") String r) { | |
return getPaths(req).append("pathRemainder2", r).append("method",1); | |
} | |
} | |
static MockRest a = MockRest.build(A.class, null); | |
@Test | |
public void a01() throws Exception { | |
a.get("http://localhost/cp/sp").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:null") | |
.assertBodyContains("pathRemainder:null") | |
.assertBodyContains("pathRemainderUndecoded:null") | |
.assertBodyContains("pathRemainder2:null") | |
.assertBodyContains("requestURI:'/cp/sp'") | |
.assertBodyContains("requestParentURI:'/cp'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:1") | |
; | |
} | |
@Test | |
public void a02() throws Exception { | |
a.get("http://localhost/cp/sp/").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/'") | |
.assertBodyContains("pathRemainder:''") | |
.assertBodyContains("pathRemainderUndecoded:''") | |
.assertBodyContains("pathRemainder2:''") | |
.assertBodyContains("requestURI:'/cp/sp/'") | |
.assertBodyContains("requestParentURI:'/cp'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:1") | |
; | |
} | |
@Test | |
public void a03() throws Exception { | |
a.get("http://localhost/cp/sp//").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'//'") | |
.assertBodyContains("pathRemainder:'/'") | |
.assertBodyContains("pathRemainderUndecoded:'/'") | |
.assertBodyContains("pathRemainder2:'/'") | |
.assertBodyContains("requestURI:'/cp/sp//'") | |
.assertBodyContains("requestParentURI:'/cp'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp//'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:1") | |
; | |
} | |
@Test | |
public void a04() throws Exception { | |
a.get("http://localhost/cp/sp///").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'///'") | |
.assertBodyContains("pathRemainder:'//'") | |
.assertBodyContains("pathRemainderUndecoded:'//'") | |
.assertBodyContains("pathRemainder2:'//'") | |
.assertBodyContains("requestURI:'/cp/sp///'") | |
.assertBodyContains("requestParentURI:'/cp'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp///'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:1") | |
; | |
} | |
@Test | |
public void a05() throws Exception { | |
a.get("http://localhost/cp/sp/foo/bar").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/foo/bar'") | |
.assertBodyContains("pathRemainder:'foo/bar'") | |
.assertBodyContains("pathRemainderUndecoded:'foo/bar'") | |
.assertBodyContains("pathRemainder2:'foo/bar'") | |
.assertBodyContains("requestURI:'/cp/sp/foo/bar'") | |
.assertBodyContains("requestParentURI:'/cp/sp/foo'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/foo/bar'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:1") | |
; | |
} | |
@Test | |
public void a06() throws Exception { | |
a.get("http://localhost/cp/sp/foo/bar/").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/foo/bar/'") | |
.assertBodyContains("pathRemainder:'foo/bar/'") | |
.assertBodyContains("pathRemainderUndecoded:'foo/bar/'") | |
.assertBodyContains("pathRemainder2:'foo/bar/'") | |
.assertBodyContains("requestURI:'/cp/sp/foo/bar/'") | |
.assertBodyContains("requestParentURI:'/cp/sp/foo'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/foo/bar/'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:1") | |
; | |
} | |
@Test | |
public void a07() throws Exception { | |
a.get("http://localhost/cp/sp//foo//bar//").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'//foo//bar//'") | |
.assertBodyContains("pathRemainder:'/foo//bar//'") | |
.assertBodyContains("pathRemainderUndecoded:'/foo//bar//'") | |
.assertBodyContains("pathRemainder2:'/foo//bar//'") | |
.assertBodyContains("requestURI:'/cp/sp//foo//bar//'") | |
.assertBodyContains("requestParentURI:'/cp/sp/foo/'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp//foo//bar//'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:1") | |
; | |
} | |
@Test | |
public void a08() throws Exception { | |
a.get("http://localhost/cp/sp/%20").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/ '") | |
.assertBodyContains("pathRemainder:' '") | |
.assertBodyContains("pathRemainderUndecoded:'%20'") | |
.assertBodyContains("pathRemainder2:' '") | |
.assertBodyContains("requestURI:'/cp/sp/%20'") | |
.assertBodyContains("requestParentURI:'/cp/sp") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/%20'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:1") | |
; | |
} | |
@Test | |
public void a09() throws Exception { | |
a.get("http://localhost/cp/sp/+").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/ '") | |
.assertBodyContains("pathRemainder:' '") | |
.assertBodyContains("pathRemainderUndecoded:'+'") | |
.assertBodyContains("pathRemainder2:' '") | |
.assertBodyContains("requestURI:'/cp/sp/+'") | |
.assertBodyContains("requestParentURI:'/cp/sp") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/+'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:1") | |
; | |
} | |
//================================================================================================================= | |
// Subpath in method | |
//================================================================================================================= | |
public static class B { | |
@RestMethod(name=GET, path="/subpath/*") | |
public ObjectMap get(RestRequest req, @Path("/*") String r) { | |
return getPaths(req).append("pathRemainder2", r).append("method",2); | |
} | |
} | |
static MockRest b = MockRest.build(B.class, null); | |
@Test | |
public void b01() throws Exception { | |
b.get("http://localhost/cp/sp/subpath").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath'") | |
.assertBodyContains("pathRemainder:null") | |
.assertBodyContains("pathRemainderUndecoded:null") | |
.assertBodyContains("pathRemainder2:null") | |
.assertBodyContains("requestURI:'/cp/sp/subpath'") | |
.assertBodyContains("requestParentURI:'/cp/sp'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/subpath'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:2") | |
; | |
} | |
@Test | |
public void b02() throws Exception { | |
b.get("http://localhost/cp/sp/subpath/").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath/'") | |
.assertBodyContains("pathRemainder:''") | |
.assertBodyContains("pathRemainderUndecoded:''") | |
.assertBodyContains("pathRemainder2:''") | |
.assertBodyContains("requestURI:'/cp/sp/subpath/'") | |
.assertBodyContains("requestParentURI:'/cp/sp'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/subpath/'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:2") | |
; | |
} | |
@Test | |
public void b03() throws Exception { | |
b.get("http://localhost/cp/sp/subpath//").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath//'") | |
.assertBodyContains("pathRemainder:'/'") | |
.assertBodyContains("pathRemainderUndecoded:'/'") | |
.assertBodyContains("pathRemainder2:'/'") | |
.assertBodyContains("requestURI:'/cp/sp/subpath//'") | |
.assertBodyContains("requestParentURI:'/cp/sp'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/subpath//'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:2") | |
; | |
} | |
@Test | |
public void b04() throws Exception { | |
b.get("http://localhost/cp/sp/subpath///").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath///'") | |
.assertBodyContains("pathRemainder:'//'") | |
.assertBodyContains("pathRemainderUndecoded:'//'") | |
.assertBodyContains("pathRemainder2:'//'") | |
.assertBodyContains("requestURI:'/cp/sp/subpath///'") | |
.assertBodyContains("requestParentURI:'/cp/sp'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/subpath///'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:2") | |
; | |
} | |
@Test | |
public void b05() throws Exception { | |
b.get("http://localhost/cp/sp/subpath/foo/bar").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath/foo/bar'") | |
.assertBodyContains("pathRemainder:'foo/bar'") | |
.assertBodyContains("pathRemainderUndecoded:'foo/bar'") | |
.assertBodyContains("pathRemainder2:'foo/bar'") | |
.assertBodyContains("requestURI:'/cp/sp/subpath/foo/bar'") | |
.assertBodyContains("requestParentURI:'/cp/sp/subpath/foo'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/subpath/foo/bar'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:2") | |
; | |
} | |
@Test | |
public void b06() throws Exception { | |
b.get("http://localhost/cp/sp/subpath/foo/bar/").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath/foo/bar/'") | |
.assertBodyContains("pathRemainder:'foo/bar/'") | |
.assertBodyContains("pathRemainderUndecoded:'foo/bar/'") | |
.assertBodyContains("pathRemainder2:'foo/bar/'") | |
.assertBodyContains("requestURI:'/cp/sp/subpath/foo/bar/'") | |
.assertBodyContains("requestParentURI:'/cp/sp/subpath/foo'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/subpath/foo/bar/'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:2") | |
; | |
} | |
@Test | |
public void b07() throws Exception { | |
b.get("http://localhost/cp/sp/subpath//foo//bar//").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath//foo//bar//'") | |
.assertBodyContains("pathRemainder:'/foo//bar//'") | |
.assertBodyContains("pathRemainderUndecoded:'/foo//bar//'") | |
.assertBodyContains("pathRemainder2:'/foo//bar//'") | |
.assertBodyContains("requestURI:'/cp/sp/subpath//foo//bar//'") | |
.assertBodyContains("requestParentURI:'/cp/sp/subpath//foo/'") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/subpath//foo//bar//'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:2") | |
; | |
} | |
@Test | |
public void b08() throws Exception { | |
b.get("http://localhost/cp/sp/subpath/%20").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath/ '") | |
.assertBodyContains("pathRemainder:' '") | |
.assertBodyContains("pathRemainderUndecoded:'%20'") | |
.assertBodyContains("pathRemainder2:' '") | |
.assertBodyContains("requestURI:'/cp/sp/subpath/%20'") | |
.assertBodyContains("requestParentURI:'/cp/sp/subpath") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/subpath/%20'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:2") | |
; | |
} | |
@Test | |
public void b09() throws Exception { | |
b.get("http://localhost/cp/sp/subpath/+").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath/ '") | |
.assertBodyContains("pathRemainder:' '") | |
.assertBodyContains("pathRemainderUndecoded:'+'") | |
.assertBodyContains("pathRemainder2:' '") | |
.assertBodyContains("requestURI:'/cp/sp/subpath/+'") | |
.assertBodyContains("requestParentURI:'/cp/sp/subpath") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/subpath/+'") | |
.assertBodyContains("servletPath:'/sp'") | |
.assertBodyContains("servletURI:'/cp/sp'") | |
.assertBodyContains("method:2") | |
; | |
} | |
//================================================================================================================= | |
// Child resource | |
//================================================================================================================= | |
@Rest(children={C01.class}) | |
public static class C {} | |
@Rest(path="/a") | |
public static class C01 { | |
@RestMethod(name=GET,path="/*") | |
public ObjectMap get(RestRequest req, @Path("/*") String r) { | |
return getPaths(req).append("pathRemainder2", r).append("method",3); | |
} | |
} | |
static MockRest c = MockRest.build(C.class, null); | |
@Test | |
public void c01() throws Exception { | |
c.get("http://localhost/cp/sp/a").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:null") | |
.assertBodyContains("pathRemainder:null") | |
.assertBodyContains("pathRemainderUndecoded:null") | |
.assertBodyContains("pathRemainder2:null") | |
.assertBodyContains("requestURI:'/cp/sp/a'") | |
.assertBodyContains("requestParentURI:'/cp/sp") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:3") | |
; | |
} | |
@Test | |
public void c02() throws Exception { | |
c.get("http://localhost/cp/sp/a/").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/'") | |
.assertBodyContains("pathRemainder:''") | |
.assertBodyContains("pathRemainderUndecoded:''") | |
.assertBodyContains("pathRemainder2:''") | |
.assertBodyContains("requestURI:'/cp/sp/a/'") | |
.assertBodyContains("requestParentURI:'/cp/sp") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:3") | |
; | |
} | |
@Test | |
public void c03() throws Exception { | |
c.get("http://localhost/cp/sp/a//").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'//'") | |
.assertBodyContains("pathRemainder:'/'") | |
.assertBodyContains("pathRemainderUndecoded:'/'") | |
.assertBodyContains("pathRemainder2:'/'") | |
.assertBodyContains("requestURI:'/cp/sp/a//'") | |
.assertBodyContains("requestParentURI:'/cp/sp") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a//'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:3") | |
; | |
} | |
@Test | |
public void c04() throws Exception { | |
c.get("http://localhost/cp/sp/a///").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'///'") | |
.assertBodyContains("pathRemainder:'//'") | |
.assertBodyContains("pathRemainderUndecoded:'//'") | |
.assertBodyContains("pathRemainder2:'//'") | |
.assertBodyContains("requestURI:'/cp/sp/a///'") | |
.assertBodyContains("requestParentURI:'/cp/sp") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a///'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:3") | |
; | |
} | |
@Test | |
public void c05() throws Exception { | |
c.get("http://localhost/cp/sp/a/foo/bar").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/foo/bar'") | |
.assertBodyContains("pathRemainder:'foo/bar'") | |
.assertBodyContains("pathRemainderUndecoded:'foo/bar'") | |
.assertBodyContains("pathRemainder2:'foo/bar'") | |
.assertBodyContains("requestURI:'/cp/sp/a/foo/bar'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a/foo") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/foo/bar'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:3") | |
; | |
} | |
@Test | |
public void c06() throws Exception { | |
c.get("http://localhost/cp/sp/a/foo/bar/").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/foo/bar/'") | |
.assertBodyContains("pathRemainder:'foo/bar/'") | |
.assertBodyContains("pathRemainderUndecoded:'foo/bar/'") | |
.assertBodyContains("pathRemainder2:'foo/bar/'") | |
.assertBodyContains("requestURI:'/cp/sp/a/foo/bar/'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a/foo") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/foo/bar/'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:3") | |
; | |
} | |
@Test | |
public void c07() throws Exception { | |
c.get("http://localhost/cp/sp/a//foo//bar//").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'//foo//bar//'") | |
.assertBodyContains("pathRemainder:'/foo//bar//'") | |
.assertBodyContains("pathRemainderUndecoded:'/foo//bar//'") | |
.assertBodyContains("pathRemainder2:'/foo//bar//'") | |
.assertBodyContains("requestURI:'/cp/sp/a//foo//bar//'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a/foo/") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a//foo//bar//'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:3") | |
; | |
} | |
@Test | |
public void c08() throws Exception { | |
c.get("http://localhost/cp/sp/a/%20").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/ '") | |
.assertBodyContains("pathRemainder:' '") | |
.assertBodyContains("pathRemainderUndecoded:'%20'") | |
.assertBodyContains("pathRemainder2:' '") | |
.assertBodyContains("requestURI:'/cp/sp/a/%20'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/%20'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:3") | |
; | |
} | |
@Test | |
public void c09() throws Exception { | |
c.get("http://localhost/cp/sp/a/+").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/ '") | |
.assertBodyContains("pathRemainder:' '") | |
.assertBodyContains("pathRemainderUndecoded:'+'") | |
.assertBodyContains("pathRemainder2:' '") | |
.assertBodyContains("requestURI:'/cp/sp/a/+'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/+'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:3") | |
; | |
} | |
//================================================================================================================= | |
// Child resource and subpath in method | |
//================================================================================================================= | |
@Rest(children={D01.class}) | |
public static class D {} | |
@Rest(path="/a") | |
public static class D01 { | |
@RestMethod(name=GET, path="/subpath/*") | |
public ObjectMap get(RestRequest req, @Path("/*") String r) { | |
return getPaths(req).append("pathRemainder2", r).append("method",4); | |
} | |
} | |
static MockRest d = MockRest.build(D.class, null); | |
@Test | |
public void d01() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath'") | |
.assertBodyContains("pathRemainder:null") | |
.assertBodyContains("pathRemainderUndecoded:null") | |
.assertBodyContains("pathRemainder2:null") | |
.assertBodyContains("requestURI:'/cp/sp/a/subpath'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/subpath'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:4") | |
; | |
} | |
@Test | |
public void d02() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath/").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath/'") | |
.assertBodyContains("pathRemainder:''") | |
.assertBodyContains("pathRemainderUndecoded:''") | |
.assertBodyContains("pathRemainder2:''") | |
.assertBodyContains("requestURI:'/cp/sp/a/subpath/'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/subpath/'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:4") | |
; | |
} | |
@Test | |
public void d03() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath//").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath//'") | |
.assertBodyContains("pathRemainder:'/'") | |
.assertBodyContains("pathRemainderUndecoded:'/'") | |
.assertBodyContains("pathRemainder2:'/'") | |
.assertBodyContains("requestURI:'/cp/sp/a/subpath//'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/subpath//'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:4") | |
; | |
} | |
@Test | |
public void d04() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath///").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath///'") | |
.assertBodyContains("pathRemainder:'//'") | |
.assertBodyContains("pathRemainderUndecoded:'//'") | |
.assertBodyContains("pathRemainder2:'//'") | |
.assertBodyContains("requestURI:'/cp/sp/a/subpath///'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/subpath///'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:4") | |
; | |
} | |
@Test | |
public void d05() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath/foo/bar").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath/foo/bar'") | |
.assertBodyContains("pathRemainder:'foo/bar'") | |
.assertBodyContains("pathRemainderUndecoded:'foo/bar'") | |
.assertBodyContains("pathRemainder2:'foo/bar'") | |
.assertBodyContains("requestURI:'/cp/sp/a/subpath/foo/bar'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a/subpath/foo") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/subpath/foo/bar'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:4") | |
; | |
} | |
@Test | |
public void d06() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath/foo/bar/").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath/foo/bar/'") | |
.assertBodyContains("pathRemainder:'foo/bar/'") | |
.assertBodyContains("pathRemainderUndecoded:'foo/bar/'") | |
.assertBodyContains("pathRemainder2:'foo/bar/'") | |
.assertBodyContains("requestURI:'/cp/sp/a/subpath/foo/bar/'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a/subpath/foo") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/subpath/foo/bar/'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:4") | |
; | |
} | |
@Test | |
public void d07() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath//foo//bar//").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath//foo//bar//'") | |
.assertBodyContains("pathRemainder:'/foo//bar//'") | |
.assertBodyContains("pathRemainderUndecoded:'/foo//bar//'") | |
.assertBodyContains("pathRemainder2:'/foo//bar//'") | |
.assertBodyContains("requestURI:'/cp/sp/a/subpath//foo//bar//'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a/subpath//foo/") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/subpath//foo//bar//'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:4") | |
; | |
} | |
@Test | |
public void d08() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath/%20").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath/ '") | |
.assertBodyContains("pathRemainder:' '") | |
.assertBodyContains("pathRemainderUndecoded:'%20'") | |
.assertBodyContains("pathRemainder2:' '") | |
.assertBodyContains("requestURI:'/cp/sp/a/subpath/%20'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a/subpath") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/subpath/%20'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:4") | |
; | |
} | |
@Test | |
public void d09() throws Exception { | |
d.get("http://localhost/cp/sp/a/subpath/+").contextPath("/cp").servletPath("/sp").execute() | |
.assertBodyContains("pathInfo:'/subpath/ '") | |
.assertBodyContains("pathRemainder:' '") | |
.assertBodyContains("pathRemainderUndecoded:'+'") | |
.assertBodyContains("pathRemainder2:' '") | |
.assertBodyContains("requestURI:'/cp/sp/a/subpath/+'") | |
.assertBodyContains("requestParentURI:'/cp/sp/a/subpath") | |
.assertBodyContains("requestURL:'http://localhost/cp/sp/a/subpath/+'") | |
.assertBodyContains("servletPath:'/sp/a'") | |
.assertBodyContains("servletURI:'/cp/sp/a'") | |
.assertBodyContains("method:4") | |
; | |
} | |
} |