Browse Source

Fix deprecation warnings in AuthComponent tests.

mark_story 8 years ago
parent
commit
52c751cb22

+ 1 - 1
src/Controller/Component/AuthComponent.php

@@ -1023,7 +1023,7 @@ class AuthComponent extends Component
      */
     protected function _getUrlToRedirectBackTo()
     {
-        $urlToRedirectBackTo = $this->request->here(false);
+        $urlToRedirectBackTo = $this->request->getRequestTarget();
         if (!$this->request->is('get')) {
             $urlToRedirectBackTo = $this->request->referer(true);
         }

+ 178 - 134
tests/TestCase/Controller/Component/AuthComponentTest.php

@@ -66,13 +66,20 @@ class AuthComponentTest extends TestCase
             $routes->fallbacks(InflectedRoute::class);
         });
 
-        $request = new ServerRequest();
-        $request->env('REQUEST_METHOD', 'GET');
-
-        $response = $this->getMockBuilder('Cake\Http\Response')
-            ->setMethods(['stop'])
-            ->getMock();
+        $request = new ServerRequest([
+            'url' => '/auth_test',
+            'environment' => [
+                'REQUEST_METHOD' => 'GET'
+            ],
+            'params' => [
+                'plugin' => null,
+                'controller' => 'AuthTest',
+                'action' => 'index'
+            ],
+            'webroot' => '/'
+        ]);
 
+        $response = new Response();
         $this->Controller = new AuthTestController($request, $response);
         $this->Auth = new TestAuthComponent($this->Controller->components());
 
@@ -104,24 +111,6 @@ class AuthComponentTest extends TestCase
     }
 
     /**
-     * testIsErrorOrTests
-     *
-     * @return void
-     * @triggers Controller.startup $this->Controller
-     */
-    public function testIsErrorOrTests()
-    {
-        $event = new Event('Controller.startup', $this->Controller);
-
-        $this->Controller->name = 'Error';
-        $this->assertNull($this->Controller->Auth->startup($event));
-
-        $this->Controller->name = 'Post';
-        $this->Controller->request['action'] = 'thisdoesnotexist';
-        $this->assertNull($this->Controller->Auth->startup($event));
-    }
-
-    /**
      * testIdentify method
      *
      * @return void
@@ -446,52 +435,51 @@ class AuthComponentTest extends TestCase
         $this->Controller->Auth->allow();
         $this->Controller->Auth->deny(['add', 'camelCase']);
 
-        $this->Controller->request['action'] = 'delete';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'delete');
         $this->assertNull($this->Controller->Auth->startup($event));
 
-        $this->Controller->request['action'] = 'add';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'add');
         $this->assertInstanceOf('Cake\Http\Response', $this->Controller->Auth->startup($event));
 
-        $this->Controller->request['action'] = 'camelCase';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'camelCase');
         $this->assertInstanceOf('Cake\Http\Response', $this->Controller->Auth->startup($event));
 
         $this->Controller->Auth->allow();
         $this->Controller->Auth->deny(['add', 'camelCase']);
 
-        $this->Controller->request['action'] = 'delete';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'delete');
         $this->assertNull($this->Controller->Auth->startup($event));
 
-        $this->Controller->request['action'] = 'camelCase';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'camelCase');
         $this->assertInstanceOf('Cake\Http\Response', $this->Controller->Auth->startup($event));
 
         $this->Controller->Auth->allow();
         $this->Controller->Auth->deny();
 
-        $this->Controller->request['action'] = 'camelCase';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'camelCase');
         $this->assertInstanceOf('Cake\Http\Response', $this->Controller->Auth->startup($event));
 
-        $this->Controller->request['action'] = 'add';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'add');
         $this->assertInstanceOf('Cake\Http\Response', $this->Controller->Auth->startup($event));
 
         $this->Controller->Auth->allow('camelCase');
         $this->Controller->Auth->deny();
 
-        $this->Controller->request['action'] = 'camelCase';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'camelCase');
         $this->assertInstanceOf('Cake\Http\Response', $this->Controller->Auth->startup($event));
 
-        $this->Controller->request['action'] = 'login';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'login');
         $this->assertInstanceOf('Cake\Http\Response', $this->Controller->Auth->startup($event));
 
         $this->Controller->Auth->deny();
         $this->Controller->Auth->allow(null);
 
-        $this->Controller->request['action'] = 'camelCase';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'camelCase');
         $this->assertNull($this->Controller->Auth->startup($event));
 
         $this->Controller->Auth->allow();
         $this->Controller->Auth->deny(null);
 
-        $this->Controller->request['action'] = 'camelCase';
         $this->assertInstanceOf('Cake\Http\Response', $this->Controller->Auth->startup($event));
     }
 
@@ -586,9 +574,12 @@ class AuthComponentTest extends TestCase
             'AuthUsers' => ['id' => '1', 'username' => 'nate']
         ]);
 
-        $this->Auth->request->addParams(['controller' => 'Users', 'action' => 'login']);
-        $this->Auth->request->url = 'users/login';
-        $this->Auth->request->env('HTTP_REFERER', false);
+        $this->Auth->request = $this->Controller->request = new ServerRequest([
+            'params' => ['controller' => 'Users', 'action' => 'login'],
+            'url' => '/users/login',
+            'environment' => ['HTTP_REFERER' => false],
+            'session' => $this->Auth->session
+        ]);
 
         $this->Auth->setConfig('loginRedirect', [
             'controller' => 'pages',
@@ -602,14 +593,16 @@ class AuthComponentTest extends TestCase
 
         $this->Auth->session->delete('Auth');
 
-        $url = '/posts/view/1';
-
         $this->Auth->session->write(
             'Auth',
             ['AuthUsers' => ['id' => '1', 'username' => 'nate']]
         );
-        $this->Auth->request->addParams(['controller' => 'Posts', 'action' => 'view', 'pass' => [1]]);
-        $this->Auth->request->here = $url;
+        $this->Auth->request = $this->Controller->request = new ServerRequest([
+            'params' => ['controller' => 'Posts', 'action' => 'view', 'pass' => [1]],
+            'url' => '/posts/view/1',
+            'environment' => ['HTTP_REFERER' => false, 'REQUEST_METHOD' => 'GET'],
+            'session' => $this->Auth->session
+        ]);
 
         $this->Auth->setConfig('authorize', 'controller');
 
@@ -619,23 +612,29 @@ class AuthComponentTest extends TestCase
         $event = new Event('Controller.startup', $this->Controller);
         $response = $this->Auth->startup($event);
         $expected = Router::url([
-            'controller' => 'AuthTest', 'action' => 'login', '?' => ['redirect' => $url]
+            'controller' => 'AuthTest',
+            'action' => 'login',
+            '?' => ['redirect' => '/posts/view/1']
         ], true);
-        $redirectHeader = $response->header()['Location'];
+        $redirectHeader = $response->getHeaderLine('Location');
         $this->assertEquals($expected, $redirectHeader);
 
         // Auth.redirect gets set when accessing a protected action without being authenticated
         $this->Auth->session->delete('Auth');
-        $url = '/posts/view/1';
-        $this->Auth->request->addParams(['controller' => 'Posts', 'action' => 'view', 'pass' => [1]]);
-        $this->Auth->request->url = $this->Auth->request->here = Router::normalize($url);
+
+        $this->Auth->request = $this->Controller->request = new ServerRequest([
+            'params' => ['controller' => 'Posts', 'action' => 'view', 'pass' => [1]],
+            'url' => '/posts/view/1',
+            'environment' => ['HTTP_REFERER' => false, 'REQUEST_METHOD' => 'GET'],
+            'session' => $this->Auth->session
+        ]);
         $this->Auth->setConfig('loginAction', ['controller' => 'AuthTest', 'action' => 'login']);
         $event = new Event('Controller.startup', $this->Controller);
         $response = $this->Auth->startup($event);
 
         $this->assertInstanceOf('Cake\Http\Response', $response);
         $expected = Router::url(['controller' => 'AuthTest', 'action' => 'login', '?' => ['redirect' => '/posts/view/1']], true);
-        $redirectHeader = $response->header()['Location'];
+        $redirectHeader = $response->getHeaderLine('Location');
         $this->assertEquals($expected, $redirectHeader);
     }
 
@@ -647,19 +646,22 @@ class AuthComponentTest extends TestCase
     public function testLoginRedirectPost()
     {
         $this->Auth->session->delete('Auth');
-
-        $url = '/posts/view/1';
-        $this->Auth->request->addParams(['controller' => 'Posts', 'action' => 'view', 'pass' => [1]]);
-        $this->Auth->request->env('HTTP_REFERER', Router::url('/foo/bar', true));
-        $this->Auth->request->env('REQUEST_METHOD', 'POST');
-        $this->Auth->request->url = $this->Auth->request->here = Router::normalize($url);
+        $this->Auth->request = new ServerRequest([
+            'environment' => [
+                'HTTP_REFERER' => Router::url('/foo/bar', true),
+                'REQUEST_METHOD' => 'POST'
+            ],
+            'params' => ['controller' => 'Posts', 'action' => 'view', 'pass' => [1]],
+            'url' => '/posts/view/1?print=true&refer=menu',
+            'session' => $this->Auth->session
+        ]);
         $this->Auth->setConfig('loginAction', ['controller' => 'AuthTest', 'action' => 'login']);
         $event = new Event('Controller.startup', $this->Controller);
         $response = $this->Auth->startup($event);
 
         $this->assertInstanceOf('Cake\Http\Response', $response);
         $expected = Router::url(['controller' => 'AuthTest', 'action' => 'login', '?' => ['redirect' => '/foo/bar']], true);
-        $redirectHeader = $response->header()['Location'];
+        $redirectHeader = $response->getHeaderLine('Location');
         $this->assertEquals($expected, $redirectHeader);
     }
 
@@ -671,18 +673,19 @@ class AuthComponentTest extends TestCase
     public function testLoginRedirectPostNoReferer()
     {
         $this->Auth->session->delete('Auth');
-
-        $url = '/posts/view/1';
-        $this->Auth->request->addParams(['controller' => 'Posts', 'action' => 'view', 'pass' => [1]]);
-        $this->Auth->request->env('REQUEST_METHOD', 'POST');
-        $this->Auth->request->url = $this->Auth->request->here = Router::normalize($url);
+        $this->Auth->request = new ServerRequest([
+            'environment' => ['REQUEST_METHOD' => 'POST'],
+            'params' => ['controller' => 'Posts', 'action' => 'view', 'pass' => [1]],
+            'url' => '/posts/view/1?print=true&refer=menu',
+            'session' => $this->Auth->session
+        ]);
         $this->Auth->setConfig('loginAction', ['controller' => 'AuthTest', 'action' => 'login']);
         $event = new Event('Controller.startup', $this->Controller);
         $response = $this->Auth->startup($event);
 
         $this->assertInstanceOf('Cake\Http\Response', $response);
         $expected = Router::url(['controller' => 'AuthTest', 'action' => 'login'], true);
-        $redirectHeader = $response->header()['Location'];
+        $redirectHeader = $response->getHeaderLine('Location');
         $this->assertEquals($expected, $redirectHeader);
     }
 
@@ -693,20 +696,23 @@ class AuthComponentTest extends TestCase
     {
         // QueryString parameters are preserved when redirecting with redirect key
         $this->Auth->session->delete('Auth');
-        $url = '/posts/view/29';
-        $this->Auth->request->addParams(['controller' => 'Posts', 'action' => 'view', 'pass' => [29]]);
-        $this->Auth->request->url = $this->Auth->request->here = Router::normalize($url);
-        $this->Auth->request->query = [
-            'print' => 'true',
-            'refer' => 'menu'
-        ];
+        $this->Auth->request = new ServerRequest([
+            'environment' => ['REQUEST_METHOD' => 'GET'],
+            'params' => ['controller' => 'Posts', 'action' => 'view', 'pass' => [29]],
+            'url' => '/posts/view/29?print=true&refer=menu',
+            'session' => $this->Auth->session
+        ]);
 
         $this->Auth->setConfig('loginAction', ['controller' => 'AuthTest', 'action' => 'login']);
         $event = new Event('Controller.startup', $this->Controller);
         $response = $this->Auth->startup($event);
 
-        $expected = Router::url(['controller' => 'AuthTest', 'action' => 'login', '?' => ['redirect' => '/posts/view/29?print=true&refer=menu']], true);
-        $redirectHeader = $response->header()['Location'];
+        $expected = Router::url([
+            'controller' => 'AuthTest',
+            'action' => 'login',
+            '?' => ['redirect' => '/posts/view/29?print=true&refer=menu']
+        ], true);
+        $redirectHeader = $response->getHeaderLine('Location');
         $this->assertEquals($expected, $redirectHeader);
     }
 
@@ -716,21 +722,25 @@ class AuthComponentTest extends TestCase
     public function testLoginRedirectQueryStringWithComplexLoginActionUrl()
     {
         $this->Auth->session->delete('Auth');
-        $url = '/posts/view/29';
-        $this->Auth->request->addParams(['controller' => 'Posts', 'action' => 'view', 'pass' => [29]]);
-        $this->Auth->request->url = $this->Auth->request->here = Router::normalize($url);
-        $this->Auth->request->query = [
-            'print' => 'true',
-            'refer' => 'menu'
-        ];
+        $this->Auth->request = new ServerRequest([
+            'environment' => ['REQUEST_METHOD' => 'GET'],
+            'params' => ['controller' => 'Posts', 'action' => 'view', 'pass' => [29]],
+            'url' => '/posts/view/29?print=true&refer=menu',
+            'session' => $this->Auth->session
+        ]);
 
         $this->Auth->session->delete('Auth');
         $this->Auth->setConfig('loginAction', '/auth_test/login/passed-param?a=b');
         $event = new Event('Controller.startup', $this->Controller);
         $response = $this->Auth->startup($event);
 
-        $redirectHeader = $response->header()['Location'];
-        $expected = Router::url(['controller' => 'AuthTest', 'action' => 'login', 'passed-param', '?' => ['a' => 'b', 'redirect' => '/posts/view/29?print=true&refer=menu']], true);
+        $redirectHeader = $response->getHeaderLine('Location');
+        $expected = Router::url([
+            'controller' => 'AuthTest',
+            'action' => 'login',
+            'passed-param',
+            '?' => ['a' => 'b', 'redirect' => '/posts/view/29?print=true&refer=menu']
+        ], true);
         $this->assertEquals($expected, $redirectHeader);
     }
 
@@ -750,18 +760,28 @@ class AuthComponentTest extends TestCase
 
         $this->Auth->session->delete('Auth');
 
-        $url = '/posts/add';
-        $this->Auth->request = $this->Controller->request = new ServerRequest($url);
-        $this->Auth->request->env('REQUEST_METHOD', 'GET');
-        $this->Auth->request->addParams(['controller' => 'Posts', 'action' => 'add']);
-        $this->Auth->request->url = Router::normalize($url);
+        $request = new ServerRequest([
+            'url' => '/posts/add',
+            'params' => [
+                'plugin' => null,
+                'controller' => 'Posts',
+                'action' => 'add'
+            ],
+            'environment' => [
+                'REQUEST_METHOD' => 'GET'
+            ],
+            'session' => $this->Auth->session,
+            'base' => '',
+            'webroot' => '/'
+        ]);
+        $this->Controller->request = $request;
 
         $this->Auth->setConfig('loginAction', ['controller' => 'Users', 'action' => 'login']);
         $event = new Event('Controller.startup', $this->Controller);
         $response = $this->Auth->startup($event);
 
         $expected = Router::url(['controller' => 'Users', 'action' => 'login', '?' => ['redirect' => '/posts/add']], true);
-        $redirectHeader = $response->header()['Location'];
+        $redirectHeader = $response->getHeaderLine('Location');
         $this->assertEquals($expected, $redirectHeader);
 
         $this->Auth->session->delete('Auth');
@@ -776,10 +796,16 @@ class AuthComponentTest extends TestCase
      */
     public function testNoLoginRedirectForAuthenticatedUser()
     {
-        $this->Controller->request['controller'] = 'auth_test';
-        $this->Controller->request['action'] = 'login';
-        $this->Controller->here = '/auth_test/login';
-        $this->Auth->request->url = 'auth_test/login';
+        $request = new ServerRequest([
+            'params' => [
+                'plugin' => null,
+                'controller' => 'auth_test',
+                'action' => 'login'
+            ],
+            'url' => '/auth_test/login',
+            'session' => $this->Auth->session
+        ]);
+        $this->Controller->request = $request;
 
         $this->Auth->session->write('Auth.User.id', '1');
         $this->Auth->setConfig('authenticate', ['Form']);
@@ -806,12 +832,18 @@ class AuthComponentTest extends TestCase
     public function testDefaultToLoginRedirect()
     {
         $url = '/party/on';
-        $this->Auth->request = $request = new ServerRequest($url);
-        $request->env('HTTP_REFERER', false);
-        $request->addParams(['controller' => 'Part', 'action' => 'on']);
-        $request->addPaths([
+        $this->Auth->request = $request = new ServerRequest([
+            'url' => $url,
+            'environment' => [
+                'HTTP_REFERER' => false,
+            ],
+            'params' => [
+                'plugin' => null,
+                'controller' => 'Part',
+                'action' => 'on'
+            ],
             'base' => 'dirname',
-            'webroot' => '/dirname/',
+            'webroot' => '/dirname/'
         ]);
         Router::pushRequest($request);
 
@@ -1042,11 +1074,19 @@ class AuthComponentTest extends TestCase
         Router::scope('/', function ($routes) {
             $routes->fallbacks(InflectedRoute::class);
         });
-
-        $url = '/admin/auth_test/add';
-        $this->Auth->request->addParams(['controller' => 'AuthTest', 'action' => 'add', 'prefix' => 'admin']);
-        $this->Auth->request->base = '';
-        $this->Auth->request->here = $url;
+        $this->Auth->request = new ServerRequest([
+            'environment' => [
+                'REQUEST_METHOD' => 'GET',
+            ],
+            'params' => [
+                'controller' => 'AuthTest',
+                'action' => 'add',
+                'plugin' => null,
+                'prefix' => 'admin'
+            ],
+            'url' => '/admin/auth_test/add',
+            'session' => $this->Auth->session
+        ]);
 
         Router::setRequestInfo($this->Auth->request);
 
@@ -1057,7 +1097,7 @@ class AuthComponentTest extends TestCase
         ]);
 
         $response = $this->Auth->startup($event);
-        $redirectHeader = $response->header()['Location'];
+        $redirectHeader = $response->getHeaderLine('Location');
         $expected = Router::url([
             'prefix' => 'admin',
             'controller' => 'auth_test',
@@ -1088,10 +1128,10 @@ class AuthComponentTest extends TestCase
         $response = $this->Auth->startup($event);
 
         $this->assertTrue($event->isStopped());
-        $this->assertEquals(403, $response->statusCode());
+        $this->assertEquals(403, $response->getStatusCode());
         $this->assertEquals(
             "Ajax!\nthis is the test element",
-            str_replace("\r\n", "\n", $response->body())
+            str_replace("\r\n", "\n", $response->getBody())
         );
     }
 
@@ -1113,8 +1153,8 @@ class AuthComponentTest extends TestCase
         $response = $this->Auth->startup($event);
 
         $this->assertTrue($event->isStopped());
-        $this->assertEquals(403, $response->statusCode());
-        $this->assertArrayNotHasKey('Location', $response->header());
+        $this->assertEquals(403, $response->getStatusCode());
+        $this->assertFalse($response->hasHeader('Location'));
     }
 
     /**
@@ -1135,19 +1175,17 @@ class AuthComponentTest extends TestCase
         });
 
         $url = '/admin/auth_test/login';
-        $request = $this->Auth->request;
-        $request->addParams([
-            'plugin' => null,
-            'controller' => 'auth_test',
-            'action' => 'login',
-            'prefix' => 'admin',
-            'pass' => [],
-        ])->addPaths([
-            'base' => null,
-            'here' => $url,
+        $request = new ServerRequest([
+            'params' => [
+                'plugin' => null,
+                'controller' => 'auth_test',
+                'action' => 'login',
+                'prefix' => 'admin',
+                'pass' => [],
+            ],
             'webroot' => '/',
+            'url' => $url
         ]);
-        $request->url = ltrim($url, '/');
         Router::setRequestInfo($request);
 
         $this->Auth->setConfig('loginAction', [
@@ -1155,9 +1193,9 @@ class AuthComponentTest extends TestCase
             'controller' => 'auth_test',
             'action' => 'login'
         ]);
-        $this->Auth->startup($event);
+        $result = $this->Auth->startup($event);
 
-        $this->assertNull($this->Controller->testUrl);
+        $this->assertNull($result);
     }
 
     /**
@@ -1170,10 +1208,16 @@ class AuthComponentTest extends TestCase
     public function testStatelessAuthWorksWithUser()
     {
         $event = new Event('Controller.startup', $this->Controller);
-        $url = '/auth_test/add';
-        $this->Auth->request->addParams(['controller' => 'AuthTest', 'action' => 'add']);
-        $this->Auth->request->env('PHP_AUTH_USER', 'mariano');
-        $this->Auth->request->env('PHP_AUTH_PW', 'cake');
+        $this->Auth->request = new ServerRequest([
+            'environment' => [
+                'REQUEST_METHOD' => 'POST',
+                'PHP_AUTH_USER' => 'mariano',
+                'PHP_AUTH_PW' => 'cake',
+            ],
+            'params' => ['controller' => 'AuthTest', 'action' => 'add'],
+            'url' => '/auth_test/add',
+            'session' => $this->Auth->session
+        ]);
 
         $this->Auth->setConfig('authenticate', [
             'Basic' => ['userModel' => 'AuthUsers']
@@ -1276,9 +1320,11 @@ class AuthComponentTest extends TestCase
     {
         $event = new Event('Controller.startup', $this->Controller);
         $url = '/auth_test/add';
-        $this->Auth->request->addParams(['controller' => 'AuthTest', 'action' => 'add']);
-        $this->Auth->request->env('PHP_AUTH_USER', 'mariano');
-        $this->Auth->request->env('PHP_AUTH_PW', 'cake');
+        $this->Auth->request = $this->Auth->request
+            ->withParam('controller', 'AuthTest')
+            ->withParam('action', 'add')
+            ->withEnv('PHP_AUTH_USER', 'mariano')
+            ->withEnv('PHP_AUTH_PW', 'cake');
 
         $this->Auth->setConfig('authenticate', [
             'Basic' => ['userModel' => 'AuthUsers']
@@ -1551,7 +1597,7 @@ class AuthComponentTest extends TestCase
         $_SESSION = [];
 
         $this->Auth->setConfig('authenticate', ['Basic']);
-        $this->Controller->request['action'] = 'add';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'add');
 
         $result = $this->Auth->startup($event);
     }
@@ -1564,19 +1610,17 @@ class AuthComponentTest extends TestCase
      */
     public function testStatelessAuthRedirectToLogin()
     {
-        $this->Auth->response = $this->getMockBuilder('Cake\Http\Response')
-            ->setMethods(['stop', 'statusCode', 'send'])
-            ->getMock();
         $event = new Event('Controller.startup', $this->Controller);
         $this->Auth->authenticate = ['Basic', 'Form'];
-        $this->Controller->request['action'] = 'add';
+        $this->Controller->request = $this->Controller->request->withParam('action', 'add');
 
-        $this->Auth->response->expects($this->never())->method('statusCode');
-        $this->Auth->response->expects($this->never())->method('send');
-
-        $this->assertInstanceOf('Cake\Http\Response', $this->Auth->startup($event));
+        $response = $this->Auth->startup($event);
+        $this->assertInstanceOf(Response::class, $response);
 
-        $this->assertEquals('/users/login?redirect=%2Fauth_test', $this->Controller->testUrl);
+        $this->assertEquals(
+            'http://localhost/users/login?redirect=%2Fauth_test',
+            $response->getHeaderLine('Location')
+        );
     }
 
     /**

+ 0 - 3
tests/test_app/TestApp/Controller/AuthTestController.php

@@ -45,9 +45,6 @@ class AuthTestController extends Controller
      */
     public function __construct($request = null, $response = null)
     {
-        $request->addParams(['controller' => 'AuthTest', 'action' => 'index']);
-        $request->here = '/auth_test';
-        $request->webroot = '/';
         Router::setRequestInfo($request);
         parent::__construct($request, $response);
     }