@@ -274,3 +274,46 @@ func Test_RTPTransceiver_UnattachedRTX(t *testing.T) {
274274
275275 closePairNow (t , offerPC , answerPC )
276276}
277+
278+ // Assert that a transceiver, onces stopped, is rejected in offers
279+ func Test_RTPTransceiver_Stopped_Transceiver_Is_Rejected (t * testing.T ) {
280+ // This test is skipped for now because it fails
281+ return
282+ m := & MediaEngine {}
283+ assert .NoError (t , m .RegisterDefaultCodecs ())
284+
285+ offerPC , err := NewAPI (WithMediaEngine (m )).NewPeerConnection (Configuration {})
286+ assert .NoError (t , err )
287+
288+ answerPC , err := NewAPI (WithMediaEngine (m )).NewPeerConnection (Configuration {})
289+ assert .NoError (t , err )
290+
291+ offerTransceiver , err := offerPC .AddTransceiverFromKind (RTPCodecTypeVideo )
292+ assert .NoError (t , err )
293+
294+ _ , err = answerPC .AddTransceiverFromKind (RTPCodecTypeVideo )
295+ assert .NoError (t , err )
296+
297+ offer , err := offerPC .CreateOffer (nil )
298+ assert .NoError (t , err )
299+
300+ assert .NoError (t , offerPC .SetLocalDescription (offer ))
301+ assert .NoError (t , answerPC .SetRemoteDescription (offer ))
302+
303+ answer , err := answerPC .CreateAnswer (nil )
304+ assert .NoError (t , err )
305+
306+ assert .NoError (t , answerPC .SetLocalDescription (answer ))
307+ assert .NoError (t , offerPC .SetRemoteDescription (answer ))
308+
309+ assert .NotEmpty (t , offerTransceiver .Mid (), "A transceiver should have been associated after applying an answer" )
310+ assert .NoError (t , offerTransceiver .Stop ())
311+
312+ offer , err = offerPC .CreateOffer (nil )
313+ assert .NoError (t , err )
314+
315+ mediaDesc := offer .parsed .MediaDescriptions [0 ]
316+ assert .Equal (t , mediaDesc .MediaName .Port .Value , 0 , "After stopping a transceiver it should be rejected in offers" )
317+
318+ closePairNow (t , offerPC , answerPC )
319+ }
0 commit comments