|
|
@@ -54,11 +54,6 @@ class IntegrationTestTraitTest extends TestCase
|
|
|
protected $key = 'abcdabcdabcdabcdabcdabcdabcdabcdabcd';
|
|
|
|
|
|
/**
|
|
|
- * @var \Cake\Routing\RouteBuilder
|
|
|
- */
|
|
|
- protected $builder;
|
|
|
-
|
|
|
- /**
|
|
|
* Setup method
|
|
|
*/
|
|
|
public function setUp(): void
|
|
|
@@ -67,27 +62,30 @@ class IntegrationTestTraitTest extends TestCase
|
|
|
static::setAppNamespace();
|
|
|
|
|
|
Router::reload();
|
|
|
- $this->builder = Router::createRouteBuilder('/');
|
|
|
- $this->builder->setExtensions(['json']);
|
|
|
- $this->builder->registerMiddleware('cookie', new EncryptedCookieMiddleware(['secrets'], $this->key));
|
|
|
- $this->builder->applyMiddleware('cookie');
|
|
|
-
|
|
|
- $this->builder->setRouteClass(InflectedRoute::class);
|
|
|
- $this->builder->get('/get/{controller}/{action}', []);
|
|
|
- $this->builder->head('/head/{controller}/{action}', []);
|
|
|
- $this->builder->options('/options/{controller}/{action}', []);
|
|
|
- $this->builder->connect('/{controller}/{action}/*', []);
|
|
|
-
|
|
|
- $this->builder->scope('/cookie-csrf/', ['csrf' => 'cookie'], function (RouteBuilder $routes): void {
|
|
|
- $routes->registerMiddleware('cookieCsrf', new CsrfProtectionMiddleware());
|
|
|
- $routes->applyMiddleware('cookieCsrf');
|
|
|
- $routes->connect('/posts/{action}', ['controller' => 'Posts']);
|
|
|
- });
|
|
|
- $this->builder->scope('/session-csrf/', ['csrf' => 'session'], function (RouteBuilder $routes): void {
|
|
|
- $routes->registerMiddleware('sessionCsrf', new SessionCsrfProtectionMiddleware());
|
|
|
- $routes->applyMiddleware('sessionCsrf');
|
|
|
- $routes->connect('/posts/{action}/', ['controller' => 'Posts']);
|
|
|
- });
|
|
|
+ $routesClosure = function (RouteBuilder $routes) {
|
|
|
+ $routes->setExtensions(['json']);
|
|
|
+ $routes->registerMiddleware('cookie', new EncryptedCookieMiddleware(['secrets'], $this->key));
|
|
|
+ $routes->applyMiddleware('cookie');
|
|
|
+
|
|
|
+ $routes->setRouteClass(InflectedRoute::class);
|
|
|
+ $routes->get('/get/{controller}/{action}', []);
|
|
|
+ $routes->head('/head/{controller}/{action}', []);
|
|
|
+ $routes->options('/options/{controller}/{action}', []);
|
|
|
+ $routes->connect('/{controller}/{action}/*', []);
|
|
|
+
|
|
|
+ $routes->scope('/cookie-csrf/', ['csrf' => 'cookie'], function (RouteBuilder $routes): void {
|
|
|
+ $routes->registerMiddleware('cookieCsrf', new CsrfProtectionMiddleware());
|
|
|
+ $routes->applyMiddleware('cookieCsrf');
|
|
|
+ $routes->connect('/posts/{action}', ['controller' => 'Posts']);
|
|
|
+ });
|
|
|
+ $routes->scope('/session-csrf/', ['csrf' => 'session'], function (RouteBuilder $routes): void {
|
|
|
+ $routes->registerMiddleware('sessionCsrf', new SessionCsrfProtectionMiddleware());
|
|
|
+ $routes->applyMiddleware('sessionCsrf');
|
|
|
+ $routes->connect('/posts/{action}/', ['controller' => 'Posts']);
|
|
|
+ });
|
|
|
+ };
|
|
|
+ $routesClosure(Router::createRouteBuilder('/'));
|
|
|
+ Configure::write('TestApp.routes', $routesClosure);
|
|
|
|
|
|
$this->configApplication(Configure::read('App.namespace') . '\Application', null);
|
|
|
}
|
|
|
@@ -312,10 +310,12 @@ class IntegrationTestTraitTest extends TestCase
|
|
|
public function testExceptionsInMiddlewareJsonView(): void
|
|
|
{
|
|
|
Router::reload();
|
|
|
- $this->builder->connect('/json_response/api_get_data', [
|
|
|
- 'controller' => 'JsonResponse',
|
|
|
- 'action' => 'apiGetData',
|
|
|
- ]);
|
|
|
+ Configure::write('TestApp.routes', function (RouteBuilder $routes) {
|
|
|
+ $routes->connect('/json_response/api_get_data', [
|
|
|
+ 'controller' => 'JsonResponse',
|
|
|
+ 'action' => 'apiGetData',
|
|
|
+ ]);
|
|
|
+ });
|
|
|
|
|
|
$this->configApplication(Configure::read('App.namespace') . '\ApplicationWithExceptionsInMiddleware', null);
|
|
|
|
|
|
@@ -1030,15 +1030,18 @@ class IntegrationTestTraitTest extends TestCase
|
|
|
*/
|
|
|
public function testPostSessionCsrfSuccessWithSetCookieName(): void
|
|
|
{
|
|
|
- $this->builder->scope('/custom-cookie-csrf/', ['csrf' => 'cookie'], function (RouteBuilder $routes): void {
|
|
|
- $routes->registerMiddleware('cookieCsrf', new CsrfProtectionMiddleware(
|
|
|
- [
|
|
|
- 'cookieName' => 'customCsrfToken',
|
|
|
- ]
|
|
|
- ));
|
|
|
- $routes->applyMiddleware('cookieCsrf');
|
|
|
- $routes->connect('/posts/{action}', ['controller' => 'Posts']);
|
|
|
+ Configure::write('TestApp.routes', function (RouteBuilder $routes) {
|
|
|
+ $routes->scope('/custom-cookie-csrf/', ['csrf' => 'cookie'], function (RouteBuilder $routes): void {
|
|
|
+ $routes->registerMiddleware('cookieCsrf', new CsrfProtectionMiddleware(
|
|
|
+ [
|
|
|
+ 'cookieName' => 'customCsrfToken',
|
|
|
+ ]
|
|
|
+ ));
|
|
|
+ $routes->applyMiddleware('cookieCsrf');
|
|
|
+ $routes->connect('/posts/{action}', ['controller' => 'Posts']);
|
|
|
+ });
|
|
|
});
|
|
|
+
|
|
|
$this->enableCsrfToken('customCsrfToken');
|
|
|
$data = [
|
|
|
'title' => 'Some title',
|
|
|
@@ -1053,15 +1056,18 @@ class IntegrationTestTraitTest extends TestCase
|
|
|
*/
|
|
|
public function testPostSessionCsrfFailureWithSetCookieName(): void
|
|
|
{
|
|
|
- $this->builder->scope('/custom-cookie-csrf/', ['csrf' => 'cookie'], function (RouteBuilder $routes): void {
|
|
|
- $routes->registerMiddleware('cookieCsrf', new CsrfProtectionMiddleware(
|
|
|
- [
|
|
|
- 'cookieName' => 'customCsrfToken',
|
|
|
- ]
|
|
|
- ));
|
|
|
- $routes->applyMiddleware('cookieCsrf');
|
|
|
- $routes->connect('/posts/{action}', ['controller' => 'Posts']);
|
|
|
+ Configure::write('TestApp.routes', function (RouteBuilder $routes) {
|
|
|
+ $routes->scope('/custom-cookie-csrf/', ['csrf' => 'cookie'], function (RouteBuilder $routes): void {
|
|
|
+ $routes->registerMiddleware('cookieCsrf', new CsrfProtectionMiddleware(
|
|
|
+ [
|
|
|
+ 'cookieName' => 'customCsrfToken',
|
|
|
+ ]
|
|
|
+ ));
|
|
|
+ $routes->applyMiddleware('cookieCsrf');
|
|
|
+ $routes->connect('/posts/{action}', ['controller' => 'Posts']);
|
|
|
+ });
|
|
|
});
|
|
|
+
|
|
|
$this->enableCsrfToken('customCsrfToken');
|
|
|
$data = [
|
|
|
'title' => 'Some title',
|