@@ -469,6 +469,14 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
469469
470470 var response = try localClient. get ( url: self . defaultHTTPBinURLPrefix + " redirect/302 " ) . wait ( )
471471 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+ )
472480
473481 response = try localClient. get ( url: self . defaultHTTPBinURLPrefix + " redirect/https?port= \( httpsBin. port) " )
474482 . wait ( )
@@ -501,6 +509,8 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
501509 var response = try localClient. execute ( request: request) . wait ( )
502510 XCTAssertEqual ( response. status, . found)
503511 XCTAssertEqual ( response. headers. first ( name: " Location " ) , targetURL)
512+ XCTAssertEqual ( response. url, request. url)
513+ XCTAssertEqual ( response. history. map ( \. request. url) , [ request. url] )
504514
505515 request = try Request (
506516 url: " https://localhost: \( httpsBin. port) /redirect/target " ,
@@ -512,6 +522,8 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
512522 response = try localClient. execute ( request: request) . wait ( )
513523 XCTAssertEqual ( response. status, . found)
514524 XCTAssertEqual ( response. headers. first ( name: " Location " ) , targetURL)
525+ XCTAssertEqual ( response. url, request. url)
526+ XCTAssertEqual ( response. history. map ( \. request. url) , [ request. url] )
515527
516528 // From HTTP or HTTPS to HTTPS+UNIX should also fail to redirect
517529 targetURL =
@@ -526,6 +538,8 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
526538 response = try localClient. execute ( request: request) . wait ( )
527539 XCTAssertEqual ( response. status, . found)
528540 XCTAssertEqual ( response. headers. first ( name: " Location " ) , targetURL)
541+ XCTAssertEqual ( response. url, request. url)
542+ XCTAssertEqual ( response. history. map ( \. request. url) , [ request. url] )
529543
530544 request = try Request (
531545 url: " https://localhost: \( httpsBin. port) /redirect/target " ,
@@ -537,6 +551,8 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
537551 response = try localClient. execute ( request: request) . wait ( )
538552 XCTAssertEqual ( response. status, . found)
539553 XCTAssertEqual ( response. headers. first ( name: " Location " ) , targetURL)
554+ XCTAssertEqual ( response. url, request. url)
555+ XCTAssertEqual ( response. history. map ( \. request. url) , [ request. url] )
540556
541557 // ... while HTTP+UNIX to HTTP, HTTPS, or HTTP(S)+UNIX should succeed
542558 targetURL = self . defaultHTTPBinURLPrefix + " ok "
@@ -550,6 +566,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
550566
551567 response = try localClient. execute ( request: request) . wait ( )
552568 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+ )
553574
554575 targetURL = " https://localhost: \( httpsBin. port) /ok "
555576 request = try Request (
@@ -562,6 +583,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
562583
563584 response = try localClient. execute ( request: request) . wait ( )
564585 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+ )
565591
566592 targetURL =
567593 " http+unix:// \( httpSocketPath. addingPercentEncoding ( withAllowedCharacters: . urlHostAllowed) !) /ok "
@@ -575,6 +601,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
575601
576602 response = try localClient. execute ( request: request) . wait ( )
577603 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+ )
578609
579610 targetURL =
580611 " https+unix:// \( httpsSocketPath. addingPercentEncoding ( withAllowedCharacters: . urlHostAllowed) !) /ok "
@@ -588,6 +619,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
588619
589620 response = try localClient. execute ( request: request) . wait ( )
590621 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+ )
591627
592628 // ... and HTTPS+UNIX to HTTP, HTTPS, or HTTP(S)+UNIX should succeed
593629 targetURL = self . defaultHTTPBinURLPrefix + " ok "
@@ -601,6 +637,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
601637
602638 response = try localClient. execute ( request: request) . wait ( )
603639 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+ )
604645
605646 targetURL = " https://localhost: \( httpsBin. port) /ok "
606647 request = try Request (
@@ -613,6 +654,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
613654
614655 response = try localClient. execute ( request: request) . wait ( )
615656 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+ )
616662
617663 targetURL =
618664 " http+unix:// \( httpSocketPath. addingPercentEncoding ( withAllowedCharacters: . urlHostAllowed) !) /ok "
@@ -626,6 +672,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
626672
627673 response = try localClient. execute ( request: request) . wait ( )
628674 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+ )
629680
630681 targetURL =
631682 " https+unix:// \( httpsSocketPath. addingPercentEncoding ( withAllowedCharacters: . urlHostAllowed) !) /ok "
@@ -639,6 +690,11 @@ final class HTTPClientTests: XCTestCaseHTTPClientTestsBaseClass {
639690
640691 response = try localClient. execute ( request: request) . wait ( )
641692 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+ )
642698 }
643699 )
644700 }
0 commit comments