Skip to content

Commit 2b1e93b

Browse files
author
Pushkar Kulkarni
committed
test for 915
1 parent 41542b2 commit 2b1e93b

File tree

2 files changed

+48
-4
lines changed

2 files changed

+48
-4
lines changed

TestFoundation/HTTPServer.swift

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,14 @@ struct _HTTPRequest {
191191
body = lines.last!
192192
}
193193

194+
public func getCommaSeparatedHeaders() -> String {
195+
var allHeaders = ""
196+
for header in headers {
197+
allHeaders += header + ","
198+
}
199+
return allHeaders
200+
}
201+
194202
}
195203

196204
struct _HTTPResponse {
@@ -240,18 +248,24 @@ public class TestURLSessionServer {
240248
}
241249

242250
func process(request: _HTTPRequest) -> _HTTPResponse {
243-
if request.method == .GET {
244-
return getResponse(uri: request.uri)
251+
if request.method == .GET || request.method == .POST {
252+
return getResponse(request: request)
245253
} else {
246254
fatalError("Unsupported method!")
247255
}
248256
}
249257

250-
func getResponse(uri: String) -> _HTTPResponse {
258+
func getResponse(request: _HTTPRequest) -> _HTTPResponse {
259+
let uri = request.uri
251260
if uri == "/country.txt" {
252261
let text = capitals[String(uri.characters.dropFirst())]!
253262
return _HTTPResponse(response: .OK, headers: "Content-Length: \(text.characters.count)", body: text)
254263
}
264+
265+
if uri == "/requestHeaders" {
266+
let text = request.getCommaSeparatedHeaders()
267+
return _HTTPResponse(response: .OK, headers: "Content-Length: \(text.characters.count)", body: text)
268+
}
255269
return _HTTPResponse(response: .OK, body: capitals[String(uri.characters.dropFirst())]!)
256270
}
257271

TestFoundation/TestNSURLSession.swift

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class TestURLSession : XCTestCase {
3434
("test_taskCopy", test_taskCopy),
3535
("test_cancelTask", test_cancelTask),
3636
("test_taskTimeout", test_taskTimeout),
37+
("test_verifyRequestHeaders", test_verifyRequestHeaders),
3738
]
3839
}
3940

@@ -318,7 +319,36 @@ class TestURLSession : XCTestCase {
318319
d.cancel()
319320
waitForExpectations(timeout: 12)
320321
}
321-
322+
323+
func test_verifyRequestHeaders() {
324+
let serverReady = ServerSemaphore()
325+
globalDispatchQueue.async {
326+
do {
327+
try self.runServer(with: serverReady)
328+
} catch {
329+
XCTAssertTrue(true)
330+
return
331+
}
332+
}
333+
serverReady.wait()
334+
let config = URLSessionConfiguration.default
335+
config.timeoutIntervalForRequest = 5
336+
let session = URLSession(configuration: config, delegate: nil, delegateQueue: nil)
337+
var expect = expectation(description: "download task with handler")
338+
var req = URLRequest(url: URL(string: "http://127.0.0.1:\(serverPort)/requestHeaders")!)
339+
let headers = ["header1": "value1"]
340+
req.httpMethod = "POST"
341+
req.allHTTPHeaderFields = headers
342+
var task = session.dataTask(with: req) { (data, _, error) -> Void in
343+
defer { expect.fulfill() }
344+
let headers = String(data: data!, encoding: String.Encoding.utf8)!
345+
XCTAssertNotNil(headers.range(of: "header1: value1"))
346+
}
347+
task.resume()
348+
349+
waitForExpectations(timeout: 30)
350+
}
351+
322352
func test_taskTimeout() {
323353
let serverReady = ServerSemaphore()
324354
globalDispatchQueue.async {

0 commit comments

Comments
 (0)