SignalClientTest.kt
2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package io.livekit.android.room
import com.google.protobuf.util.JsonFormat
import kotlinx.serialization.json.Json
import livekit.LivekitRtc
import okhttp3.*
import okio.ByteString.Companion.toByteString
import org.junit.Before
import org.junit.Test
import org.mockito.Mockito
import org.mockito.kotlin.verify
class SignalClientTest {
lateinit var wsFactory: MockWebsocketFactory
lateinit var client: SignalClient
lateinit var listener: SignalClient.Listener
class MockWebsocketFactory : WebSocket.Factory {
lateinit var ws: WebSocket
lateinit var request: Request
override fun newWebSocket(request: Request, listener: WebSocketListener): WebSocket {
ws = Mockito.mock(WebSocket::class.java)
this.request = request
return ws
}
}
@Before
fun setup() {
wsFactory = MockWebsocketFactory()
client = SignalClient(
wsFactory,
JsonFormat.parser(),
JsonFormat.printer(),
Json,
useJson = false
)
listener = Mockito.mock(SignalClient.Listener::class.java)
client.listener = listener
}
fun join() {
client.join("http://www.example.com", "", null)
}
@Test
fun joinAndResponse() {
join()
client.onOpen(
wsFactory.ws,
Response.Builder()
.request(wsFactory.request)
.code(200)
.protocol(Protocol.HTTP_2)
.message("")
.build()
)
val response = with(LivekitRtc.SignalResponse.newBuilder()) {
join = with(joinBuilder) {
room = with(roomBuilder) {
name = "roomname"
sid = "sid"
build()
}
build()
}
build()
}
val byteArray = response.toByteArray()
val byteString = byteArray.toByteString(0, byteArray.size)
client.onMessage(wsFactory.ws, byteString)
verify(listener).onJoin(response.join)
}
}