Skip to content

Commit

Permalink
Adding tests for Controller::redirect.
Browse files Browse the repository at this point in the history
Proves #6200 is invalid. 
Making original tests more strict.

git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@8110 3807eeeb-6ff5-0310-8944-8be069107fe0
  • Loading branch information
mariuswilms committed Mar 16, 2009
1 parent a9062e2 commit 0ead896
Showing 1 changed file with 79 additions and 19 deletions.
98 changes: 79 additions & 19 deletions cake/tests/cases/libs/controller/controller.test.php
Expand Up @@ -30,14 +30,14 @@
/**
* AppController class
*
* @package cake
* @package cake.tests
* @subpackage cake.tests.cases.libs.controller
*/
if (!class_exists('AppController')) {
/**
* AppController class
*
* @package cake
* @package cake.tests
* @subpackage cake.tests.cases.libs.controller
*/
class AppController extends Controller {
Expand Down Expand Up @@ -131,7 +131,7 @@ function find($type, $options = array()) {
/**
* ControllerPostsController class
*
* @package cake
* @package cake.tests
* @subpackage cake.tests.cases.libs.controller
*/
class ControllerCommentsController extends AppController {
Expand Down Expand Up @@ -251,7 +251,7 @@ function paginateCount($conditions, $recursive, $extra) {
/**
* NameTest class
*
* @package cake
* @package cake.tests
* @subpackage cake.tests.cases.libs.controller
*/
class NameTest extends CakeTestModel {
Expand All @@ -278,7 +278,7 @@ class NameTest extends CakeTestModel {
/**
* TestController class
*
* @package cake
* @package cake.tests
* @subpackage cake.tests.cases.libs.controller
*/
class TestController extends AppController {
Expand Down Expand Up @@ -325,7 +325,7 @@ function index($testId, $test2Id) {
/**
* TestComponent class
*
* @package cake
* @package cake.tests
* @subpackage cake.tests.cases.libs.controller
*/
class TestComponent extends Object {
Expand All @@ -336,13 +336,12 @@ class TestComponent extends Object {
* @return void
*/
function beforeRedirect() {
return true;
}
}
/**
* AnotherTestController class
*
* @package cake
* @package cake.tests
* @subpackage cake.tests.cases.libs.controller
*/
class AnotherTestController extends AppController {
Expand All @@ -352,7 +351,6 @@ class AnotherTestController extends AppController {
* @access public
*/
var $name = 'AnotherTest';

/**
* uses property
*
Expand Down Expand Up @@ -417,7 +415,12 @@ function testConstructClasses() {
Configure::write('pluginPaths', $_back['pluginPaths']);
unset($Controller);
}

/**
* testAliasName method
*
* @access public
* @return void
*/
function testAliasName() {
$Controller =& new Controller();
$Controller->uses = array('NameTest');
Expand All @@ -428,7 +431,6 @@ function testAliasName() {

unset($Controller);
}

/**
* testPersistent method
*
Expand Down Expand Up @@ -735,7 +737,6 @@ function testToBeInheritedGuardmethods() {
* @return void
*/
function testRedirect() {
$url = 'cakephp.org';
$codes = array(
100 => "Continue",
101 => "Switching Protocols",
Expand Down Expand Up @@ -779,26 +780,85 @@ function testRedirect() {
);

Mock::generatePartial('Controller', 'MockController', array('header'));
Mock::generate('TestComponent', 'MockTestComponent');
Mock::generate('TestComponent', 'MockTestBComponent');

App::import('Helper', 'Cache');

// $codes = array_merge($codes, array_flip($codes));
foreach ($codes as $code => $msg) {
$MockController =& new MockController();
$MockController->components = array('Test');
$MockController->Component =& new Component();
$MockController->Component->init($MockController);
$MockController->expectAt(0, 'header', array("HTTP/1.1 {$code} {$msg}"));
$MockController->expectAt(1, 'header', array('Location: http://cakephp.org'));
$MockController->expectCallCount('header', 2);
$MockController->redirect($url, (int) $code, false);
$MockController->redirect('http://cakephp.org', (int)$code, false);
$this->assertFalse($MockController->autoRender);
}
$codes = array_flip($codes);
foreach ($codes as $code => $msg) {
$MockController =& new MockController();
$MockController->components = array('Test');
$MockController->Component =& new Component();
$MockController->Component->init($MockController);
$MockController->expectAt(0, 'header', array("HTTP/1.1 {$code} {$msg}"));
$MockController->expectAt(1, 'header', array('Location: http://cakephp.org'));
$MockController->expectCallCount('header', 2);
$MockController->redirect($url, $code, false);
$MockController->redirect('http://cakephp.org', $msg, false);
$this->assertFalse($MockController->autoRender);
}

$MockController =& new MockController();
$MockController->Component =& new Component();
$MockController->Component->init($MockController);
$MockController->expectAt(0, 'header', array('Location: http://www.example.org/users/login'));
$MockController->expectCallCount('header', 1);
$MockController->redirect('http://www.example.org/users/login', null, false);

$MockController =& new MockController();
$MockController->Component =& new Component();
$MockController->Component->init($MockController);
$MockController->expectAt(0, 'header', array('HTTP/1.1 301 Moved Permanently'));
$MockController->expectAt(1, 'header', array('Location: http://www.example.org/users/login'));
$MockController->expectCallCount('header', 2);
$MockController->redirect('http://www.example.org/users/login', 301, false);

$MockController =& new MockController();
$MockController->components = array('MockTest');
$MockController->Component =& new Component();
$MockController->Component->init($MockController);
$MockController->MockTest->setReturnValue('beforeRedirect', null);
$MockController->expectAt(0, 'header', array('HTTP/1.1 301 Moved Permanently'));
$MockController->expectAt(1, 'header', array('Location: http://cakephp.org'));
$MockController->expectCallCount('header', 2);
$MockController->redirect('http://cakephp.org', 301, false);

$MockController =& new MockController();
$MockController->components = array('MockTest');
$MockController->Component =& new Component();
$MockController->Component->init($MockController);
$MockController->MockTest->setReturnValue('beforeRedirect', 'http://book.cakephp.org');
$MockController->expectAt(0, 'header', array('HTTP/1.1 301 Moved Permanently'));
$MockController->expectAt(1, 'header', array('Location: http://book.cakephp.org'));
$MockController->expectCallCount('header', 2);
$MockController->redirect('http://cakephp.org', 301, false);

$MockController =& new MockController();
$MockController->components = array('MockTest');
$MockController->Component =& new Component();
$MockController->Component->init($MockController);
$MockController->MockTest->setReturnValue('beforeRedirect', false);
$MockController->expectNever('header');
$MockController->redirect('http://cakephp.org', 301, false);

$MockController =& new MockController();
$MockController->components = array('MockTest', 'MockTestB');
$MockController->Component =& new Component();
$MockController->Component->init($MockController);
$MockController->MockTest->setReturnValue('beforeRedirect', 'http://book.cakephp.org');
$MockController->MockTestB->setReturnValue('beforeRedirect', 'http://bakery.cakephp.org');
$MockController->expectAt(0, 'header', array('HTTP/1.1 301 Moved Permanently'));
$MockController->expectAt(1, 'header', array('Location: http://bakery.cakephp.org'));
$MockController->expectCallCount('header', 2);
$MockController->redirect('http://cakephp.org', 301, false);
}
/**
* testMergeVars method
Expand Down Expand Up @@ -859,7 +919,7 @@ function testMergeVars() {
$this->assertTrue(isset($TestController->ControllerComment));
}
/**
* Ensure that __mergeVars is not being greedy and merging with
* Ensure that __mergeVars is not being greedy and merging with
* AppController when you make an instance of Controller
*
* @return void
Expand Down

0 comments on commit 0ead896

Please sign in to comment.