88
99import XCTest
1010@testable import SocketIO
11+ import Starscream
1112
1213class SocketSideEffectTest : XCTestCase {
1314 func testInitialCurrentAck( ) {
@@ -86,6 +87,8 @@ class SocketSideEffectTest: XCTestCase {
8687 func testHandleOnceClientEvent( ) {
8788 let expect = expectation ( description: " handled event " )
8889
90+ socket. setTestStatus ( . connecting)
91+
8992 socket. once ( clientEvent: . connect) { data, ack in
9093 XCTAssertEqual ( self . socket. testHandlers. count, 0 )
9194 expect. fulfill ( )
@@ -249,6 +252,8 @@ class SocketSideEffectTest: XCTestCase {
249252 let expect = expectation ( description: " The client should call the timeout function " )
250253
251254 socket. setTestStatus ( . notConnected)
255+ socket. nsp = " /someNamespace "
256+ socket. engine = TestEngine ( client: socket, url: socket. socketURL, options: nil )
252257
253258 socket. connect ( timeoutAfter: 0.5 , withHandler: {
254259 expect. fulfill ( )
@@ -261,6 +266,7 @@ class SocketSideEffectTest: XCTestCase {
261266 let expect = expectation ( description: " The client should not call the timeout function " )
262267
263268 socket. setTestStatus ( . notConnected)
269+ socket. engine = TestEngine ( client: socket, url: socket. socketURL, options: nil )
264270
265271 socket. on ( clientEvent: . connect) { data, ack in
266272 expect. fulfill ( )
@@ -278,11 +284,30 @@ class SocketSideEffectTest: XCTestCase {
278284 waitForExpectations ( timeout: 2 )
279285 }
280286
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+
281304 func testConnectIsCalledWithNamespace( ) {
282305 let expect = expectation ( description: " The client should not call the timeout function " )
283306 let nspString = " /swift "
284307
285308 socket. setTestStatus ( . notConnected)
309+ socket. nsp = nspString
310+ socket. engine = TestEngine ( client: socket, url: socket. socketURL, options: nil )
286311
287312 socket. on ( clientEvent: . connect) { data, ack in
288313 guard let nsp = data [ 0 ] as? String else {
@@ -390,3 +415,40 @@ struct ThrowingData : SocketData {
390415 }
391416
392417}
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