@@ -132,3 +132,46 @@ func Test_RTPTransceiver_SetCodecPreferences_PayloadType(t *testing.T) {
132132
133133 closePairNow (t , offerPC , answerPC )
134134}
135+
136+ // Assert that a transceiver, onces stopped, is rejected in offers
137+ func Test_RTPTransceiver_Stopped_Transceiver_Is_Rejected (t * testing.T ) {
138+ // This test is skipped for now because it fails
139+ return
140+ m := & MediaEngine {}
141+ assert .NoError (t , m .RegisterDefaultCodecs ())
142+
143+ offerPC , err := NewAPI (WithMediaEngine (m )).NewPeerConnection (Configuration {})
144+ assert .NoError (t , err )
145+
146+ answerPC , err := NewAPI (WithMediaEngine (m )).NewPeerConnection (Configuration {})
147+ assert .NoError (t , err )
148+
149+ offerTransceiver , err := offerPC .AddTransceiverFromKind (RTPCodecTypeVideo )
150+ assert .NoError (t , err )
151+
152+ _ , err = answerPC .AddTransceiverFromKind (RTPCodecTypeVideo )
153+ assert .NoError (t , err )
154+
155+ offer , err := offerPC .CreateOffer (nil )
156+ assert .NoError (t , err )
157+
158+ assert .NoError (t , offerPC .SetLocalDescription (offer ))
159+ assert .NoError (t , answerPC .SetRemoteDescription (offer ))
160+
161+ answer , err := answerPC .CreateAnswer (nil )
162+ assert .NoError (t , err )
163+
164+ assert .NoError (t , answerPC .SetLocalDescription (answer ))
165+ assert .NoError (t , offerPC .SetRemoteDescription (answer ))
166+
167+ assert .NotEmpty (t , offerTransceiver .Mid (), "A transceiver should have been associated after applying an answer" )
168+ assert .NoError (t , offerTransceiver .Stop ())
169+
170+ offer , err = offerPC .CreateOffer (nil )
171+ assert .NoError (t , err )
172+
173+ mediaDesc := offer .parsed .MediaDescriptions [0 ]
174+ assert .Equal (t , mediaDesc .MediaName .Port .Value , 0 , "After stopping a transceiver it should be rejected in offers" )
175+
176+ closePairNow (t , offerPC , answerPC )
177+ }
0 commit comments