@@ -49,15 +49,15 @@ class HTTPClientInternalTests: XCTestCase {
49
49
ignoreUncleanSSLShutdown: false ,
50
50
logger: HTTPClient . loggingDisabled) ) . wait ( )
51
51
52
- var request = try Request ( url: " http://localhost/get " )
52
+ var request = try Request ( url: " http://localhost:8080 /get " )
53
53
request. headers. add ( name: " X-Test-Header " , value: " X-Test-Value " )
54
54
request. body = . string( " 1234 " )
55
55
56
56
XCTAssertNoThrow ( try channel. writeOutbound ( request) )
57
57
XCTAssertEqual ( 3 , recorder. writes. count)
58
58
var head = HTTPRequestHead ( version: HTTPVersion ( major: 1 , minor: 1 ) , method: . GET, uri: " /get " )
59
59
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 " )
61
61
head. headers. add ( name: " Content-Length " , value: " 4 " )
62
62
XCTAssertEqual ( HTTPClientRequestPart . head ( head) , recorder. writes [ 0 ] )
63
63
let buffer = ByteBuffer . of ( string: " 1234 " )
@@ -90,6 +90,42 @@ 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
+ 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
+
93
129
func testHTTPPartsHandlerMultiBody( ) throws {
94
130
let channel = EmbeddedChannel ( )
95
131
let delegate = TestHTTPDelegate ( )
0 commit comments