Ensuring that 'ext' param added by RequestHandler does not end up as a queryString parameter in Auth.redirect.

Adding test case.
Fixes #6211

git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@8182 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
mark_story 2009-06-01 00:01:58 +00:00
parent 50f4d91873
commit 9aa64ef564
2 changed files with 18 additions and 1 deletions

View file

@ -339,7 +339,7 @@ class AuthComponent extends Object {
$this->Session->setFlash($this->authError, 'default', array(), 'auth'); $this->Session->setFlash($this->authError, 'default', array(), 'auth');
if (!empty($controller->params['url']) && count($controller->params['url']) >= 2) { if (!empty($controller->params['url']) && count($controller->params['url']) >= 2) {
$query = $controller->params['url']; $query = $controller->params['url'];
unset($query['url']); unset($query['url'], $query['ext']);
$url .= Router::queryString($query, array()); $url .= Router::queryString($query, array());
} }
$this->Session->write('Auth.redirect', $url); $this->Session->write('Auth.redirect', $url);

View file

@ -728,6 +728,7 @@ class AuthTest extends CakeTestCase {
$this->Controller->params['action'] = 'Add'; $this->Controller->params['action'] = 'Add';
$this->assertFalse($this->Controller->Auth->startup($this->Controller)); $this->assertFalse($this->Controller->Auth->startup($this->Controller));
} }
/** /**
* testLoginRedirect method * testLoginRedirect method
* *
@ -854,6 +855,22 @@ class AuthTest extends CakeTestCase {
$this->Controller->Auth->startup($this->Controller); $this->Controller->Auth->startup($this->Controller);
$expected = Router::normalize('posts/index/29?print=true&refer=menu'); $expected = Router::normalize('posts/index/29?print=true&refer=menu');
$this->assertEqual($expected, $this->Controller->Session->read('Auth.redirect')); $this->assertEqual($expected, $this->Controller->Session->read('Auth.redirect'));
$_GET = array(
'url' => '/posts/index/29',
'print' => 'true',
'refer' => 'menu',
'ext' => 'html'
);
$this->Controller->Session->del('Auth');
$url = '/posts/index/29?print=true&refer=menu';
$this->Controller->params = Dispatcher::parseParams($url);
$this->Controller->Auth->initialize($this->Controller);
$this->Controller->Auth->loginAction = array('controller' => 'AuthTest', 'action' => 'login');
$this->Controller->Auth->userModel = 'AuthUser';
$this->Controller->Auth->startup($this->Controller);
$expected = Router::normalize('posts/index/29?print=true&refer=menu');
$this->assertEqual($expected, $this->Controller->Session->read('Auth.redirect'));
$_GET = $_back; $_GET = $_back;
//external authed action //external authed action