@@ -90,6 +90,37 @@ class HTTPClientInternalTests: XCTestCase {
90
90
}
91
91
}
92
92
93
+ func testHostPort( ) throws {
94
+ let channel = EmbeddedChannel ( )
95
+ let recorder = RecordingHandler < HTTPClientResponsePart , HTTPClientRequestPart > ( )
96
+ let task = Task < Void > ( eventLoop: channel. eventLoop, logger: HTTPClient . loggingDisabled)
97
+
98
+ try channel. pipeline. addHandler ( recorder) . wait ( )
99
+ try channel. pipeline. addHandler ( TaskHandler ( task: task,
100
+ kind: . host,
101
+ delegate: TestHTTPDelegate ( ) ,
102
+ redirectHandler: nil ,
103
+ ignoreUncleanSSLShutdown: false ,
104
+ logger: HTTPClient . loggingDisabled) ) . wait ( )
105
+
106
+ let request1 = try Request ( url: " http://localhost:80/get " )
107
+ XCTAssertNoThrow ( try channel. writeOutbound ( request1) )
108
+ let request2 = try Request ( url: " https://localhost/get " )
109
+ XCTAssertNoThrow ( try channel. writeOutbound ( request2) )
110
+ let request3 = try Request ( url: " http://localhost:8080/get " )
111
+ XCTAssertNoThrow ( try channel. writeOutbound ( request3) )
112
+
113
+ var head1 = HTTPRequestHead ( version: HTTPVersion ( major: 1 , minor: 1 ) , method: . GET, uri: " /get " )
114
+ head1. headers. add ( name: " Host " , value: " localhost " )
115
+ XCTAssertEqual ( HTTPClientRequestPart . head ( head1) , recorder. writes [ 0 ] )
116
+ var head2 = HTTPRequestHead ( version: HTTPVersion ( major: 1 , minor: 1 ) , method: . GET, uri: " /get " )
117
+ head2. headers. add ( name: " Host " , value: " localhost " )
118
+ XCTAssertEqual ( HTTPClientRequestPart . head ( head2) , recorder. writes [ 2 ] )
119
+ var head3 = HTTPRequestHead ( version: HTTPVersion ( major: 1 , minor: 1 ) , method: . GET, uri: " /get " )
120
+ head3. headers. add ( name: " Host " , value: " localhost:8080 " )
121
+ XCTAssertEqual ( HTTPClientRequestPart . head ( head3) , recorder. writes [ 4 ] )
122
+ }
123
+
93
124
func testHTTPPartsHandlerMultiBody( ) throws {
94
125
let channel = EmbeddedChannel ( )
95
126
let delegate = TestHTTPDelegate ( )
0 commit comments