@@ -49,15 +49,15 @@ class HTTPClientInternalTests: XCTestCase {
4949 ignoreUncleanSSLShutdown: false ,
5050 logger: HTTPClient . loggingDisabled) ) . wait ( )
5151
52- var request = try Request ( url: " http://localhost/get " )
52+ var request = try Request ( url: " http://localhost:8080 /get " )
5353 request. headers. add ( name: " X-Test-Header " , value: " X-Test-Value " )
5454 request. body = . string( " 1234 " )
5555
5656 XCTAssertNoThrow ( try channel. writeOutbound ( request) )
5757 XCTAssertEqual ( 3 , recorder. writes. count)
5858 var head = HTTPRequestHead ( version: HTTPVersion ( major: 1 , minor: 1 ) , method: . GET, uri: " /get " )
5959 head. headers. add ( name: " X-Test-Header " , value: " X-Test-Value " )
60- head. headers. add ( name: " Host " , value: " localhost " )
60+ head. headers. add ( name: " Host " , value: " localhost:8080 " )
6161 head. headers. add ( name: " Content-Length " , value: " 4 " )
6262 XCTAssertEqual ( HTTPClientRequestPart . head ( head) , recorder. writes [ 0 ] )
6363 let buffer = ByteBuffer . of ( string: " 1234 " )
@@ -90,6 +90,42 @@ class HTTPClientInternalTests: XCTestCase {
9090 }
9191 }
9292
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+ let request4 = try Request ( url: " http://localhost:443/get " )
113+ XCTAssertNoThrow ( try channel. writeOutbound ( request4) )
114+ let request5 = try Request ( url: " https://localhost:80/get " )
115+ XCTAssertNoThrow ( try channel. writeOutbound ( request5) )
116+
117+ let head1 = HTTPRequestHead ( version: HTTPVersion ( major: 1 , minor: 1 ) , method: . GET, uri: " /get " , headers: [ " host " : " localhost " ] )
118+ XCTAssertEqual ( HTTPClientRequestPart . head ( head1) , recorder. writes [ 0 ] )
119+ let head2 = HTTPRequestHead ( version: HTTPVersion ( major: 1 , minor: 1 ) , method: . GET, uri: " /get " , headers: [ " host " : " localhost " ] )
120+ XCTAssertEqual ( HTTPClientRequestPart . head ( head2) , recorder. writes [ 2 ] )
121+ let head3 = HTTPRequestHead ( version: HTTPVersion ( major: 1 , minor: 1 ) , method: . GET, uri: " /get " , headers: [ " host " : " localhost:8080 " ] )
122+ XCTAssertEqual ( HTTPClientRequestPart . head ( head3) , recorder. writes [ 4 ] )
123+ let head4 = HTTPRequestHead ( version: HTTPVersion ( major: 1 , minor: 1 ) , method: . GET, uri: " /get " , headers: [ " host " : " localhost:443 " ] )
124+ XCTAssertEqual ( HTTPClientRequestPart . head ( head4) , recorder. writes [ 6 ] )
125+ let head5 = HTTPRequestHead ( version: HTTPVersion ( major: 1 , minor: 1 ) , method: . GET, uri: " /get " , headers: [ " host " : " localhost:80 " ] )
126+ XCTAssertEqual ( HTTPClientRequestPart . head ( head5) , recorder. writes [ 8 ] )
127+ }
128+
93129 func testHTTPPartsHandlerMultiBody( ) throws {
94130 let channel = EmbeddedChannel ( )
95131 let delegate = TestHTTPDelegate ( )
0 commit comments