You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "James Holmes (JIRA)" <ji...@apache.org> on 2007/08/13 22:00:37 UTC

[jira] Commented: (WW-1950) UrlHelper.buildUrl does not output port even if forceAddSchemeHostAndPort turned on (TestCase included)

    [ https://issues.apache.org/struts/browse/WW-1950?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_41824 ] 

James Holmes commented on WW-1950:
----------------------------------

The reason why this test fails is because Struts 2 does not currently use the port from the current request to build new URLs. Instead, Struts 2 uses the two configurable ports ("struts.url.http.port" and "struts.url.https.port").

The only scenario where the port from the request should be used is in when not switching between schemes. I have fixed that scenario and added the attached test case. The test case passes with the fix for using the request port when not switching schemes.

> UrlHelper.buildUrl does not output port even if forceAddSchemeHostAndPort turned on (TestCase included)
> -------------------------------------------------------------------------------------------------------
>
>                 Key: WW-1950
>                 URL: https://issues.apache.org/struts/browse/WW-1950
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Views
>    Affects Versions: 2.0.8
>            Reporter: Sami Dalouche
>            Assignee: James Holmes
>             Fix For: 2.1.0
>
>
> If you add this test to UrlHelperTest, you will find out that it fails..
>     public void testForceAddSchemeHostAndPortWithNonStandardPort() throws Exception {
>         String expectedUrl = "http://localhost:9090/contextPath/path1/path2/myAction.action";
>         Mock mockHttpServletRequest = new Mock(HttpServletRequest.class);
>         mockHttpServletRequest.expectAndReturn("getScheme", "http");
>         mockHttpServletRequest.expectAndReturn("getServerName", "localhost");
>         mockHttpServletRequest.expectAndReturn("getContextPath", "/contextPath");
>         mockHttpServletRequest.expectAndReturn("getServerPort", 9090);
>         Mock mockHttpServletResponse = new Mock(HttpServletResponse.class);
>         mockHttpServletResponse.expectAndReturn("encodeURL", expectedUrl, expectedUrl);
>         String result = UrlHelper.buildUrl("/path1/path2/myAction.action", (HttpServletRequest) mockHttpServletRequest.proxy(), (HttpServletResponse)mockHttpServletResponse.proxy(), null, "http", true, true, true);
>         assertEquals(expectedUrl, result);
>         mockHttpServletRequest.verify();
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.