Skip to content

Commit 343098a

Browse files
committed
Adding WebSocketTranspotTests
1 parent 4452b30 commit 343098a

2 files changed

Lines changed: 70 additions & 0 deletions

File tree

Apollo.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@
199199
C35D43C622DDE28D00BCBABE /* a.txt in Resources */ = {isa = PBXBuildFile; fileRef = C304EBD322DDC7B200748F72 /* a.txt */; };
200200
C377CCA922D798BD00572E03 /* GraphQLFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C377CCA822D798BD00572E03 /* GraphQLFile.swift */; };
201201
C377CCAB22D7992E00572E03 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = C377CCAA22D7992E00572E03 /* MultipartFormData.swift */; };
202+
D90F1AFB2479E57A007A1534 /* WebSocketTransportTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90F1AF92479DEE5007A1534 /* WebSocketTransportTests.swift */; };
202203
E86D8E05214B32FD0028EFE1 /* JSONTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86D8E03214B32DA0028EFE1 /* JSONTests.swift */; };
203204
F16D083C21EF6F7300C458B8 /* QueryFromJSONBuildingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F16D083B21EF6F7300C458B8 /* QueryFromJSONBuildingTests.swift */; };
204205
F82E62E122BCD223000C311B /* AutomaticPersistedQueriesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F82E62E022BCD223000C311B /* AutomaticPersistedQueriesTests.swift */; };
@@ -615,6 +616,7 @@
615616
C35D43BF22DDD3C100BCBABE /* c.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = c.txt; sourceTree = "<group>"; };
616617
C377CCA822D798BD00572E03 /* GraphQLFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphQLFile.swift; sourceTree = "<group>"; };
617618
C377CCAA22D7992E00572E03 /* MultipartFormData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipartFormData.swift; sourceTree = "<group>"; };
619+
D90F1AF92479DEE5007A1534 /* WebSocketTransportTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSocketTransportTests.swift; sourceTree = "<group>"; };
618620
E86D8E03214B32DA0028EFE1 /* JSONTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONTests.swift; sourceTree = "<group>"; };
619621
F16D083B21EF6F7300C458B8 /* QueryFromJSONBuildingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QueryFromJSONBuildingTests.swift; sourceTree = "<group>"; };
620622
F82E62E022BCD223000C311B /* AutomaticPersistedQueriesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutomaticPersistedQueriesTests.swift; sourceTree = "<group>"; };
@@ -852,6 +854,7 @@
852854
9B7BDA8A23FDE92900ACD198 /* SplitNetworkTransportTests.swift */,
853855
9B7BDA8823FDE92900ACD198 /* StarWarsSubscriptionTests.swift */,
854856
9B7BDA8C23FDE92900ACD198 /* StarWarsWebSocketTests.swift */,
857+
D90F1AF92479DEE5007A1534 /* WebSocketTransportTests.swift */,
855858
9B7BDA8B23FDE92900ACD198 /* Info.plist */,
856859
);
857860
path = ApolloWebsocketTests;
@@ -1974,6 +1977,7 @@
19741977
9B7BDA9223FDE92A00ACD198 /* StarWarsWebSocketTests.swift in Sources */,
19751978
9B7BDA9023FDE92A00ACD198 /* SplitNetworkTransportTests.swift in Sources */,
19761979
9B7BDA8E23FDE92A00ACD198 /* StarWarsSubscriptionTests.swift in Sources */,
1980+
D90F1AFB2479E57A007A1534 /* WebSocketTransportTests.swift in Sources */,
19771981
);
19781982
runOnlyForDeploymentPostprocessing = 0;
19791983
};
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import XCTest
2+
import Apollo
3+
import Starscream
4+
@testable import ApolloWebSocket
5+
6+
class WebSocketTransportTests: XCTestCase {
7+
8+
private let mockSocketURL = URL(string: "http://localhost/dummy_url")!
9+
private var webSocketTransport: WebSocketTransport!
10+
11+
func testUpdateHeaderValues() {
12+
var request = URLRequest(url: mockSocketURL)
13+
request.addValue("OldToken", forHTTPHeaderField: "Authorization")
14+
15+
self.webSocketTransport = WebSocketTransport(request: request)
16+
17+
self.webSocketTransport.updateHeaderValues(["Authorization": "UpdatedToken"])
18+
19+
XCTAssertEqual(self.webSocketTransport.websocket.request.allHTTPHeaderFields?["Authorization"], "UpdatedToken")
20+
}
21+
22+
func testUpdateConnectingPayload() {
23+
WebSocketTransport.provider = MockWebSocket.self
24+
25+
self.webSocketTransport = WebSocketTransport(request: URLRequest(url: mockSocketURL),
26+
connectingPayload: ["Authorization": "OldToken"])
27+
28+
let mockWebSocketDelegate = MockWebSocketDelegate()
29+
30+
let mockWebSocket = self.webSocketTransport.websocket as? MockWebSocket
31+
mockWebSocket?.isConnected = true
32+
mockWebSocket?.delegate = mockWebSocketDelegate
33+
34+
let exp = expectation(description: "Waiting for reconnect")
35+
36+
mockWebSocketDelegate.didReceiveMessage = { message in
37+
let json = try? JSONSerializationFormat.deserialize(data: message.data(using: .utf8)!) as? JSONObject
38+
guard let payload = json?["payload"] as? JSONObject, (json?["type"] as? String) == "connection_init" else {
39+
return
40+
}
41+
42+
XCTAssertEqual(payload["Authorization"] as? String, "UpdatedToken")
43+
exp.fulfill()
44+
}
45+
46+
self.webSocketTransport.updateConnectingPayload(["Authorization": "UpdatedToken"])
47+
self.webSocketTransport.initServer()
48+
49+
waitForExpectations(timeout: 3, handler: nil)
50+
}
51+
}
52+
53+
private final class MockWebSocketDelegate: WebSocketDelegate {
54+
55+
var didReceiveMessage: ((String) -> Void)?
56+
57+
func websocketDidConnect(socket: WebSocketClient) { }
58+
59+
func websocketDidDisconnect(socket: WebSocketClient, error: Error?) { }
60+
61+
func websocketDidReceiveMessage(socket: WebSocketClient, text: String) {
62+
didReceiveMessage?(text)
63+
}
64+
65+
func websocketDidReceiveData(socket: WebSocketClient, data: Data) { }
66+
}

0 commit comments

Comments
 (0)