@@ -3,8 +3,10 @@ package com.piasy.kmp.socketio.engineio
33import com.piasy.kmp.socketio.engineio.transports.PollingXHR
44import com.piasy.kmp.socketio.engineio.transports.TransportFactory
55import com.piasy.kmp.socketio.engineio.transports.WebSocket
6+ import io.ktor.client.HttpClient
67import io.mockk.every
78import io.mockk.mockk
9+ import io.mockk.slot
810import io.mockk.spyk
911import io.mockk.verify
1012import kotlinx.coroutines.*
@@ -19,6 +21,7 @@ import org.hildan.socketio.SocketIOPacket
1921import kotlin.test.Test
2022import kotlin.test.assertEquals
2123import kotlin.test.assertFalse
24+ import kotlin.test.assertSame
2225
2326class EngineSocketTest : BaseTest () {
2427
@@ -116,6 +119,25 @@ class EngineSocketTest : BaseTest() {
116119 assertEquals(listOf (EngineSocket .EVENT_TRANSPORT ), sock.events)
117120 }
118121
122+ @Test
123+ fun openWithExternalHttpClient () = runTest {
124+ val opt = EngineSocket .Options ()
125+ opt.transports = listOf (PollingXHR .NAME )
126+ val externalHttpClient = mockk<HttpClient >(relaxed = true )
127+ opt.httpClient = externalHttpClient
128+
129+ val transport = spyk(TestTransport (Transport .Options (), this , PollingXHR .NAME ))
130+ val factory = mockk<TransportFactory >()
131+ val transportOpt = slot<Transport .Options >()
132+ every { factory.create(any(), capture(transportOpt), any(), any()) } returns transport
133+
134+ val socket = EngineSocket (" http://localhost" , opt, this , factory)
135+ socket.open()
136+ advanceUntilIdle()
137+
138+ assertSame(externalHttpClient, transportOpt.captured.httpClient)
139+ }
140+
119141 @Test
120142 fun openSuccess () = runTest {
121143 val sock = prepareSocket(listOf (WebSocket .NAME ), this )
0 commit comments