84
84
import static org .hamcrest .Matchers .containsString ;
85
85
import static org .hamcrest .Matchers .is ;
86
86
import static org .hamcrest .Matchers .not ;
87
+ import static org .hamcrest .Matchers .nullValue ;
87
88
import static org .hamcrest .Matchers .startsWith ;
88
89
import static org .junit .jupiter .api .Assertions .assertEquals ;
89
90
import static org .junit .jupiter .api .Assertions .assertFalse ;
@@ -874,14 +875,14 @@ public boolean check(HttpServletRequest request, HttpServletResponse response)
874
875
}
875
876
876
877
@ Test
877
- public void testConnectRequestURL () throws Exception
878
+ public void testConnectRequestURLSameAsHost () throws Exception
878
879
{
879
880
final AtomicReference <String > resultRequestURL = new AtomicReference <>();
880
881
final AtomicReference <String > resultRequestURI = new AtomicReference <>();
881
882
_handler ._checker = (request , response ) ->
882
883
{
883
- resultRequestURL .set ("" + request .getRequestURL ());
884
- resultRequestURI .set ("" + request .getRequestURI ());
884
+ resultRequestURL .set (request .getRequestURL (). toString ());
885
+ resultRequestURI .set (request .getRequestURI ());
885
886
return true ;
886
887
};
887
888
@@ -892,8 +893,31 @@ public void testConnectRequestURL() throws Exception
892
893
"\n " );
893
894
HttpTester .Response response = HttpTester .parseResponse (rawResponse );
894
895
assertThat (response .getStatus (), is (HttpStatus .OK_200 ));
895
- assertThat (resultRequestURL .get (), is ("http://myhost:9999" ));
896
- assertThat (resultRequestURI .get (), is ("myhost:9999" ));
896
+ assertThat ("request.getRequestURL" , resultRequestURL .get (), is ("http://myhost:9999" ));
897
+ assertThat ("request.getRequestURI" , resultRequestURI .get (), is (nullValue ()));
898
+ }
899
+
900
+ @ Test
901
+ public void testConnectRequestURLDifferentThanHost () throws Exception
902
+ {
903
+ final AtomicReference <String > resultRequestURL = new AtomicReference <>();
904
+ final AtomicReference <String > resultRequestURI = new AtomicReference <>();
905
+ _handler ._checker = (request , response ) ->
906
+ {
907
+ resultRequestURL .set (request .getRequestURL ().toString ());
908
+ resultRequestURI .set (request .getRequestURI ());
909
+ return true ;
910
+ };
911
+
912
+ String rawResponse = _connector .getResponse (
913
+ "CONNECT myhost:9999 HTTP/1.1\n " +
914
+ "Host: otherhost:8888\n " + // per spec, this is ignored if request-target is authority-form
915
+ "Connection: close\n " +
916
+ "\n " );
917
+ HttpTester .Response response = HttpTester .parseResponse (rawResponse );
918
+ assertThat (response .getStatus (), is (HttpStatus .OK_200 ));
919
+ assertThat ("request.getRequestURL" , resultRequestURL .get (), is ("http://myhost:9999" ));
920
+ assertThat ("request.getRequestURI" , resultRequestURI .get (), is (nullValue ()));
897
921
}
898
922
899
923
@ Test
0 commit comments