2626
2727import jakarta .servlet .ServletContext ;
2828import jakarta .servlet .http .Cookie ;
29+ import jakarta .servlet .http .HttpServletRequest ;
2930import jakarta .servlet .http .HttpSession ;
3031import org .apache .commons .io .IOUtils ;
3132import org .apache .http .auth .UsernamePasswordCredentials ;
@@ -339,22 +340,6 @@ void buildRequestLocalName() {
339340 assertThat (actualRequest .getLocalName ()).isEqualTo ("localhost" );
340341 }
341342
342- @ Test
343- void buildRequestLocalPortMatchingDefault () throws Exception {
344- webRequest .setUrl (new URL ("http://localhost:80/test/this/here" ));
345- MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
346-
347- assertThat (actualRequest .getLocalPort ()).isEqualTo (-1 );
348- }
349-
350- @ Test
351- void buildRequestLocalMissing () throws Exception {
352- webRequest .setUrl (new URL ("http://localhost/test/this" ));
353- MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
354-
355- assertThat (actualRequest .getLocalPort ()).isEqualTo (-1 );
356- }
357-
358343 @ Test
359344 void buildRequestMethods () {
360345 for (HttpMethod expectedMethod : HttpMethod .values ()) {
@@ -534,71 +519,94 @@ void buildRequestReader() throws Exception {
534519 }
535520
536521 @ Test
537- void buildRequestRemoteAddr () {
522+ void buildRequestRemoteAddressHostAndPort () {
538523 MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
539524
540525 assertThat (actualRequest .getRemoteAddr ()).isEqualTo ("127.0.0.1" );
526+ assertThat (actualRequest .getRemoteHost ()).isEqualTo ("localhost" );
527+ assertThat (actualRequest .getRemotePort ()).isEqualTo (80 );
541528 }
542529
543530 @ Test
544- void buildRequestRemoteHost () {
531+ void buildRequestRequestedSessionId () {
532+ String sessionId = "session-id" ;
533+ webRequest .setAdditionalHeader ("Cookie" , "JSESSIONID=" + sessionId );
545534 MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
546535
547- assertThat (actualRequest .getRemoteAddr ()).isEqualTo ("127.0.0.1" );
536+ assertThat (actualRequest .getRequestedSessionId ()).isEqualTo (sessionId );
548537 }
549538
550539 @ Test
551- void buildRequestRemotePort () throws Exception {
552- webRequest .setUrl (new URL ("http://localhost:80/test/this/here" ));
540+ void buildRequestRequestedSessionIdNull () {
553541 MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
554542
555- assertThat (actualRequest .getRemotePort ()).isEqualTo ( 80 );
543+ assertThat (actualRequest .getRequestedSessionId ()).isNull ( );
556544 }
557545
558546 @ Test
559- void buildRequestRemotePort8080 () throws Exception {
560- webRequest .setUrl (new URL ("https://example.com:8080/" ));
547+ void buildRequestUri () {
548+ String uri = requestBuilder .buildRequest (servletContext ).getRequestURI ();
549+ assertThat (uri ).isEqualTo ("/test/this/here" );
550+ }
561551
562- MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
552+ @ Test
553+ void buildRequestWithSchemeHttpAndDefaultPort () throws Exception {
554+ webRequest .setUrl (new URL ("http://localhost/test" ));
555+ var request = requestBuilder .buildRequest (servletContext );
563556
564- assertThat ( actualRequest . getRemotePort ()). isEqualTo ( 8080 );
557+ assertUrlAndPorts ( request , "http://localhost/test" , 80 , false );
565558 }
566559
567560 @ Test
568- void buildRequestRemotePort80WithDefault () throws Exception {
569- webRequest .setUrl (new URL ("http://company.example/" ));
570-
571- MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
561+ void buildRequestWithSchemeHttpAndExplicitDefaultPort () throws Exception {
562+ webRequest .setUrl (new URL ("http://localhost:80/test" ));
563+ var request = requestBuilder .buildRequest (servletContext );
572564
573- assertThat ( actualRequest . getRemotePort ()). isEqualTo ( 80 );
565+ assertUrlAndPorts ( request , "http://localhost/test" , 80 , false );
574566 }
575567
576568 @ Test
577- void buildRequestRequestedSessionId () {
578- String sessionId = "session-id" ;
579- webRequest .setAdditionalHeader ("Cookie" , "JSESSIONID=" + sessionId );
580- MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
569+ void buildRequestWithSchemeHttpAndExplicitPort () throws Exception {
570+ webRequest .setUrl (new URL ("http://localhost:8081/test" ));
571+ var request = requestBuilder .buildRequest (servletContext );
581572
582- assertThat (actualRequest .getRequestedSessionId ()).isEqualTo (sessionId );
573+ assertUrlAndPorts (request , "http://localhost:8081/test" , 8081 , false );
574+
575+ // Unlikely scheme/port combination:
576+ webRequest .setUrl (new URL ("http://localhost:443/test" ));
577+ request = requestBuilder .buildRequest (servletContext );
578+
579+ assertUrlAndPorts (request , "http://localhost:443/test" , 443 , false );
583580 }
584581
585582 @ Test
586- void buildRequestRequestedSessionIdNull () {
587- MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
583+ void buildRequestWithSchemeHttpsAndDefaultPort () throws Exception {
584+ webRequest .setUrl (new URL ("https://localhost/test" ));
585+ var request = requestBuilder .buildRequest (servletContext );
588586
589- assertThat ( actualRequest . getRequestedSessionId ()). isNull ( );
587+ assertUrlAndPorts ( request , "https://localhost/test" , 443 , true );
590588 }
591589
592590 @ Test
593- void buildRequestUri () {
594- String uri = requestBuilder .buildRequest (servletContext ).getRequestURI ();
595- assertThat (uri ).isEqualTo ("/test/this/here" );
591+ void buildRequestWithSchemeHttpsAndExplicitDefaultPort () throws Exception {
592+ webRequest .setUrl (new URL ("https://localhost:443/test" ));
593+ var request = requestBuilder .buildRequest (servletContext );
594+
595+ assertUrlAndPorts (request , "https://localhost/test" , 443 , true );
596596 }
597597
598598 @ Test
599- void buildRequestUrl () {
600- String uri = requestBuilder .buildRequest (servletContext ).getRequestURL ().toString ();
601- assertThat (uri ).isEqualTo ("https://example.com/test/this/here" );
599+ void buildRequestWithSchemeHttpsAndExplicitPort () throws Exception {
600+ webRequest .setUrl (new URL ("https://localhost:8443/test" ));
601+ var request = requestBuilder .buildRequest (servletContext );
602+
603+ assertUrlAndPorts (request , "https://localhost:8443/test" , 8443 , true );
604+
605+ // Unlikely scheme/port combination:
606+ webRequest .setUrl (new URL ("https://localhost:80/test" ));
607+ request = requestBuilder .buildRequest (servletContext );
608+
609+ assertUrlAndPorts (request , "https://localhost:80/test" , 80 , true );
602610 }
603611
604612 @ Test
@@ -624,30 +632,6 @@ void buildRequestServerName() {
624632 assertThat (actualRequest .getServerName ()).isEqualTo ("example.com" );
625633 }
626634
627- @ Test
628- void buildRequestServerPort () throws Exception {
629- webRequest .setUrl (new URL ("http://localhost:8080/test/this/here" ));
630- MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
631-
632- assertThat (actualRequest .getServerPort ()).isEqualTo (8080 );
633- }
634-
635- @ Test
636- void buildRequestServerPortMatchingDefault () throws Exception {
637- webRequest .setUrl (new URL ("http://localhost/test/this/here" ));
638- MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
639-
640- assertThat (actualRequest .getServerPort ()).isEqualTo (-1 );
641- }
642-
643- @ Test
644- void buildRequestServerPortDefault () throws Exception {
645- webRequest .setUrl (new URL ("https://example.com/" ));
646- MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
647-
648- assertThat (actualRequest .getServerPort ()).isEqualTo (-1 );
649- }
650-
651635 @ Test
652636 void buildRequestServletContext () {
653637 MockHttpServletRequest actualRequest = requestBuilder .buildRequest (servletContext );
@@ -910,4 +894,21 @@ private String getContextPath() {
910894 return (String ) ReflectionTestUtils .getField (requestBuilder , "contextPath" );
911895 }
912896
897+ private static void assertUrlAndPorts (HttpServletRequest request , String url , int serverPort , boolean secure ) {
898+ assertThat (request .getRequestURL ()).asString ().as ("url" ).isEqualTo (url );
899+ assertThat (request .getServerPort ()).as ("server port" ).isEqualTo (serverPort );
900+ // In a mocked request, the local post is always the same as the server port.
901+ assertThat (request .getLocalPort ()).as ("local port" ).isEqualTo (serverPort );
902+ // Remote Port is always 80 (MockHttpServletRequest.DEFAULT_SERVER_PORT),
903+ // since a mocked request does not influence the remote host, port, or address.
904+ assertThat (request .getRemotePort ()).as ("remote port" ).isEqualTo (80 );
905+
906+ if (secure ) {
907+ assertThat (request .isSecure ()).as ("secure" ).isTrue ();
908+ }
909+ else {
910+ assertThat (request .isSecure ()).as ("secure" ).isFalse ();
911+ }
912+ }
913+
913914}
0 commit comments