@@ -469,6 +469,14 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
469
469
470
470
var response = try localClient. get ( url: self . defaultHTTPBinURLPrefix + " redirect/302 " ) . wait ( )
471
471
XCTAssertEqual ( response. status, . ok)
472
+ XCTAssertEqual ( response. url? . absoluteString, self . defaultHTTPBinURLPrefix + " ok " )
473
+ XCTAssertEqual (
474
+ response. history. map ( \. request. url. absoluteString) ,
475
+ [
476
+ self . defaultHTTPBinURLPrefix + " redirect/302 " ,
477
+ self . defaultHTTPBinURLPrefix + " ok " ,
478
+ ]
479
+ )
472
480
473
481
response = try localClient. get ( url: self . defaultHTTPBinURLPrefix + " redirect/https?port= \( httpsBin. port) " )
474
482
. wait ( )
@@ -501,6 +509,8 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
501
509
var response = try localClient. execute ( request: request) . wait ( )
502
510
XCTAssertEqual ( response. status, . found)
503
511
XCTAssertEqual ( response. headers. first ( name: " Location " ) , targetURL)
512
+ XCTAssertEqual ( response. url, request. url)
513
+ XCTAssertEqual ( response. history. map ( \. request. url) , [ request. url] )
504
514
505
515
request = try Request (
506
516
url: " https://localhost: \( httpsBin. port) /redirect/target " ,
@@ -512,6 +522,8 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
512
522
response = try localClient. execute ( request: request) . wait ( )
513
523
XCTAssertEqual ( response. status, . found)
514
524
XCTAssertEqual ( response. headers. first ( name: " Location " ) , targetURL)
525
+ XCTAssertEqual ( response. url, request. url)
526
+ XCTAssertEqual ( response. history. map ( \. request. url) , [ request. url] )
515
527
516
528
// From HTTP or HTTPS to HTTPS+UNIX should also fail to redirect
517
529
targetURL =
@@ -526,6 +538,8 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
526
538
response = try localClient. execute ( request: request) . wait ( )
527
539
XCTAssertEqual ( response. status, . found)
528
540
XCTAssertEqual ( response. headers. first ( name: " Location " ) , targetURL)
541
+ XCTAssertEqual ( response. url, request. url)
542
+ XCTAssertEqual ( response. history. map ( \. request. url) , [ request. url] )
529
543
530
544
request = try Request (
531
545
url: " https://localhost: \( httpsBin. port) /redirect/target " ,
@@ -537,6 +551,8 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
537
551
response = try localClient. execute ( request: request) . wait ( )
538
552
XCTAssertEqual ( response. status, . found)
539
553
XCTAssertEqual ( response. headers. first ( name: " Location " ) , targetURL)
554
+ XCTAssertEqual ( response. url, request. url)
555
+ XCTAssertEqual ( response. history. map ( \. request. url) , [ request. url] )
540
556
541
557
// ... while HTTP+UNIX to HTTP, HTTPS, or HTTP(S)+UNIX should succeed
542
558
targetURL = self . defaultHTTPBinURLPrefix + " ok "
@@ -550,6 +566,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
550
566
551
567
response = try localClient. execute ( request: request) . wait ( )
552
568
XCTAssertEqual ( response. status, . ok)
569
+ XCTAssertEqual ( response. url? . absoluteString, targetURL)
570
+ XCTAssertEqual (
571
+ response. history. map ( \. request. url. absoluteString) ,
572
+ [ request. url. absoluteString, targetURL]
573
+ )
553
574
554
575
targetURL = " https://localhost: \( httpsBin. port) /ok "
555
576
request = try Request (
@@ -562,6 +583,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
562
583
563
584
response = try localClient. execute ( request: request) . wait ( )
564
585
XCTAssertEqual ( response. status, . ok)
586
+ XCTAssertEqual ( response. url? . absoluteString, targetURL)
587
+ XCTAssertEqual (
588
+ response. history. map ( \. request. url. absoluteString) ,
589
+ [ request. url. absoluteString, targetURL]
590
+ )
565
591
566
592
targetURL =
567
593
" http+unix:// \( httpSocketPath. addingPercentEncoding ( withAllowedCharacters: . urlHostAllowed) !) /ok "
@@ -575,6 +601,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
575
601
576
602
response = try localClient. execute ( request: request) . wait ( )
577
603
XCTAssertEqual ( response. status, . ok)
604
+ XCTAssertEqual ( response. url? . absoluteString, targetURL)
605
+ XCTAssertEqual (
606
+ response. history. map ( \. request. url. absoluteString) ,
607
+ [ request. url. absoluteString, targetURL]
608
+ )
578
609
579
610
targetURL =
580
611
" https+unix:// \( httpsSocketPath. addingPercentEncoding ( withAllowedCharacters: . urlHostAllowed) !) /ok "
@@ -588,6 +619,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
588
619
589
620
response = try localClient. execute ( request: request) . wait ( )
590
621
XCTAssertEqual ( response. status, . ok)
622
+ XCTAssertEqual ( response. url? . absoluteString, targetURL)
623
+ XCTAssertEqual (
624
+ response. history. map ( \. request. url. absoluteString) ,
625
+ [ request. url. absoluteString, targetURL]
626
+ )
591
627
592
628
// ... and HTTPS+UNIX to HTTP, HTTPS, or HTTP(S)+UNIX should succeed
593
629
targetURL = self . defaultHTTPBinURLPrefix + " ok "
@@ -601,6 +637,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
601
637
602
638
response = try localClient. execute ( request: request) . wait ( )
603
639
XCTAssertEqual ( response. status, . ok)
640
+ XCTAssertEqual ( response. url? . absoluteString, targetURL)
641
+ XCTAssertEqual (
642
+ response. history. map ( \. request. url. absoluteString) ,
643
+ [ request. url. absoluteString, targetURL]
644
+ )
604
645
605
646
targetURL = " https://localhost: \( httpsBin. port) /ok "
606
647
request = try Request (
@@ -613,6 +654,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
613
654
614
655
response = try localClient. execute ( request: request) . wait ( )
615
656
XCTAssertEqual ( response. status, . ok)
657
+ XCTAssertEqual ( response. url? . absoluteString, targetURL)
658
+ XCTAssertEqual (
659
+ response. history. map ( \. request. url. absoluteString) ,
660
+ [ request. url. absoluteString, targetURL]
661
+ )
616
662
617
663
targetURL =
618
664
" http+unix:// \( httpSocketPath. addingPercentEncoding ( withAllowedCharacters: . urlHostAllowed) !) /ok "
@@ -626,6 +672,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
626
672
627
673
response = try localClient. execute ( request: request) . wait ( )
628
674
XCTAssertEqual ( response. status, . ok)
675
+ XCTAssertEqual ( response. url? . absoluteString, targetURL)
676
+ XCTAssertEqual (
677
+ response. history. map ( \. request. url. absoluteString) ,
678
+ [ request. url. absoluteString, targetURL]
679
+ )
629
680
630
681
targetURL =
631
682
" https+unix:// \( httpsSocketPath. addingPercentEncoding ( withAllowedCharacters: . urlHostAllowed) !) /ok "
@@ -639,6 +690,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
639
690
640
691
response = try localClient. execute ( request: request) . wait ( )
641
692
XCTAssertEqual ( response. status, . ok)
693
+ XCTAssertEqual ( response. url? . absoluteString, targetURL)
694
+ XCTAssertEqual (
695
+ response. history. map ( \. request. url. absoluteString) ,
696
+ [ request. url. absoluteString, targetURL]
697
+ )
642
698
}
643
699
)
644
700
}
0 commit comments