[T5.3] - PageTester causes StringIndexOutOfBoundsException for any page request 
path with query parameter
---------------------------------------------------------------------------------------------------------

                 Key: TAPESTRY-2785
                 URL: https://issues.apache.org/jira/browse/TAPESTRY-2785
             Project: Tapestry
          Issue Type: Bug
          Components: tapestry-test
            Reporter: Kevin Lin


I was running a web test using the latest source code from testify on a T5.3 
application. And I get the following exception for any tests that contains a 
request/event:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.substring(String.java:1937)
        at java.lang.String.substring(String.java:1904)
        at 
org.apache.tapestry5.test.PageTester.setupRequestFromURI(PageTester.java:345)
        at 
org.apache.tapestry5.test.PageTester.setupRequestFromLink(PageTester.java:331)
        at 
org.apache.tapestry5.test.PageTester.runComponentEventRequest(PageTester.java:313)
        at 
org.apache.tapestry5.test.PageTester.clickLinkAndReturnResponse(PageTester.java:264)
        ...

At bit digging through the code shows that there is mostly a coding bug in 
org.apache.tapestry5.test.PageTester#setupRequestFromURI()  
(PageTester.java:345):
--------------------
    private void setupRequestFromURI(String URI)
    {
        String linkPath = stripContextFromPath(URI);
        int comma = linkPath.indexOf('?');
        String path = comma < 0 ? linkPath : linkPath.substring(0, comma);
        request.clear().setPath(path);
        if (comma > 0)
            decodeParametersIntoRequest(path.substring(comma + 1));
    }
--------------------

The path variable is the URL path with the event parameters (?xxx) stripped, 
trying to substring it again cause the IndexOutOfBounds exception. The correct 
variable to pass should instead be: linkPath. A comparison with the same class 
file confirms my findings.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to