mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-23 12:45:01 +01:00
Data channel messages are expected to be sent only to peer connections with "video" type, which provide the audio and video tracks of the participant (and, in fact, peer connections for screen shares do not even have data channels enabled in the WebUI). Note that this could change if at some point several audio/video tracks are sent in the same peer connection, or if "speaking" messages are added to screen shares, but that will be addressed if/when that happens. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
64 lines
2.7 KiB
Kotlin
64 lines
2.7 KiB
Kotlin
/*
|
|
* Nextcloud Talk - Android Client
|
|
*
|
|
* SPDX-FileCopyrightText: 2024 Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*/
|
|
package com.nextcloud.talk.call
|
|
|
|
import com.nextcloud.talk.models.json.signaling.DataChannelMessage
|
|
import com.nextcloud.talk.webrtc.PeerConnectionWrapper
|
|
import org.junit.Before
|
|
import org.junit.Test
|
|
import org.mockito.Mockito
|
|
import org.mockito.Mockito.never
|
|
|
|
class MessageSenderNoMcuTest {
|
|
|
|
private var peerConnectionWrappers: MutableList<PeerConnectionWrapper?>? = null
|
|
private var peerConnectionWrapper1: PeerConnectionWrapper? = null
|
|
private var peerConnectionWrapper2: PeerConnectionWrapper? = null
|
|
private var peerConnectionWrapper2Screen: PeerConnectionWrapper? = null
|
|
private var peerConnectionWrapper4Screen: PeerConnectionWrapper? = null
|
|
|
|
private var messageSender: MessageSenderNoMcu? = null
|
|
|
|
@Before
|
|
fun setUp() {
|
|
peerConnectionWrappers = ArrayList()
|
|
|
|
peerConnectionWrapper1 = Mockito.mock(PeerConnectionWrapper::class.java)
|
|
Mockito.`when`(peerConnectionWrapper1!!.sessionId).thenReturn("theSessionId1")
|
|
Mockito.`when`(peerConnectionWrapper1!!.videoStreamType).thenReturn("video")
|
|
peerConnectionWrappers!!.add(peerConnectionWrapper1)
|
|
|
|
peerConnectionWrapper2 = Mockito.mock(PeerConnectionWrapper::class.java)
|
|
Mockito.`when`(peerConnectionWrapper2!!.sessionId).thenReturn("theSessionId2")
|
|
Mockito.`when`(peerConnectionWrapper2!!.videoStreamType).thenReturn("video")
|
|
peerConnectionWrappers!!.add(peerConnectionWrapper2)
|
|
|
|
peerConnectionWrapper2Screen = Mockito.mock(PeerConnectionWrapper::class.java)
|
|
Mockito.`when`(peerConnectionWrapper2Screen!!.sessionId).thenReturn("theSessionId2")
|
|
Mockito.`when`(peerConnectionWrapper2Screen!!.videoStreamType).thenReturn("screen")
|
|
peerConnectionWrappers!!.add(peerConnectionWrapper2Screen)
|
|
|
|
peerConnectionWrapper4Screen = Mockito.mock(PeerConnectionWrapper::class.java)
|
|
Mockito.`when`(peerConnectionWrapper4Screen!!.sessionId).thenReturn("theSessionId4")
|
|
Mockito.`when`(peerConnectionWrapper4Screen!!.videoStreamType).thenReturn("screen")
|
|
peerConnectionWrappers!!.add(peerConnectionWrapper4Screen)
|
|
|
|
messageSender = MessageSenderNoMcu(peerConnectionWrappers)
|
|
}
|
|
|
|
@Test
|
|
fun testSendDataChannelMessageToAll() {
|
|
val message = DataChannelMessage()
|
|
messageSender!!.sendToAll(message)
|
|
|
|
Mockito.verify(peerConnectionWrapper1!!).send(message)
|
|
Mockito.verify(peerConnectionWrapper2!!).send(message)
|
|
Mockito.verify(peerConnectionWrapper2Screen!!, never()).send(message)
|
|
Mockito.verify(peerConnectionWrapper4Screen!!, never()).send(message)
|
|
}
|
|
}
|