8
8
9
9
import XCTest
10
10
@testable import SocketIO
11
+ import Starscream
11
12
12
13
class SocketSideEffectTest : XCTestCase {
13
14
func testInitialCurrentAck( ) {
@@ -86,6 +87,8 @@ class SocketSideEffectTest: XCTestCase {
86
87
func testHandleOnceClientEvent( ) {
87
88
let expect = expectation ( description: " handled event " )
88
89
90
+ socket. setTestStatus ( . connecting)
91
+
89
92
socket. once ( clientEvent: . connect) { data, ack in
90
93
XCTAssertEqual ( self . socket. testHandlers. count, 0 )
91
94
expect. fulfill ( )
@@ -249,6 +252,8 @@ class SocketSideEffectTest: XCTestCase {
249
252
let expect = expectation ( description: " The client should call the timeout function " )
250
253
251
254
socket. setTestStatus ( . notConnected)
255
+ socket. nsp = " /someNamespace "
256
+ socket. engine = TestEngine ( client: socket, url: socket. socketURL, options: nil )
252
257
253
258
socket. connect ( timeoutAfter: 0.5 , withHandler: {
254
259
expect. fulfill ( )
@@ -261,6 +266,7 @@ class SocketSideEffectTest: XCTestCase {
261
266
let expect = expectation ( description: " The client should not call the timeout function " )
262
267
263
268
socket. setTestStatus ( . notConnected)
269
+ socket. engine = TestEngine ( client: socket, url: socket. socketURL, options: nil )
264
270
265
271
socket. on ( clientEvent: . connect) { data, ack in
266
272
expect. fulfill ( )
@@ -278,11 +284,30 @@ class SocketSideEffectTest: XCTestCase {
278
284
waitForExpectations ( timeout: 2 )
279
285
}
280
286
287
+ func testClientCallsConnectOnEngineOpen( ) {
288
+ let expect = expectation ( description: " The client call the connect handler " )
289
+
290
+ socket. setTestStatus ( . notConnected)
291
+ socket. engine = TestEngine ( client: socket, url: socket. socketURL, options: nil )
292
+
293
+ socket. on ( clientEvent: . connect) { data, ack in
294
+ expect. fulfill ( )
295
+ }
296
+
297
+ socket. connect ( timeoutAfter: 0.5 , withHandler: {
298
+ XCTFail ( " Should not call timeout handler if status is connected " )
299
+ } )
300
+
301
+ waitForExpectations ( timeout: 2 )
302
+ }
303
+
281
304
func testConnectIsCalledWithNamespace( ) {
282
305
let expect = expectation ( description: " The client should not call the timeout function " )
283
306
let nspString = " /swift "
284
307
285
308
socket. setTestStatus ( . notConnected)
309
+ socket. nsp = nspString
310
+ socket. engine = TestEngine ( client: socket, url: socket. socketURL, options: nil )
286
311
287
312
socket. on ( clientEvent: . connect) { data, ack in
288
313
guard let nsp = data [ 0 ] as? String else {
@@ -390,3 +415,40 @@ struct ThrowingData : SocketData {
390
415
}
391
416
392
417
}
418
+
419
+ class TestEngine : SocketEngineSpec {
420
+ weak var client : SocketEngineClient ?
421
+ private( set) var closed = false
422
+ private( set) var connected = false
423
+ var connectParams : [ String : Any ] ? = nil
424
+ private( set) var cookies : [ HTTPCookie ] ? = nil
425
+ private( set) var engineQueue = DispatchQueue . main
426
+ private( set) var extraHeaders : [ String : String ] ? = nil
427
+ private( set) var fastUpgrade = false
428
+ private( set) var forcePolling = false
429
+ private( set) var forceWebsockets = false
430
+ private( set) var polling = false
431
+ private( set) var probing = false
432
+ private( set) var sid = " "
433
+ private( set) var socketPath = " "
434
+ private( set) var urlPolling = URL ( string: " http://localhost/ " ) !
435
+ private( set) var urlWebSocket = URL ( string: " http://localhost/ " ) !
436
+ private( set) var websocket = false
437
+ private( set) var ws : WebSocket ? = nil
438
+
439
+ required init ( client: SocketEngineClient , url: URL , options: NSDictionary ? ) {
440
+ self . client = client
441
+ }
442
+
443
+ func connect( ) {
444
+ client? . engineDidOpen ( reason: " Connect " )
445
+ }
446
+
447
+ func didError( reason: String ) { }
448
+ func disconnect( reason: String ) { }
449
+ func doFastUpgrade( ) { }
450
+ func flushWaitingForPostToWebSocket( ) { }
451
+ func parseEngineData( _ data: Data ) { }
452
+ func parseEngineMessage( _ message: String ) { }
453
+ func write( _ msg: String , withType type: SocketEnginePacketType , withData data: [ Data ] ) { }
454
+ }
0 commit comments