Skip to content

Commit 7a00f7e

Browse files
committed
Update HTTPClientTests
1 parent f6b99f3 commit 7a00f7e

File tree

1 file changed

+63
-27
lines changed

1 file changed

+63
-27
lines changed

Tests/HTTPClientTests.swift

Lines changed: 63 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,22 @@ import XCTest
1111
@testable
1212
import SwiftJSONRPC
1313

14-
class HTTPClientTests: XCTestCase
15-
{
14+
final class HTTPClientTests: XCTestCase {
15+
16+
// MARK: - Properties
17+
1618
var httpClient: HTTPClient!
19+
20+
// MARK: - Functions
1721

1822
override func setUp() {
1923
super.setUp()
20-
21-
self.httpClient = AlamofireHTTPClient()
24+
httpClient = AlamofireHTTPClient()
2225
}
2326

24-
func testHasResponse()
25-
{
27+
// MARK: - Functions: Tests
28+
29+
func testHasResponse() {
2630
// Given
2731
let method = HTTPMethod(rawValue: "GET")!
2832
let url = URL(string: "https://httpbin.org/get")!
@@ -34,14 +38,13 @@ class HTTPClientTests: XCTestCase
3438

3539
// When
3640
self.httpClient.perform(request: request) { result in
37-
switch result
38-
{
39-
case .success(let resp):
40-
response = resp
41-
expectation.fulfill()
42-
43-
case .error(let error):
44-
XCTFail("Request failed with error: \(error).")
41+
switch result {
42+
case .success(let resp):
43+
response = resp
44+
expectation.fulfill()
45+
46+
case .error(let error):
47+
XCTFail("Request failed with error: \(error).")
4548
}
4649
}
4750

@@ -51,8 +54,7 @@ class HTTPClientTests: XCTestCase
5154
XCTAssertNotNil(response)
5255
}
5356

54-
func testResponseStatusCode()
55-
{
57+
func testShouldParseResponseStatusCode() {
5658
// Given
5759
let method = HTTPMethod(rawValue: "GET")!
5860
let url = URL(string: "https://httpbin.org/status/204")!
@@ -64,8 +66,7 @@ class HTTPClientTests: XCTestCase
6466

6567
// When
6668
self.httpClient.perform(request: request) { result in
67-
switch result
68-
{
69+
switch result {
6970
case .success(let resp):
7071
response = resp
7172
expectation.fulfill()
@@ -82,8 +83,7 @@ class HTTPClientTests: XCTestCase
8283
XCTAssertEqual(response.code, 204)
8384
}
8485

85-
func testResponseHeaders()
86-
{
86+
func testShouldParseResponseHeaders() {
8787
// Given
8888
let method = HTTPMethod(rawValue: "GET")!
8989
let url = URL(string: "https://httpbin.org/response-headers?foo=bar&baz=bat")!
@@ -95,8 +95,7 @@ class HTTPClientTests: XCTestCase
9595

9696
// When
9797
self.httpClient.perform(request: request) { result in
98-
switch result
99-
{
98+
switch result {
10099
case .success(let resp):
101100
response = resp
102101
expectation.fulfill()
@@ -114,8 +113,47 @@ class HTTPClientTests: XCTestCase
114113
XCTAssertEqual(response.headers["baz"], "bat")
115114
}
116115

117-
func testResponseBody()
118-
{
116+
func testShouldSetRequestHeaders() throws {
117+
// Given
118+
let method = HTTPMethod(rawValue: "GET")!
119+
let url = URL(string: "https://httpbin.org/headers")!
120+
121+
let headers = [
122+
"Accept": "application/json",
123+
"X-Custom-Header": "test-header"
124+
]
125+
let request = HTTPRequest(method: method, url: url, headers: headers, body: nil)
126+
127+
let expectation = self.expectation(description: "Request should succeed.")
128+
var response: HTTPResponse!
129+
130+
// When
131+
self.httpClient.perform(request: request) { result in
132+
switch result {
133+
case .success(let resp):
134+
response = resp
135+
expectation.fulfill()
136+
137+
case .error(let error):
138+
XCTFail("Request failed with error: \(error).")
139+
}
140+
}
141+
142+
wait(for: [expectation], timeout: 10.0)
143+
144+
// Then
145+
XCTAssertNotNil(response)
146+
147+
let responseJSONObject = try JSONSerialization.jsonObject(with: response.body)
148+
let responseDict = try XCTUnwrap(responseJSONObject as? [String: Any])
149+
let requestHeaders = try XCTUnwrap(responseDict["headers"] as? [String: String])
150+
151+
for (key, value) in headers {
152+
XCTAssertEqual(requestHeaders[key], value)
153+
}
154+
}
155+
156+
func testShouldParseResponseBody() {
119157
// Given
120158
let method = HTTPMethod(rawValue: "GET")!
121159
let url = URL(string: "https://httpbin.org//bytes/100")!
@@ -127,8 +165,7 @@ class HTTPClientTests: XCTestCase
127165

128166
// When
129167
self.httpClient.perform(request: request) { result in
130-
switch result
131-
{
168+
switch result {
132169
case .success(let resp):
133170
response = resp
134171
expectation.fulfill()
@@ -144,5 +181,4 @@ class HTTPClientTests: XCTestCase
144181
XCTAssertNotNil(response)
145182
XCTAssertEqual(response.body.count, 100)
146183
}
147-
148184
}

0 commit comments

Comments
 (0)