20
20
import static org .hamcrest .Matchers .*;
21
21
import static org .springframework .hateoas .mvc .ControllerLinkBuilder .*;
22
22
23
+ import java .io .IOException ;
23
24
import java .lang .reflect .Method ;
24
25
import java .util .Arrays ;
25
26
import java .util .List ;
26
27
import java .util .Optional ;
27
28
29
+ import javax .servlet .ServletException ;
30
+
28
31
import org .junit .Rule ;
29
32
import org .junit .Test ;
30
33
import org .junit .rules .ExpectedException ;
@@ -162,6 +165,8 @@ public void usesForwardedHostAsHostIfHeaderIsSet() {
162
165
163
166
request .addHeader ("X-Forwarded-Host" , "somethingDifferent" );
164
167
168
+ adaptRequestFromForwardedHeaders ();
169
+
165
170
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
166
171
assertThat (link .getHref (), startsWith ("http://somethingDifferent" ));
167
172
}
@@ -174,6 +179,8 @@ public void usesForwardedSslIfHeaderIsSet() {
174
179
175
180
request .addHeader ("X-Forwarded-Ssl" , "on" );
176
181
182
+ adaptRequestFromForwardedHeaders ();
183
+
177
184
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
178
185
assertThat (link .getHref (), startsWith ("https://" ));
179
186
}
@@ -186,6 +193,8 @@ public void usesForwardedSslIfHeaderIsSetOff() {
186
193
187
194
request .addHeader ("X-Forwarded-Ssl" , "off" );
188
195
196
+ adaptRequestFromForwardedHeaders ();
197
+
189
198
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
190
199
assertThat (link .getHref (), startsWith ("http://" ));
191
200
}
@@ -199,6 +208,8 @@ public void usesForwardedSslAndHostIfHeaderIsSet() {
199
208
request .addHeader ("X-Forwarded-Host" , "somethingDifferent" );
200
209
request .addHeader ("X-Forwarded-Ssl" , "on" );
201
210
211
+ adaptRequestFromForwardedHeaders ();
212
+
202
213
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
203
214
assertThat (link .getHref (), startsWith ("https://somethingDifferent" ));
204
215
}
@@ -270,6 +281,8 @@ public void usesForwardedHostAndPortFromHeader() {
270
281
271
282
request .addHeader ("X-Forwarded-Host" , "foobar:8088" );
272
283
284
+ adaptRequestFromForwardedHeaders ();
285
+
273
286
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
274
287
assertThat (link .getHref (), startsWith ("http://foobar:8088" ));
275
288
}
@@ -282,6 +295,8 @@ public void usesFirstHostOfXForwardedHost() {
282
295
283
296
request .addHeader ("X-Forwarded-Host" , "barfoo:8888, localhost:8088" );
284
297
298
+ adaptRequestFromForwardedHeaders ();
299
+
285
300
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
286
301
assertThat (link .getHref (), startsWith ("http://barfoo:8888" ));
287
302
}
@@ -335,6 +350,8 @@ public void usesForwardedPortFromHeader() {
335
350
request .addHeader ("X-Forwarded-Port" , "9090" );
336
351
request .setServerPort (8080 );
337
352
353
+ adaptRequestFromForwardedHeaders ();
354
+
338
355
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
339
356
340
357
assertThat (link .getHref (), startsWith ("http://foobarhost:9090/" ));
@@ -349,6 +366,8 @@ public void usesForwardedHostFromHeaderWithDefaultPort() {
349
366
request .addHeader ("X-Forwarded-Host" , "foobarhost" );
350
367
request .setServerPort (8080 );
351
368
369
+ adaptRequestFromForwardedHeaders ();
370
+
352
371
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
353
372
assertThat (link .getHref (), startsWith ("http://foobarhost/" ));
354
373
}
@@ -410,12 +429,14 @@ public void usesRootMappingOfTargetClassForMethodsOfParent() throws Exception {
410
429
* @see #257, #107
411
430
*/
412
431
@ Test
413
- public void usesXForwardedProtoHeaderAsLinkSchema () {
432
+ public void usesXForwardedProtoHeaderAsLinkSchema () throws ServletException , IOException {
414
433
415
434
for (String proto : Arrays .asList ("http" , "https" )) {
416
435
417
436
setUp ();
418
437
request .addHeader ("X-Forwarded-Proto" , proto );
438
+
439
+ adaptRequestFromForwardedHeaders ();
419
440
420
441
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
421
442
assertThat (link .getHref (), startsWith (proto + "://" ));
@@ -433,6 +454,8 @@ public void usesProtoValueFromForwardedHeaderAsLinkSchema() {
433
454
setUp ();
434
455
request .addHeader ("Forwarded" , new String [] { "proto=" + proto });
435
456
457
+ adaptRequestFromForwardedHeaders ();
458
+
436
459
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
437
460
assertThat (link .getHref (), startsWith (proto .concat ("://" )));
438
461
}
@@ -445,7 +468,9 @@ public void usesProtoValueFromForwardedHeaderAsLinkSchema() {
445
468
public void favorsStandardForwardHeaderOverXForwardedProto () {
446
469
447
470
request .addHeader ("X-Forwarded-Proto" , "foo" );
448
- request .addHeader (ForwardedHeader .NAME , "proto=bar" );
471
+ request .addHeader ("Forwarded" , "proto=bar" );
472
+
473
+ adaptRequestFromForwardedHeaders ();
449
474
450
475
Link link = linkTo (PersonControllerImpl .class ).withSelfRel ();
451
476
assertThat (link .getHref (), startsWith ("bar://" ));
@@ -527,6 +552,8 @@ public void supportsTwoProxiesAddingXForwardedPort() {
527
552
request .addHeader ("X-Forwarded-Port" , "1443,8443" );
528
553
request .addHeader ("X-Forwarded-Host" , "proxy1,proxy2" );
529
554
555
+ adaptRequestFromForwardedHeaders ();
556
+
530
557
assertThat (linkTo (PersonControllerImpl .class ).withSelfRel ().getHref (), startsWith ("http://proxy1:1443" ));
531
558
}
532
559
0 commit comments