diff --git a/Bridges/HttpKernel.php b/Bridges/HttpKernel.php index 07693f8..8536349 100644 --- a/Bridges/HttpKernel.php +++ b/Bridges/HttpKernel.php @@ -14,7 +14,6 @@ use Symfony\Component\HttpFoundation\File\UploadedFile as SymfonyFile; use Symfony\Component\HttpFoundation\Request as SymfonyRequest; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; -use Symfony\Component\HttpFoundation\StreamedResponse as SymfonyStreamedResponse; use Symfony\Component\HttpKernel\TerminableInterface; use Illuminate\Contracts\Http\Kernel; @@ -290,13 +289,8 @@ protected function mapResponse(SymfonyResponse $syResponse, $stdout='') // get contents ob_start(); - if ($syResponse instanceof SymfonyStreamedResponse) { - $syResponse->sendContent(); - $content = @ob_get_clean(); - } else { - $content = $syResponse->getContent(); - @ob_end_flush(); - } + $syResponse->sendContent(); + $content = @ob_get_clean(); if ($stdout) { $content = $stdout . $content; diff --git a/tests/SymfonyBootstrapTest.php b/tests/SymfonyBootstrapTest.php index ef5ad13..fd8e01e 100644 --- a/tests/SymfonyBootstrapTest.php +++ b/tests/SymfonyBootstrapTest.php @@ -83,4 +83,26 @@ public function testPostJSON() $this->assertEquals(201, $response->getStatusCode()); $this->assertEquals('Received JSON: {"some_json_array":[{"map1":"value1"},{"map2":"value2"}]}', (string)$response->getBody()); } + + /** + * @runInSeparateProcess + */ + public function testStreamedResponse() + { + putenv('APP_KERNEL_NAMESPACE=PHPPM\\Tests\\SymfonyMocks\\'); + $bridge = new HttpKernel(); + $bridge->bootstrap('Symfony', 'test', true); + + $request = $this->getMockBuilder(ServerRequestInterface::class)->getMock(); + $request->method('getHeader')->with('Cookie')->willReturn([]); + $request->method('getQueryParams')->willReturn([]); + $request->method('getUploadedFiles')->willReturn([]); + $request->method('getMethod')->willReturn('GET'); + + $_SERVER['REQUEST_URI'] = '/streamed'; + + $response = $bridge->handle($request); + $this->assertEquals(200, $response->getStatusCode()); + $this->assertEquals('streamed data', (string)$response->getBody()); + } } diff --git a/tests/SymfonyMocks/Kernel.php b/tests/SymfonyMocks/Kernel.php index 6e1c75e..dd2a16a 100644 --- a/tests/SymfonyMocks/Kernel.php +++ b/tests/SymfonyMocks/Kernel.php @@ -4,6 +4,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\StreamedResponse; class Kernel { @@ -69,6 +70,12 @@ public function handle(Request $request) return new Response('Received JSON: '.$request->getContent(), 201); } } elseif ($request->getMethod() == 'GET') { + if ($request->getPathInfo() == '/streamed') { + return new StreamedResponse(function () { + echo 'streamed data'; + }, 200); + } + // Simple get request return new Response('Success', 200); }