File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -49,8 +49,6 @@ public function __invoke(Socket $socket): \Generator
4949 $ header [] = "Content-Length: {$ this ->bufferer ->getCurrentProgress ()}" ;
5050 }
5151
52- yield $ socket ->write (implode ("\r\n" , $ header )."\r\n\r\n" );
53-
5452 $ progressBar = new ProgressBar (
5553 $ this ->consoleOutput ->section (),
5654 $ this ->bufferer ->getCurrentProgress (),
@@ -61,6 +59,8 @@ public function __invoke(Socket $socket): \Generator
6159 $ handle = new ResourceInputStream (fopen ($ this ->bufferer ->getFilePath (), 'rb ' ));
6260
6361 try {
62+ yield $ socket ->write (implode ("\r\n" , $ header )."\r\n\r\n" );
63+
6464 while (true ) {
6565 $ buffererProgress = $ this ->bufferer ->getCurrentProgress ();
6666
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Ostrolucky \Stdinho \Tests ;
6+
7+ use Amp \Coroutine ;
8+ use Amp \Socket \ClientSocket ;
9+ use Amp \Success ;
10+ use Ostrolucky \Stdinho \Bufferer \ResolvedBufferer ;
11+ use Ostrolucky \Stdinho \Responder ;
12+ use PHPUnit \Framework \TestCase ;
13+ use Psr \Log \Test \TestLogger ;
14+ use Symfony \Component \Console \Output \ConsoleOutput ;
15+ use function Amp \Promise \wait ;
16+
17+ class ResponderTest extends TestCase
18+ {
19+ public function testResponderHandlesClientAbruptDisconnect (): void
20+ {
21+ $ responder = new Responder (
22+ $ logger = new TestLogger (),
23+ new ResolvedBufferer (__FILE__ ),
24+ $ this ->createMock (ConsoleOutput::class)
25+ );
26+
27+ $ socket = $ this ->getMockBuilder (ClientSocket::class)
28+ ->setConstructorArgs ([$ resource = fopen ('php://memory ' , 'rw ' )])
29+ ->setMethods (['read ' , 'getRemoteAddress ' ])
30+ ->getMock ()
31+ ;
32+
33+ $ socket ->method ('read ' )->willReturn (new Success ('' ));
34+
35+ fclose ($ resource );
36+
37+ wait (new Coroutine ($ responder ->__invoke ($ socket )));
38+
39+ self ::assertTrue ($ logger ->hasDebugThatContains ('aborted download ' ));
40+ }
41+ }
You can’t perform that action at this time.
0 commit comments