正在显示
3 个修改的文件
包含
86 行增加
和
2 行删除
| @@ -124,10 +124,12 @@ constructor( | @@ -124,10 +124,12 @@ constructor( | ||
| 124 | } | 124 | } |
| 125 | coroutineScope.launch { | 125 | coroutineScope.launch { |
| 126 | delay(startDelay) | 126 | delay(startDelay) |
| 127 | - if (iceState != IceState.DISCONNECTED && sessionUrl != null && sessionToken != null) { | 127 | + val url = sessionUrl |
| 128 | + val token = sessionToken | ||
| 129 | + if (iceState != IceState.DISCONNECTED && url != null && token != null) { | ||
| 128 | val opts = ConnectOptions() | 130 | val opts = ConnectOptions() |
| 129 | opts.reconnect = true | 131 | opts.reconnect = true |
| 130 | - client.join(sessionUrl!!, sessionToken!!, opts) | 132 | + client.join(url, token, opts) |
| 131 | } | 133 | } |
| 132 | } | 134 | } |
| 133 | } | 135 | } |
| 1 | +package io.livekit.android.room | ||
| 2 | + | ||
| 3 | +import com.google.protobuf.util.JsonFormat | ||
| 4 | +import kotlinx.serialization.json.Json | ||
| 5 | +import livekit.LivekitRtc | ||
| 6 | +import okhttp3.* | ||
| 7 | +import okio.ByteString.Companion.toByteString | ||
| 8 | +import org.junit.Before | ||
| 9 | +import org.junit.Test | ||
| 10 | +import org.mockito.Mockito | ||
| 11 | +import org.mockito.kotlin.verify | ||
| 12 | + | ||
| 13 | +class SignalClientTest { | ||
| 14 | + | ||
| 15 | + lateinit var wsFactory: MockWebsocketFactory | ||
| 16 | + lateinit var client: SignalClient | ||
| 17 | + lateinit var listener: SignalClient.Listener | ||
| 18 | + | ||
| 19 | + class MockWebsocketFactory : WebSocket.Factory { | ||
| 20 | + lateinit var ws: WebSocket | ||
| 21 | + lateinit var request: Request | ||
| 22 | + override fun newWebSocket(request: Request, listener: WebSocketListener): WebSocket { | ||
| 23 | + ws = Mockito.mock(WebSocket::class.java) | ||
| 24 | + this.request = request | ||
| 25 | + return ws | ||
| 26 | + } | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + @Before | ||
| 30 | + fun setup() { | ||
| 31 | + wsFactory = MockWebsocketFactory() | ||
| 32 | + client = SignalClient( | ||
| 33 | + wsFactory, | ||
| 34 | + JsonFormat.parser(), | ||
| 35 | + JsonFormat.printer(), | ||
| 36 | + Json, | ||
| 37 | + useJson = false | ||
| 38 | + ) | ||
| 39 | + listener = Mockito.mock(SignalClient.Listener::class.java) | ||
| 40 | + client.listener = listener | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + fun join() { | ||
| 44 | + client.join("http://www.example.com", "", null) | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + @Test | ||
| 48 | + fun joinAndResponse() { | ||
| 49 | + join() | ||
| 50 | + client.onOpen( | ||
| 51 | + wsFactory.ws, | ||
| 52 | + Response.Builder() | ||
| 53 | + .request(wsFactory.request) | ||
| 54 | + .code(200) | ||
| 55 | + .protocol(Protocol.HTTP_2) | ||
| 56 | + .message("") | ||
| 57 | + .build() | ||
| 58 | + ) | ||
| 59 | + | ||
| 60 | + val response = with(LivekitRtc.SignalResponse.newBuilder()) { | ||
| 61 | + join = with(joinBuilder) { | ||
| 62 | + room = with(roomBuilder) { | ||
| 63 | + name = "roomname" | ||
| 64 | + sid = "sid" | ||
| 65 | + build() | ||
| 66 | + } | ||
| 67 | + build() | ||
| 68 | + } | ||
| 69 | + build() | ||
| 70 | + } | ||
| 71 | + val byteArray = response.toByteArray() | ||
| 72 | + val byteString = byteArray.toByteString(0, byteArray.size) | ||
| 73 | + | ||
| 74 | + client.onMessage(wsFactory.ws, byteString) | ||
| 75 | + | ||
| 76 | + verify(listener).onJoin(response.join) | ||
| 77 | + } | ||
| 78 | +} |
-
请 注册 或 登录 后发表评论