@@ -125,9 +125,7 @@ public void fromOpaqueUri() throws URISyntaxException {
125
125
assertEquals ("Invalid result URI" , uri , result .toUri ());
126
126
}
127
127
128
- // SPR-9317
129
-
130
- @ Test
128
+ @ Test // SPR-9317
131
129
public void fromUriEncodedQuery () throws URISyntaxException {
132
130
URI uri = new URI ("http://www.example.org/?param=aGVsbG9Xb3JsZA%3D%3D" );
133
131
String fromUri = UriComponentsBuilder .fromUri (uri ).build ().getQueryParams ().get ("param" ).get (0 );
@@ -182,9 +180,7 @@ public void fromUriString() {
182
180
assertEquals ("28" , result .getFragment ());
183
181
}
184
182
185
- // SPR-9832
186
-
187
- @ Test
183
+ @ Test // SPR-9832
188
184
public void fromUriStringQueryParamWithReservedCharInValue () throws URISyntaxException {
189
185
String uri = "http://www.google.com/ig/calculator?q=1USD=?EUR" ;
190
186
UriComponents result = UriComponentsBuilder .fromUriString (uri ).build ();
@@ -193,41 +189,35 @@ public void fromUriStringQueryParamWithReservedCharInValue() throws URISyntaxExc
193
189
assertEquals ("1USD=?EUR" , result .getQueryParams ().getFirst ("q" ));
194
190
}
195
191
196
- // SPR-10779
197
-
198
- @ Test
192
+ @ Test // SPR-10779
199
193
public void fromHttpUrlStringCaseInsesitiveScheme () {
200
194
assertEquals ("http" , UriComponentsBuilder .fromHttpUrl ("HTTP://www.google.com" ).build ().getScheme ());
201
195
assertEquals ("https" , UriComponentsBuilder .fromHttpUrl ("HTTPS://www.google.com" ).build ().getScheme ());
202
196
}
203
197
204
- // SPR-10539
205
198
206
- @ Test (expected = IllegalArgumentException .class )
199
+
200
+ @ Test (expected = IllegalArgumentException .class ) // SPR-10539
207
201
public void fromHttpUrlStringInvalidIPv6Host () throws URISyntaxException {
208
202
UriComponentsBuilder .fromHttpUrl ("http://[1abc:2abc:3abc::5ABC:6abc:8080/resource" ).build ().encode ();
209
203
}
210
204
211
- // SPR-10539
212
-
213
- @ Test
205
+ @ Test // SPR-10539
214
206
public void fromUriStringIPv6Host () throws URISyntaxException {
215
- UriComponents result = UriComponentsBuilder
216
- .fromUriString ("http://[1abc:2abc:3abc::5ABC:6abc]:8080/resource" ).build ().encode ();
217
- assertEquals ("[1abc:2abc:3abc::5ABC:6abc]" , result .getHost ());
207
+ UriComponents result = UriComponentsBuilder
208
+ .fromUriString ("http://[1abc:2abc:3abc::5ABC:6abc]:8080/resource" ).build ().encode ();
209
+ assertEquals ("[1abc:2abc:3abc::5ABC:6abc]" , result .getHost ());
218
210
219
- UriComponents resultWithScopeId = UriComponentsBuilder
220
- .fromUriString ("http://[1abc:2abc:3abc::5ABC:6abc%eth0]:8080/resource" ).build ().encode ();
211
+ UriComponents resultWithScopeId = UriComponentsBuilder
212
+ .fromUriString ("http://[1abc:2abc:3abc::5ABC:6abc%eth0]:8080/resource" ).build ().encode ();
221
213
assertEquals ("[1abc:2abc:3abc::5ABC:6abc%25eth0]" , resultWithScopeId .getHost ());
222
214
223
- UriComponents resultIPv4compatible = UriComponentsBuilder
224
- .fromUriString ("http://[::192.168.1.1]:8080/resource" ).build ().encode ();
215
+ UriComponents resultIPv4compatible = UriComponentsBuilder
216
+ .fromUriString ("http://[::192.168.1.1]:8080/resource" ).build ().encode ();
225
217
assertEquals ("[::192.168.1.1]" , resultIPv4compatible .getHost ());
226
218
}
227
219
228
- // SPR-11970
229
-
230
- @ Test
220
+ @ Test // SPR-11970
231
221
public void fromUriStringNoPathWithReservedCharInQuery () {
232
222
UriComponents result = UriComponentsBuilder .fromUriString ("http://example.com?foo=bar@baz" ).build ();
233
223
assertTrue (StringUtils .isEmpty (result .getUserInfo ()));
@@ -253,9 +243,7 @@ public void fromHttpRequest() throws URISyntaxException {
253
243
assertEquals ("a=1" , result .getQuery ());
254
244
}
255
245
256
- // SPR-12771
257
-
258
- @ Test
246
+ @ Test // SPR-12771
259
247
public void fromHttpRequestResetsPortBeforeSettingIt () throws Exception {
260
248
MockHttpServletRequest request = new MockHttpServletRequest ();
261
249
request .addHeader ("X-Forwarded-Proto" , "https" );
@@ -275,6 +263,67 @@ public void fromHttpRequestResetsPortBeforeSettingIt() throws Exception {
275
263
assertEquals ("/rest/mobile/users/1" , result .getPath ());
276
264
}
277
265
266
+ @ Test //SPR-14761
267
+ public void fromHttpRequestWithForwardedIPv4Host () {
268
+ MockHttpServletRequest request = new MockHttpServletRequest ();
269
+ request .setScheme ("http" );
270
+ request .setServerName ("localhost" );
271
+ request .setServerPort (-1 );
272
+ request .setRequestURI ("/mvc-showcase" );
273
+ request .addHeader ("Forwarded" , "host=192.168.0.1" );
274
+
275
+ HttpRequest httpRequest = new ServletServerHttpRequest (request );
276
+ UriComponents result = UriComponentsBuilder .fromHttpRequest (httpRequest ).build ();
277
+
278
+ assertEquals ("http://192.168.0.1/mvc-showcase" , result .toString ());
279
+ }
280
+
281
+ @ Test //SPR-14761
282
+ public void fromHttpRequestWithForwardedIPv6 () {
283
+ MockHttpServletRequest request = new MockHttpServletRequest ();
284
+ request .setScheme ("http" );
285
+ request .setServerName ("localhost" );
286
+ request .setServerPort (-1 );
287
+ request .setRequestURI ("/mvc-showcase" );
288
+ request .addHeader ("Forwarded" , "host=[1abc:2abc:3abc::5ABC:6abc]" );
289
+
290
+ HttpRequest httpRequest = new ServletServerHttpRequest (request );
291
+ UriComponents result = UriComponentsBuilder .fromHttpRequest (httpRequest ).build ();
292
+
293
+ assertEquals ("http://[1abc:2abc:3abc::5ABC:6abc]/mvc-showcase" , result .toString ());
294
+ }
295
+
296
+ @ Test //SPR-14761
297
+ public void fromHttpRequestWithForwardedIPv6Host () {
298
+ MockHttpServletRequest request = new MockHttpServletRequest ();
299
+ request .setScheme ("http" );
300
+ request .setServerName ("localhost" );
301
+ request .setServerPort (-1 );
302
+ request .setRequestURI ("/mvc-showcase" );
303
+ request .addHeader ("X-Forwarded-Host" , "[1abc:2abc:3abc::5ABC:6abc]" );
304
+
305
+ HttpRequest httpRequest = new ServletServerHttpRequest (request );
306
+ UriComponents result = UriComponentsBuilder .fromHttpRequest (httpRequest ).build ();
307
+
308
+ assertEquals ("http://[1abc:2abc:3abc::5ABC:6abc]/mvc-showcase" , result .toString ());
309
+ }
310
+
311
+ @ Test //SPR-14761
312
+ public void fromHttpRequestWithForwardedIPv6HostAndPort () {
313
+ MockHttpServletRequest request = new MockHttpServletRequest ();
314
+ request .setScheme ("http" );
315
+ request .setServerName ("localhost" );
316
+ request .setServerPort (-1 );
317
+ request .setRequestURI ("/mvc-showcase" );
318
+ request .addHeader ("X-Forwarded-Host" , "[1abc:2abc:3abc::5ABC:6abc]:8080" );
319
+
320
+ HttpRequest httpRequest = new ServletServerHttpRequest (request );
321
+ UriComponents result = UriComponentsBuilder .fromHttpRequest (httpRequest ).build ();
322
+
323
+ assertEquals ("http://[1abc:2abc:3abc::5ABC:6abc]:8080/mvc-showcase" , result .toString ());
324
+ }
325
+
326
+
278
327
@ Test
279
328
public void fromHttpRequestWithForwardedHost () {
280
329
MockHttpServletRequest request = new MockHttpServletRequest ();
@@ -290,9 +339,7 @@ public void fromHttpRequestWithForwardedHost() {
290
339
assertEquals ("http://anotherHost/mvc-showcase" , result .toString ());
291
340
}
292
341
293
- // SPR-10701
294
-
295
- @ Test
342
+ @ Test // SPR-10701
296
343
public void fromHttpRequestWithForwardedHostIncludingPort () {
297
344
MockHttpServletRequest request = new MockHttpServletRequest ();
298
345
request .setScheme ("http" );
@@ -308,9 +355,7 @@ public void fromHttpRequestWithForwardedHostIncludingPort() {
308
355
assertEquals (443 , result .getPort ());
309
356
}
310
357
311
- // SPR-11140
312
-
313
- @ Test
358
+ @ Test // SPR-11140
314
359
public void fromHttpRequestWithForwardedHostMultiValuedHeader () {
315
360
MockHttpServletRequest request = new MockHttpServletRequest ();
316
361
request .setScheme ("http" );
@@ -325,9 +370,7 @@ public void fromHttpRequestWithForwardedHostMultiValuedHeader() {
325
370
assertEquals (-1 , result .getPort ());
326
371
}
327
372
328
- // SPR-11855
329
-
330
- @ Test
373
+ @ Test // SPR-11855
331
374
public void fromHttpRequestWithForwardedHostAndPort () {
332
375
MockHttpServletRequest request = new MockHttpServletRequest ();
333
376
request .setScheme ("http" );
@@ -343,9 +386,7 @@ public void fromHttpRequestWithForwardedHostAndPort() {
343
386
assertEquals (9090 , result .getPort ());
344
387
}
345
388
346
- // SPR-11872
347
-
348
- @ Test
389
+ @ Test // SPR-11872
349
390
public void fromHttpRequestWithForwardedHostWithDefaultPort () {
350
391
MockHttpServletRequest request = new MockHttpServletRequest ();
351
392
request .setScheme ("http" );
@@ -378,9 +419,7 @@ public void fromHttpRequestWithForwardedHostWithForwardedScheme() {
378
419
assertEquals (-1 , result .getPort ());
379
420
}
380
421
381
- // SPR-12771
382
-
383
- @ Test
422
+ @ Test // SPR-12771
384
423
public void fromHttpRequestWithForwardedProtoAndDefaultPort () {
385
424
MockHttpServletRequest request = new MockHttpServletRequest ();
386
425
request .setScheme ("http" );
@@ -397,9 +436,7 @@ public void fromHttpRequestWithForwardedProtoAndDefaultPort() {
397
436
assertEquals ("https://84.198.58.199/mvc-showcase" , result .toString ());
398
437
}
399
438
400
- // SPR-12813
401
-
402
- @ Test
439
+ @ Test // SPR-12813
403
440
public void fromHttpRequestWithForwardedPortMultiValueHeader () {
404
441
MockHttpServletRequest request = new MockHttpServletRequest ();
405
442
request .setScheme ("http" );
@@ -415,9 +452,7 @@ public void fromHttpRequestWithForwardedPortMultiValueHeader() {
415
452
assertEquals ("http://a.example.org/mvc-showcase" , result .toString ());
416
453
}
417
454
418
- // SPR-12816
419
-
420
- @ Test
455
+ @ Test // SPR-12816
421
456
public void fromHttpRequestWithForwardedProtoMultiValueHeader () {
422
457
MockHttpServletRequest request = new MockHttpServletRequest ();
423
458
request .setScheme ("http" );
@@ -434,9 +469,7 @@ public void fromHttpRequestWithForwardedProtoMultiValueHeader() {
434
469
assertEquals ("https://a.example.org/mvc-showcase" , result .toString ());
435
470
}
436
471
437
- // SPR-12742
438
-
439
- @ Test
472
+ @ Test // SPR-12742
440
473
public void fromHttpRequestWithTrailingSlash () throws Exception {
441
474
UriComponents before = UriComponentsBuilder .fromPath ("/foo/" ).build ();
442
475
UriComponents after = UriComponentsBuilder .newInstance ().uriComponents (before ).build ();
@@ -506,9 +539,7 @@ public void pathSegmentsSomeEmpty() {
506
539
assertEquals (Arrays .asList ("foo" , "bar" ), result .getPathSegments ());
507
540
}
508
541
509
- // SPR-12398
510
-
511
- @ Test
542
+ @ Test // SPR-12398
512
543
public void pathWithDuplicateSlashes () throws URISyntaxException {
513
544
UriComponents uriComponents = UriComponentsBuilder .fromPath ("/foo/////////bar" ).build ();
514
545
assertEquals ("/foo/bar" , uriComponents .getPath ());
@@ -645,7 +676,7 @@ public void relativeUrls() throws Exception {
645
676
@ Test
646
677
public void emptySegments () throws Exception {
647
678
assertThat (UriComponentsBuilder .fromUriString ("http://example.com/abc/" ).path ("/x/y/z" ).build ().toString (), equalTo ("http://example.com/abc/x/y/z" ));
648
- assertThat (UriComponentsBuilder .fromUriString ("http://example.com/abc/" ).pathSegment ("x" , "y" , "z" ).build ().toString (), equalTo ("http://example.com/abc/x/y/z" ));
679
+ assertThat (UriComponentsBuilder .fromUriString ("http://example.com/abc/" ).pathSegment ("x" , "y" , "z" ).build ().toString (), equalTo ("http://example.com/abc/x/y/z" ));
649
680
assertThat (UriComponentsBuilder .fromUriString ("http://example.com/abc/" ).path ("/x/" ).path ("/y/z" ).build ().toString (), equalTo ("http://example.com/abc/x/y/z" ));
650
681
assertThat (UriComponentsBuilder .fromUriString ("http://example.com/abc/" ).pathSegment ("x" ).path ("y" ).build ().toString (), equalTo ("http://example.com/abc/x/y" ));
651
682
}
@@ -686,9 +717,7 @@ public void testClone() throws URISyntaxException {
686
717
assertEquals ("f2" , result2 .getFragment ());
687
718
}
688
719
689
- // SPR-11856
690
-
691
- @ Test
720
+ @ Test // SPR-11856
692
721
public void fromHttpRequestForwardedHeader () throws Exception {
693
722
MockHttpServletRequest request = new MockHttpServletRequest ();
694
723
request .addHeader ("Forwarded" , "proto=https; host=84.198.58.199" );
0 commit comments