Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-1770

PageTester causes StringIndexOutOfBoundsException for any page request path with query parameter

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 5.3
    • Fix Version/s: 5.3, 5.4
    • Component/s: tapestry-test
    • Labels:
      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

            • Assignee:
              tawus Taha Hafeez
              Reporter:
              kevin.linyun Kevin Lin
            • Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: