|
|
@@ -26,6 +26,7 @@ use Cake\TestSuite\TestCase;
|
|
|
use Laminas\Diactoros\Response as DiactorosResponse;
|
|
|
use Laminas\Diactoros\Response\RedirectResponse;
|
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
|
+use RuntimeException;
|
|
|
use TestApp\Http\TestRequestHandler;
|
|
|
|
|
|
/**
|
|
|
@@ -144,6 +145,26 @@ class CsrfProtectionMiddlewareTest extends TestCase
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Test that double applying CSRF causes a failure.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function testDoubleApplicationFailure()
|
|
|
+ {
|
|
|
+ $request = new ServerRequest([
|
|
|
+ 'environment' => ['REQUEST_METHOD' => 'GET'],
|
|
|
+ ]);
|
|
|
+ $request = $request->withAttribute('csrfToken', 'not-good');
|
|
|
+ $handler = new TestRequestHandler(function () {
|
|
|
+ return new RedirectResponse('/');
|
|
|
+ });
|
|
|
+
|
|
|
+ $middleware = new CsrfProtectionMiddleware();
|
|
|
+ $this->expectException(RuntimeException::class);
|
|
|
+ $middleware->process($request, $handler);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Test that the CSRF tokens are set for diactoros responses
|
|
|
*
|
|
|
* @return void
|