Uploaded image for project: 'Tapestry'
  1. Tapestry
  2. TAPESTRY-2785

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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • None
    • unspecified
    • tapestry-test
    • None

    Description

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            kevin.linyun Kevin Lin
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: