@@ -11,18 +11,22 @@ import XCTest
1111@testable
1212import 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