Skip to content

Commit 3b01022

Browse files
committed
fix: Require MockWebSocket to be initialized with a graphql subscriptions protocol
1 parent 4a6950a commit 3b01022

6 files changed

Lines changed: 35 additions & 13 deletions

File tree

Sources/ApolloTestSupport/MockWebSocket.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ public class MockWebSocket: WebSocketClient {
88
public var delegate: WebSocketClientDelegate? = nil
99
public var isConnected: Bool = false
1010

11-
public required init(request: URLRequest) {
11+
public required init(request: URLRequest, protocol: WebSocket.WSProtocol) {
1212
self.request = request
13+
14+
self.request.setValue(`protocol`.description, forHTTPHeaderField: WebSocket.Constants.headerWSProtocolName)
1315
}
1416

1517
open func reportDidConnect() {

Tests/ApolloTests/WebSocket/GraphqlTransportWsProtocolTests.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ class GraphqlTransportWsProtocolTests: WSProtocolTestsBase {
1616
return request
1717
}
1818

19+
private func buildWebSocket() {
20+
buildWebSocket(protocol: .graphql_transport_ws)
21+
}
22+
1923
// MARK: Initializer Tests
2024

2125
func test__designatedInitializer__shouldSetRequestProtocolHeader() {

Tests/ApolloTests/WebSocket/GraphqlWsProtocolTests.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ class GraphqlWsProtocolTests: WSProtocolTestsBase {
1616
return request
1717
}
1818

19+
private func buildWebSocket() {
20+
buildWebSocket(protocol: .graphql_ws)
21+
}
22+
1923
// MARK: Initializer Tests
2024

2125
func test__designatedInitializer__shouldSetRequestProtocolHeader() {

Tests/ApolloTests/WebSocket/WSProtocolTestsBase.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ class WSProtocolTestsBase: XCTestCase {
4040
fatalError("Subclasses must override this property!")
4141
}
4242

43-
func buildWebSocket() {
43+
func buildWebSocket(protocol: WebSocket.WSProtocol) {
4444
mockWebSocketDelegate = MockWebSocketDelegate()
45-
mockWebSocket = MockWebSocket(request: urlRequest)
45+
mockWebSocket = MockWebSocket(request: urlRequest, protocol: `protocol`)
4646
websocketTransport = WebSocketTransport(websocket: mockWebSocket, store: store)
4747
}
4848

Tests/ApolloTests/WebSocket/WebSocketTests.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ class WebSocketTests: XCTestCase {
2828
super.setUp()
2929

3030
let store = ApolloStore()
31-
let websocket = MockWebSocket(request:URLRequest(url: TestURL.mockServer.url))
31+
let websocket = MockWebSocket(
32+
request:URLRequest(url: TestURL.mockServer.url),
33+
protocol: .graphql_ws
34+
)
3235
networkTransport = WebSocketTransport(websocket: websocket, store: store)
3336
client = ApolloClient(networkTransport: networkTransport!, store: store)
3437
}
@@ -133,7 +136,10 @@ class WebSocketTests: XCTestCase {
133136
let expectation = self.expectation(description: "Single Subscription with Custom Operation Message Id Creator")
134137

135138
let store = ApolloStore()
136-
let websocket = MockWebSocket(request:URLRequest(url: TestURL.mockServer.url))
139+
let websocket = MockWebSocket(
140+
request:URLRequest(url: TestURL.mockServer.url),
141+
protocol: .graphql_ws
142+
)
137143
networkTransport = WebSocketTransport(websocket: websocket, store: store, operationMessageIdCreator: CustomOperationMessageIdCreator())
138144
client = ApolloClient(networkTransport: networkTransport!, store: store)
139145

Tests/ApolloTests/WebSocket/WebSocketTransportTests.swift

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ class WebSocketTransportTests: XCTestCase {
1717
var request = URLRequest(url: TestURL.mockServer.url)
1818
request.addValue("OldToken", forHTTPHeaderField: "Authorization")
1919

20-
self.webSocketTransport = WebSocketTransport(websocket: MockWebSocket(request: request),
21-
store: ApolloStore())
20+
self.webSocketTransport = WebSocketTransport(
21+
websocket: MockWebSocket(request: request, protocol: .graphql_ws),
22+
store: ApolloStore()
23+
)
2224

2325
self.webSocketTransport.updateHeaderValues(["Authorization": "UpdatedToken"])
2426

@@ -28,9 +30,11 @@ class WebSocketTransportTests: XCTestCase {
2830
func testUpdateConnectingPayload() {
2931
let request = URLRequest(url: TestURL.mockServer.url)
3032

31-
self.webSocketTransport = WebSocketTransport(websocket: MockWebSocket(request: request),
32-
store: ApolloStore(),
33-
connectingPayload: ["Authorization": "OldToken"])
33+
self.webSocketTransport = WebSocketTransport(
34+
websocket: MockWebSocket(request: request, protocol: .graphql_ws),
35+
store: ApolloStore(),
36+
connectingPayload: ["Authorization": "OldToken"]
37+
)
3438

3539
let mockWebSocketDelegate = MockWebSocketDelegate()
3640

@@ -59,9 +63,11 @@ class WebSocketTransportTests: XCTestCase {
5963
func testCloseConnectionAndInit() {
6064
let request = URLRequest(url: TestURL.mockServer.url)
6165

62-
self.webSocketTransport = WebSocketTransport(websocket: MockWebSocket(request: request),
63-
store: ApolloStore(),
64-
connectingPayload: ["Authorization": "OldToken"])
66+
self.webSocketTransport = WebSocketTransport(
67+
websocket: MockWebSocket(request: request, protocol: .graphql_ws),
68+
store: ApolloStore(),
69+
connectingPayload: ["Authorization": "OldToken"]
70+
)
6571
self.webSocketTransport.closeConnection()
6672
self.webSocketTransport.updateConnectingPayload(["Authorization": "UpdatedToken"])
6773
self.webSocketTransport.initServer()

0 commit comments

Comments
 (0)