|
3 | 3 | namespace PhpMiddlewareTest\PhpDebugBar;
|
4 | 4 |
|
5 | 5 | use DebugBar\JavascriptRenderer;
|
| 6 | +use org\bovigo\vfs\vfsStream; |
6 | 7 | use PhpMiddleware\PhpDebugBar\PhpDebugBarMiddleware;
|
| 8 | +use PHPUnit_Framework_TestCase; |
7 | 9 | use Zend\Diactoros\Response;
|
8 | 10 | use Zend\Diactoros\ServerRequest;
|
| 11 | +use Zend\Diactoros\Uri; |
9 | 12 |
|
10 | 13 | /**
|
11 | 14 | * PhpDebugBarMiddlewareTest
|
12 | 15 | *
|
13 | 16 | * @author Witold Wasiczko <[email protected]>
|
14 | 17 | */
|
15 |
| -class PhpDebugBarMiddlewareTest extends \PHPUnit_Framework_TestCase |
| 18 | +class PhpDebugBarMiddlewareTest extends PHPUnit_Framework_TestCase |
16 | 19 | {
|
17 | 20 | protected $debugbarRenderer;
|
18 | 21 | protected $middleware;
|
@@ -101,4 +104,61 @@ public function testAppendsToEndOfHtmlResponse()
|
101 | 104 | $this->assertSame($response, $result);
|
102 | 105 | $this->assertSame($html . 'RenderHeadRenderBody', (string) $result->getBody());
|
103 | 106 | }
|
| 107 | + |
| 108 | + public function testTryToHandleNotExistingStaticFile() |
| 109 | + { |
| 110 | + $this->debugbarRenderer->expects($this->any())->method('getBaseUrl')->willReturn('/phpdebugbar'); |
| 111 | + |
| 112 | + $uri = new Uri('http://example.com/phpdebugbar/boo.css'); |
| 113 | + $request = new ServerRequest([], [], $uri, null, 'php://memory'); |
| 114 | + $response = new Response\HtmlResponse('<html></html>'); |
| 115 | + |
| 116 | + $calledOut = false; |
| 117 | + $outFunction = function ($request, $response) use (&$calledOut) { |
| 118 | + $calledOut = true; |
| 119 | + return $response; |
| 120 | + }; |
| 121 | + |
| 122 | + $result = call_user_func($this->middleware, $request, $response, $outFunction); |
| 123 | + $this->assertTrue($calledOut, 'Out is not called'); |
| 124 | + $this->assertSame($response, $result); |
| 125 | + } |
| 126 | + |
| 127 | + /** |
| 128 | + * @dataProvider getContentTypes |
| 129 | + */ |
| 130 | + public function testHandleStaticFile($extension, $contentType) |
| 131 | + { |
| 132 | + $root = vfsStream::setup('boo'); |
| 133 | + |
| 134 | + $this->debugbarRenderer->expects($this->any())->method('getBaseUrl')->willReturn('/phpdebugbar'); |
| 135 | + $this->debugbarRenderer->expects($this->any())->method('getBasePath')->willReturn(vfsStream::url('boo')); |
| 136 | + |
| 137 | + $uri = new Uri(sprintf('http://example.com/phpdebugbar/debugbar.%s', $extension)); |
| 138 | + $request = new ServerRequest([], [], $uri, null, 'php://memory'); |
| 139 | + $response = new Response\HtmlResponse('<html></html>'); |
| 140 | + |
| 141 | + vfsStream::newFile(sprintf('debugbar.%s', $extension))->withContent('filecontent')->at($root); |
| 142 | + |
| 143 | + $calledOut = false; |
| 144 | + $outFunction = function ($request, $response) use (&$calledOut) { |
| 145 | + $calledOut = true; |
| 146 | + return $response; |
| 147 | + }; |
| 148 | + |
| 149 | + $result = call_user_func($this->middleware, $request, $response, $outFunction); |
| 150 | + $this->assertFalse($calledOut, 'Out is called'); |
| 151 | + $this->assertNotSame($response, $result); |
| 152 | + $this->assertSame($contentType, $result->getHeaderLine('Content-type')); |
| 153 | + $this->assertSame('filecontent', (string) $result->getBody()); |
| 154 | + } |
| 155 | + |
| 156 | + public function getContentTypes() |
| 157 | + { |
| 158 | + return [ |
| 159 | + ['css', 'text/css'], |
| 160 | + ['js', 'text/javascript'], |
| 161 | + ['html', 'text/plain'], |
| 162 | + ]; |
| 163 | + } |
104 | 164 | }
|
0 commit comments