22
33namespace Tests \Webrtc \RTP \Receiver ;
44
5- use Mockery ;
65use PHPUnit \Framework \Attributes \CoversClass ;
76use PHPUnit \Framework \Attributes \UsesClass ;
87use PHPUnit \Framework \TestCase ;
@@ -68,10 +67,7 @@ class RTCRtpReceiverTest extends TestCase
6867
6968 protected function setUp (): void
7069 {
71- $ this ->transportMock = Mockery::mock (RTCDtlsTransportMock::class);
72- $ this ->transportMock ->shouldReceive ('getState ' )->andReturn (TLSState::CONNECTED );
73- $ this ->transportMock ->shouldReceive ('removeRtpReceiver ' );
74- $ this ->transportMock ->shouldReceive ('getReportTransport ' )->andReturn (new RTCTransportStats (1 ));
70+ $ this ->transportMock = new RTCDtlsTransportMock ();
7571 ClockMock::register (StreamStatistics::class);
7672 }
7773
@@ -136,9 +132,6 @@ public function testConnectionError()
136132 $ receiver ->setRtcpSsrc (1234 );
137133 $ rtpParametersAudio = $ this ->getRTCRtpReceiveParametersAudio ();
138134
139- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
140- ->with ($ receiver , $ rtpParametersAudio );
141-
142135 $ receiver ->start ($ rtpParametersAudio );
143136
144137 // Simulate receiving a packet
@@ -158,8 +151,6 @@ public function testRtpAndRtcp()
158151 $ receiver ->setRtcpSsrc (1234 );
159152
160153 $ rtpParametersAudio = $ this ->getRTCRtpReceiveParametersAudio ();
161- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
162- ->with ($ receiver , $ rtpParametersAudio );
163154
164155 $ receiver ->start ($ rtpParametersAudio );
165156
@@ -215,19 +206,11 @@ public function testRtpAndRtcp()
215206 public function testRtpMissingVideoPacket ()
216207 {
217208 AVCodec::init (true );
218- $ rtcpPackets = [];
219- $ this ->transportMock ->shouldReceive ('sendRtcp ' )
220- ->andReturnUsing (function (...$ args ) use (&$ rtcpPackets ) {
221- $ rtcpPackets [] = $ args ; // Store RTCP packets in an array
222- return true ;
223- });
224-
209+ $ this ->transportMock ->resetRtcpPackets ();
225210 $ receiver = new RTCRtpReceiver (MediaKind::Video, $ this ->transportMock );
226211 $ receiver ->setTrack (new RemoteStreamTrack (MediaKind::Video));
227212 $ receiver ->setRtcpSsrc (1234 );
228213 $ rtpParametersVideo = $ this ->getRTCRtpReceiveParametersVideo ();
229- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
230- ->with ($ receiver , $ rtpParametersVideo );
231214 $ receiver ->start ($ rtpParametersVideo );
232215
233216 // Generate some packets
@@ -237,8 +220,8 @@ public function testRtpMissingVideoPacket()
237220 $ receiver ->handleRtpPacket ($ packets [0 ], 0 );
238221 $ receiver ->handleRtpPacket ($ packets [128 ], 0 );
239222
240- $ nacks = RtcpPacket::decode ($ rtcpPackets [ 0 ] [0 ]);
241- $ pli = RtcpPacket::decode ($ rtcpPackets [ 1 ][ 0 ]);
223+ $ nacks = RtcpPacket::decode ($ this -> transportMock -> getRtcpPackets () [0 ]);
224+ $ pli = RtcpPacket::decode ($ this -> transportMock -> getRtcpPackets ()[ 1 ]);
242225
243226 // Check NACK was triggered
244227 $ lostPackets = range (1 , 127 );
@@ -256,8 +239,6 @@ public function testRtpEmptyVideoPacket()
256239 $ receiver ->setTrack (new RemoteStreamTrack (MediaKind::Video));
257240 assertEquals ("video " , $ receiver ->getKind ()->value );
258241 $ rtpParametersVideo = $ this ->getRTCRtpReceiveParametersVideo ();
259- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
260- ->with ($ receiver , $ rtpParametersVideo );
261242 $ receiver ->start ($ rtpParametersVideo );
262243
263244 // Receive RTP with empty payload
@@ -273,8 +254,6 @@ public function testRtpInvalidPayload()
273254 $ receiver ->setTrack (new RemoteStreamTrack (MediaKind::Video));
274255 assertEquals ("video " , $ receiver ->getKind ()->value );
275256 $ rtpParametersVideo = $ this ->getRTCRtpReceiveParametersVideo ();
276- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
277- ->with ($ receiver , $ rtpParametersVideo );
278257 $ receiver ->start ($ rtpParametersVideo );
279258
280259 // Receive RTP with empty payload
@@ -291,8 +270,6 @@ public function testRtpUnknownPayloadType()
291270 $ receiver ->setTrack (new RemoteStreamTrack (MediaKind::Video));
292271 assertEquals ("video " , $ receiver ->getKind ()->value );
293272 $ rtpParametersVideo = $ this ->getRTCRtpReceiveParametersVideo ();
294- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
295- ->with ($ receiver , $ rtpParametersVideo );
296273 $ receiver ->start ($ rtpParametersVideo );
297274
298275 // Receive RTP with empty payload
@@ -308,8 +285,6 @@ public function testRtpDisabled()
308285 $ receiver ->setTrack (new RemoteStreamTrack (MediaKind::Video));
309286 assertEquals ("video " , $ receiver ->getKind ()->value );
310287 $ rtpParametersVideo = $ this ->getRTCRtpReceiveParametersVideo ();
311- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
312- ->with ($ receiver , $ rtpParametersVideo );
313288 $ receiver ->start ($ rtpParametersVideo );
314289 $ receiver ->setEnabled (false );
315290 $ this ->assertFalse ($ receiver ->isEnabled ());
@@ -332,8 +307,6 @@ public function testRtpRtx()
332307 $ receiver ->setTrack (new RemoteStreamTrack (MediaKind::Video));
333308 assertEquals ("video " , $ receiver ->getKind ()->value );
334309 $ rtpParametersVideo = $ this ->getRTCRtpRtxReceiveParametersVideo ();
335- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
336- ->with ($ receiver , $ rtpParametersVideo );
337310 $ receiver ->start ($ rtpParametersVideo );
338311
339312 // Receive RTX with payload
@@ -358,8 +331,6 @@ public function testRtpRtxUnknownSsrc()
358331 $ receiver ->setTrack (new RemoteStreamTrack (MediaKind::Video));
359332 assertEquals ("video " , $ receiver ->getKind ()->value );
360333 $ rtpParametersVideo = $ this ->getRTCRtpRtxUnknownSsrcReceiveParametersVideo ();
361- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
362- ->with ($ receiver , $ rtpParametersVideo );
363334 $ receiver ->start ($ rtpParametersVideo );
364335
365336 // Receive RTX with payload
@@ -373,25 +344,18 @@ public function testRtpRtxUnknownSsrc()
373344
374345 public function testSendRtcpNack ()
375346 {
376- $ rtcpPackets = [];
377- $ this ->transportMock ->shouldReceive ('sendRtcp ' )
378- ->andReturnUsing (function (...$ args ) use (&$ rtcpPackets ) {
379- $ rtcpPackets [] = $ args ; // Store RTCP packets in an array
380- return true ;
381- });
382-
347+ $ this ->transportMock ->resetRtcpPackets ();
383348 $ receiver = new RTCRtpReceiver (MediaKind::Video, $ this ->transportMock );
384349 $ receiver ->setTrack (new RemoteStreamTrack (MediaKind::Video));
385350 $ receiver ->setRtcpSsrc (1234 );
386351 $ rtpParametersVideo = $ this ->getRTCRtpReceiveParametersVideo ();
387- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
388- ->with ($ receiver , $ rtpParametersVideo );
352+
389353 $ receiver ->start ($ rtpParametersVideo );
390354
391355 // Send RTCP feedback NACK
392356 $ receiver ->sendRtcpNack (5678 , [7654 ]);
393357
394- $ nacks = RtcpPacket::decode ($ rtcpPackets [ 0 ] [0 ]);
358+ $ nacks = RtcpPacket::decode ($ this -> transportMock -> getRtcpPackets () [0 ]);
395359
396360 // Check NACK was triggered
397361 $ this ->assertEquals ([5678 , [7654 ]], [$ nacks [0 ]->getMediaSsrc (), $ nacks [0 ]->getLost ()]);
@@ -401,24 +365,16 @@ public function testSendRtcpNack()
401365
402366 public function testSendRtcpPli ()
403367 {
404- $ rtcpPackets = [];
405- $ this ->transportMock ->shouldReceive ('sendRtcp ' )
406- ->andReturnUsing (function (...$ args ) use (&$ rtcpPackets ) {
407- $ rtcpPackets [] = $ args ; // Store RTCP packets in an array
408- return true ;
409- });
410-
368+ $ this ->transportMock ->resetRtcpPackets ();
411369 $ receiver = new RTCRtpReceiver (MediaKind::Video, $ this ->transportMock );
412370 $ receiver ->setTrack (new RemoteStreamTrack (MediaKind::Video));
413371 $ receiver ->setRtcpSsrc (1234 );
414372 $ rtpParametersVideo = $ this ->getRTCRtpReceiveParametersVideo ();
415- $ this ->transportMock ->shouldReceive ('setRtpReceiver ' )
416- ->with ($ receiver , $ rtpParametersVideo );
417373 $ receiver ->start ($ rtpParametersVideo );
418374
419375 // Send RTCP feedback PLI
420376 $ receiver ->sendRtcpPli (5678 );
421- $ pli = RtcpPacket::decode ($ rtcpPackets [ 0 ] [0 ]);
377+ $ pli = RtcpPacket::decode ($ this -> transportMock -> getRtcpPackets () [0 ]);
422378
423379 $ this ->assertEquals (5678 , $ pli [0 ]->getMediaSsrc ());
424380
@@ -427,8 +383,15 @@ public function testSendRtcpPli()
427383
428384 public function testInvalidDtlsTransportState ()
429385 {
430- $ closedTransportMock = Mockery::mock (RTCDtlsTransportMock::class);
431- $ closedTransportMock ->shouldReceive ('getState ' )->once ()->andReturn (TLSState::CLOSED );
386+ $ closedTransportMock = $ this ->getMockBuilder (RTCDtlsTransportMock::class)
387+ ->disableOriginalConstructor ()
388+ ->onlyMethods (['getState ' ])
389+ ->getMock ();
390+
391+ $ closedTransportMock ->expects ($ this ->once ())
392+ ->method ('getState ' )
393+ ->willReturn (TLSState::CLOSED );
394+
432395 $ this ->expectException (InvalidArgumentException::class);
433396 new RTCRtpReceiver (MediaKind::Audio, $ closedTransportMock );
434397 }
@@ -526,10 +489,5 @@ private function getRTCRtpRtxUnknownSsrcReceiveParametersVideo(): RTCRtpReceiveP
526489 new RTCRtpCodecParameters ("video/rtx " , 90000 , 101 , parameters: ["apt " => 100 ]),
527490 ]);
528491 }
529-
530- protected function tearDown (): void
531- {
532- Mockery::close ();
533- }
534492}
535493
0 commit comments