Security update for Core, with self-updated composer
[yaffs-website] / vendor / stack / builder / tests / functional / SilexApplicationTest.php
diff --git a/vendor/stack/builder/tests/functional/SilexApplicationTest.php b/vendor/stack/builder/tests/functional/SilexApplicationTest.php
new file mode 100644 (file)
index 0000000..5636336
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+namespace functional;
+
+use Silex\Application;
+use Stack\Builder;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+
+class SilexApplicationTest extends \PHPUnit_Framework_TestCase
+{
+    public function testWithAppendMiddlewares()
+    {
+        $app = new Application();
+
+        $app->get('/foo', function () {
+            return 'bar';
+        });
+
+        $finished = false;
+
+        $app->finish(function () use (&$finished) {
+            $finished = true;
+        });
+
+        $stack = new Builder();
+        $stack
+            ->push('functional\Append', '.A')
+            ->push('functional\Append', '.B');
+
+        $app = $stack->resolve($app);
+
+        $request = Request::create('/foo');
+        $response = $app->handle($request);
+        $app->terminate($request, $response);
+
+        $this->assertSame('bar.B.A', $response->getContent());
+        $this->assertTrue($finished);
+    }
+}
+
+class Append implements HttpKernelInterface
+{
+    private $app;
+    private $appendix;
+
+    public function __construct(HttpKernelInterface $app, $appendix)
+    {
+        $this->app = $app;
+        $this->appendix = $appendix;
+    }
+
+    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
+    {
+        $response = clone $this->app->handle($request, $type, $catch);
+        $response->setContent($response->getContent().$this->appendix);
+
+        return $response;
+    }
+}