Fixes test cases for the CallManagerTest

This commit is contained in:
Vitor Pamplona
2026-04-20 09:21:01 -04:00
parent 5aa63c96a6
commit 516115cc1c
2 changed files with 22 additions and 16 deletions
@@ -91,7 +91,7 @@ class MarmotFileUploader(
val state = item.orchestrator.progressState.value val state = item.orchestrator.progressState.value
if (state is UploadingState.Finished && state.result is UploadOrchestrator.OrchestratorResult.ServerResult) { if (state is UploadingState.Finished && state.result is UploadOrchestrator.OrchestratorResult.ServerResult) {
val serverResult = state.result as UploadOrchestrator.OrchestratorResult.ServerResult val serverResult = state.result
results.add( results.add(
Mip04UploadResult( Mip04UploadResult(
url = serverResult.url, url = serverResult.url,
@@ -112,6 +112,12 @@ class CallManagerTest {
return events to job return events to job
} }
private fun TestScope.collectRenegotiationEvents(manager: CallManager): Pair<MutableList<CallRenegotiateEvent>, Job> {
val events = mutableListOf<CallRenegotiateEvent>()
val job = launch { manager.renegotiationEvents.collect { events.add(it) } }
return events to job
}
// ---- Event construction helpers ---- // ---- Event construction helpers ----
// These use the real event builders from quartz so that tag structures // These use the real event builders from quartz so that tag structures
// stay in sync with the production code. The builder returns an // stay in sync with the production code. The builder returns an
@@ -569,13 +575,13 @@ class CallManagerTest {
manager.onPeerConnected() manager.onPeerConnected()
assertIs<CallState.Connected>(manager.state.value) assertIs<CallState.Connected>(manager.state.value)
var receivedRenego: CallRenegotiateEvent? = null val (renegoEvents, renegoJob) = collectRenegotiationEvents(manager)
manager.onRenegotiationOfferReceived = { receivedRenego = it }
val renego = makeRenegotiate(from = alice, to = bob) val renego = makeRenegotiate(from = alice, to = bob)
manager.onSignalingEvent(renego) manager.onSignalingEvent(renego)
assertNotNull(receivedRenego, "Renegotiation should be forwarded in Connected state") assertNotNull(renegoEvents.firstOrNull(), "Renegotiation should be forwarded in Connected state")
renegoJob.cancel()
} }
@Test @Test
@@ -587,13 +593,13 @@ class CallManagerTest {
manager.acceptCall(sdpAnswer) manager.acceptCall(sdpAnswer)
assertIs<CallState.Connecting>(manager.state.value) assertIs<CallState.Connecting>(manager.state.value)
var receivedRenego: CallRenegotiateEvent? = null val (renegoEvents, renegoJob) = collectRenegotiationEvents(manager)
manager.onRenegotiationOfferReceived = { receivedRenego = it }
val renego = makeRenegotiate(from = alice, to = bob) val renego = makeRenegotiate(from = alice, to = bob)
manager.onSignalingEvent(renego) manager.onSignalingEvent(renego)
assertNotNull(receivedRenego) assertNotNull(renegoEvents.firstOrNull())
renegoJob.cancel()
} }
@Test @Test
@@ -601,14 +607,14 @@ class CallManagerTest {
runTest { runTest {
val (manager, _) = createManager(localPubKey = bob) val (manager, _) = createManager(localPubKey = bob)
var receivedRenego: CallRenegotiateEvent? = null val (renegoEvents, renegoJob) = collectRenegotiationEvents(manager)
manager.onRenegotiationOfferReceived = { receivedRenego = it }
val renego = makeRenegotiate(from = alice, to = bob) val renego = makeRenegotiate(from = alice, to = bob)
manager.onSignalingEvent(renego) manager.onSignalingEvent(renego)
assertIs<CallState.Idle>(manager.state.value) assertIs<CallState.Idle>(manager.state.value)
assertEquals(null, receivedRenego, "Renegotiation in Idle state should be ignored") assertEquals(0, renegoEvents.size, "Renegotiation in Idle state should be ignored")
renegoJob.cancel()
} }
@Test @Test
@@ -620,13 +626,13 @@ class CallManagerTest {
manager.acceptCall(sdpAnswer) manager.acceptCall(sdpAnswer)
manager.onPeerConnected() manager.onPeerConnected()
var receivedRenego: CallRenegotiateEvent? = null val (renegoEvents, renegoJob) = collectRenegotiationEvents(manager)
manager.onRenegotiationOfferReceived = { receivedRenego = it }
val renego = makeRenegotiate(from = alice, to = bob, callId = "wrong-call-id") val renego = makeRenegotiate(from = alice, to = bob, callId = "wrong-call-id")
manager.onSignalingEvent(renego) manager.onSignalingEvent(renego)
assertEquals(null, receivedRenego, "Renegotiation for wrong call-id should be ignored") assertEquals(0, renegoEvents.size, "Renegotiation for wrong call-id should be ignored")
renegoJob.cancel()
} }
// ======================================================================== // ========================================================================
@@ -1765,10 +1771,10 @@ class CallManagerTest {
assertEquals(1, alicePublished.size) assertEquals(1, alicePublished.size)
// Step 7: Bob receives renegotiate and responds // Step 7: Bob receives renegotiate and responds
var renegoReceived = false val (bobRenegoEvents, bobRenegoJob) = collectRenegotiationEvents(bobManager)
bobManager.onRenegotiationOfferReceived = { renegoReceived = true }
bobManager.onSignalingEvent(makeRenegotiate(from = alice, to = bob)) bobManager.onSignalingEvent(makeRenegotiate(from = alice, to = bob))
assertTrue(renegoReceived) assertTrue(bobRenegoEvents.isNotEmpty())
bobRenegoJob.cancel()
bobPublished.clear() bobPublished.clear()
bobManager.sendRenegotiationAnswer("renego-answer-sdp", alice) bobManager.sendRenegotiationAnswer("renego-answer-sdp", alice)