Skip to content

Commit 0ead896

Browse files
committed
Adding tests for Controller::redirect.
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
1 parent a9062e2 commit 0ead896

File tree

1 file changed

+79
-19
lines changed

1 file changed

+79
-19
lines changed

cake/tests/cases/libs/controller/controller.test.php

Lines changed: 79 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@
3030
/**
3131
* AppController class
3232
*
33-
* @package cake
33+
* @package cake.tests
3434
* @subpackage cake.tests.cases.libs.controller
3535
*/
3636
if (!class_exists('AppController')) {
3737
/**
3838
* AppController class
3939
*
40-
* @package cake
40+
* @package cake.tests
4141
* @subpackage cake.tests.cases.libs.controller
4242
*/
4343
class AppController extends Controller {
@@ -131,7 +131,7 @@ function find($type, $options = array()) {
131131
/**
132132
* ControllerPostsController class
133133
*
134-
* @package cake
134+
* @package cake.tests
135135
* @subpackage cake.tests.cases.libs.controller
136136
*/
137137
class ControllerCommentsController extends AppController {
@@ -251,7 +251,7 @@ function paginateCount($conditions, $recursive, $extra) {
251251
/**
252252
* NameTest class
253253
*
254-
* @package cake
254+
* @package cake.tests
255255
* @subpackage cake.tests.cases.libs.controller
256256
*/
257257
class NameTest extends CakeTestModel {
@@ -278,7 +278,7 @@ class NameTest extends CakeTestModel {
278278
/**
279279
* TestController class
280280
*
281-
* @package cake
281+
* @package cake.tests
282282
* @subpackage cake.tests.cases.libs.controller
283283
*/
284284
class TestController extends AppController {
@@ -325,7 +325,7 @@ function index($testId, $test2Id) {
325325
/**
326326
* TestComponent class
327327
*
328-
* @package cake
328+
* @package cake.tests
329329
* @subpackage cake.tests.cases.libs.controller
330330
*/
331331
class TestComponent extends Object {
@@ -336,13 +336,12 @@ class TestComponent extends Object {
336336
* @return void
337337
*/
338338
function beforeRedirect() {
339-
return true;
340339
}
341340
}
342341
/**
343342
* AnotherTestController class
344343
*
345-
* @package cake
344+
* @package cake.tests
346345
* @subpackage cake.tests.cases.libs.controller
347346
*/
348347
class AnotherTestController extends AppController {
@@ -352,7 +351,6 @@ class AnotherTestController extends AppController {
352351
* @access public
353352
*/
354353
var $name = 'AnotherTest';
355-
356354
/**
357355
* uses property
358356
*
@@ -417,7 +415,12 @@ function testConstructClasses() {
417415
Configure::write('pluginPaths', $_back['pluginPaths']);
418416
unset($Controller);
419417
}
420-
418+
/**
419+
* testAliasName method
420+
*
421+
* @access public
422+
* @return void
423+
*/
421424
function testAliasName() {
422425
$Controller =& new Controller();
423426
$Controller->uses = array('NameTest');
@@ -428,7 +431,6 @@ function testAliasName() {
428431

429432
unset($Controller);
430433
}
431-
432434
/**
433435
* testPersistent method
434436
*
@@ -735,7 +737,6 @@ function testToBeInheritedGuardmethods() {
735737
* @return void
736738
*/
737739
function testRedirect() {
738-
$url = 'cakephp.org';
739740
$codes = array(
740741
100 => "Continue",
741742
101 => "Switching Protocols",
@@ -779,26 +780,85 @@ function testRedirect() {
779780
);
780781

781782
Mock::generatePartial('Controller', 'MockController', array('header'));
783+
Mock::generate('TestComponent', 'MockTestComponent');
784+
Mock::generate('TestComponent', 'MockTestBComponent');
785+
782786
App::import('Helper', 'Cache');
783787

784-
// $codes = array_merge($codes, array_flip($codes));
785788
foreach ($codes as $code => $msg) {
786789
$MockController =& new MockController();
787-
$MockController->components = array('Test');
788790
$MockController->Component =& new Component();
789791
$MockController->Component->init($MockController);
792+
$MockController->expectAt(0, 'header', array("HTTP/1.1 {$code} {$msg}"));
793+
$MockController->expectAt(1, 'header', array('Location: http://cakephp.org'));
790794
$MockController->expectCallCount('header', 2);
791-
$MockController->redirect($url, (int) $code, false);
795+
$MockController->redirect('http://cakephp.org', (int)$code, false);
796+
$this->assertFalse($MockController->autoRender);
792797
}
793-
$codes = array_flip($codes);
794798
foreach ($codes as $code => $msg) {
795799
$MockController =& new MockController();
796-
$MockController->components = array('Test');
797800
$MockController->Component =& new Component();
798801
$MockController->Component->init($MockController);
802+
$MockController->expectAt(0, 'header', array("HTTP/1.1 {$code} {$msg}"));
803+
$MockController->expectAt(1, 'header', array('Location: http://cakephp.org'));
799804
$MockController->expectCallCount('header', 2);
800-
$MockController->redirect($url, $code, false);
805+
$MockController->redirect('http://cakephp.org', $msg, false);
806+
$this->assertFalse($MockController->autoRender);
801807
}
808+
809+
$MockController =& new MockController();
810+
$MockController->Component =& new Component();
811+
$MockController->Component->init($MockController);
812+
$MockController->expectAt(0, 'header', array('Location: http://www.example.org/users/login'));
813+
$MockController->expectCallCount('header', 1);
814+
$MockController->redirect('http://www.example.org/users/login', null, false);
815+
816+
$MockController =& new MockController();
817+
$MockController->Component =& new Component();
818+
$MockController->Component->init($MockController);
819+
$MockController->expectAt(0, 'header', array('HTTP/1.1 301 Moved Permanently'));
820+
$MockController->expectAt(1, 'header', array('Location: http://www.example.org/users/login'));
821+
$MockController->expectCallCount('header', 2);
822+
$MockController->redirect('http://www.example.org/users/login', 301, false);
823+
824+
$MockController =& new MockController();
825+
$MockController->components = array('MockTest');
826+
$MockController->Component =& new Component();
827+
$MockController->Component->init($MockController);
828+
$MockController->MockTest->setReturnValue('beforeRedirect', null);
829+
$MockController->expectAt(0, 'header', array('HTTP/1.1 301 Moved Permanently'));
830+
$MockController->expectAt(1, 'header', array('Location: http://cakephp.org'));
831+
$MockController->expectCallCount('header', 2);
832+
$MockController->redirect('http://cakephp.org', 301, false);
833+
834+
$MockController =& new MockController();
835+
$MockController->components = array('MockTest');
836+
$MockController->Component =& new Component();
837+
$MockController->Component->init($MockController);
838+
$MockController->MockTest->setReturnValue('beforeRedirect', 'http://book.cakephp.org');
839+
$MockController->expectAt(0, 'header', array('HTTP/1.1 301 Moved Permanently'));
840+
$MockController->expectAt(1, 'header', array('Location: http://book.cakephp.org'));
841+
$MockController->expectCallCount('header', 2);
842+
$MockController->redirect('http://cakephp.org', 301, false);
843+
844+
$MockController =& new MockController();
845+
$MockController->components = array('MockTest');
846+
$MockController->Component =& new Component();
847+
$MockController->Component->init($MockController);
848+
$MockController->MockTest->setReturnValue('beforeRedirect', false);
849+
$MockController->expectNever('header');
850+
$MockController->redirect('http://cakephp.org', 301, false);
851+
852+
$MockController =& new MockController();
853+
$MockController->components = array('MockTest', 'MockTestB');
854+
$MockController->Component =& new Component();
855+
$MockController->Component->init($MockController);
856+
$MockController->MockTest->setReturnValue('beforeRedirect', 'http://book.cakephp.org');
857+
$MockController->MockTestB->setReturnValue('beforeRedirect', 'http://bakery.cakephp.org');
858+
$MockController->expectAt(0, 'header', array('HTTP/1.1 301 Moved Permanently'));
859+
$MockController->expectAt(1, 'header', array('Location: http://bakery.cakephp.org'));
860+
$MockController->expectCallCount('header', 2);
861+
$MockController->redirect('http://cakephp.org', 301, false);
802862
}
803863
/**
804864
* testMergeVars method
@@ -859,7 +919,7 @@ function testMergeVars() {
859919
$this->assertTrue(isset($TestController->ControllerComment));
860920
}
861921
/**
862-
* Ensure that __mergeVars is not being greedy and merging with
922+
* Ensure that __mergeVars is not being greedy and merging with
863923
* AppController when you make an instance of Controller
864924
*
865925
* @return void

0 commit comments

Comments
 (0)