2008-05-30 11:40:08 +00:00
< ? php
/* SVN FILE: $Id$ */
/**
2009-03-18 17:55:58 +00:00
* DispatcherTest file
2008-05-30 11:40:08 +00:00
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP ( tm ) Tests < https :// trac . cakephp . org / wiki / Developement / TestSuite >
2008-10-30 17:30:26 +00:00
* Copyright 2005 - 2008 , Cake Software Foundation , Inc . ( http :// www . cakefoundation . org )
2008-05-30 11:40:08 +00:00
*
* Licensed under The Open Group Test Suite License
* Redistributions of files must retain the above copyright notice .
*
* @ filesource
2008-10-30 17:30:26 +00:00
* @ copyright Copyright 2005 - 2008 , Cake Software Foundation , Inc . ( http :// www . cakefoundation . org )
* @ link https :// trac . cakephp . org / wiki / Developement / TestSuite CakePHP ( tm ) Tests
2009-03-18 17:55:58 +00:00
* @ package cake
2008-10-30 17:30:26 +00:00
* @ subpackage cake . tests . cases
* @ since CakePHP ( tm ) v 1.2 . 0.4206
* @ version $Revision $
* @ modifiedby $LastChangedBy $
* @ lastmodified $Date $
* @ license http :// www . opensource . org / licenses / opengroup . php The Open Group Test Suite License
2008-05-30 11:40:08 +00:00
*/
2009-03-21 23:55:39 +00:00
require_once CAKE . 'dispatcher.php' ;
if ( ! class_exists ( 'AppController' )) {
require_once LIBS . 'controller' . DS . 'app_controller.php' ;
} elseif ( ! defined ( 'APP_CONTROLLER_EXISTS' )){
define ( 'APP_CONTROLLER_EXISTS' , true );
}
2008-06-02 19:22:55 +00:00
/**
* TestDispatcher class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class TestDispatcher extends Dispatcher {
2008-06-02 19:22:55 +00:00
/**
* invoke method
2008-06-05 15:20:45 +00:00
*
* @ param mixed $controller
* @ param mixed $params
* @ param mixed $missingAction
2008-06-02 19:22:55 +00:00
* @ access protected
* @ return void
*/
2008-08-25 22:57:24 +00:00
function _invoke ( & $controller , $params ) {
2008-07-26 20:09:20 +00:00
restore_error_handler ();
2008-08-25 22:57:24 +00:00
if ( $result = parent :: _invoke ( $controller , $params )) {
2009-02-17 23:32:15 +00:00
if ( $result [ 0 ] === 'missingAction' ) {
2008-07-26 20:09:20 +00:00
return $result ;
}
2008-05-30 11:40:08 +00:00
}
2008-07-26 20:09:20 +00:00
set_error_handler ( 'simpleTestErrorHandler' );
2008-05-30 11:40:08 +00:00
return $controller ;
}
2008-06-02 19:22:55 +00:00
/**
* cakeError method
2008-06-05 15:20:45 +00:00
*
* @ param mixed $filename
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2009-02-17 23:32:15 +00:00
function cakeError ( $filename , $params ) {
return array ( $filename , $params );
2008-05-30 11:40:08 +00:00
}
2008-06-17 04:24:55 +00:00
/**
* _stop method
*
* @ access protected
* @ return void
*/
function _stop () {
return true ;
}
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* MyPluginAppController class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class MyPluginAppController extends AppController {
}
2008-06-02 19:22:55 +00:00
/**
* MyPluginController class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class MyPluginController extends MyPluginAppController {
2008-06-02 19:22:55 +00:00
/**
* name property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var string 'MyPlugin'
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $name = 'MyPlugin' ;
2008-06-02 19:22:55 +00:00
/**
* uses property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $uses = array ();
2008-06-02 19:22:55 +00:00
/**
* index method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function index () {
return true ;
}
2008-06-02 19:22:55 +00:00
/**
* add method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function add () {
return true ;
}
2008-06-02 19:22:55 +00:00
/**
* admin_add method
2008-06-05 15:20:45 +00:00
*
* @ param mixed $id
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function admin_add ( $id = null ) {
return $id ;
}
}
2008-06-02 19:22:55 +00:00
/**
* SomePagesController class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class SomePagesController extends AppController {
2008-06-02 19:22:55 +00:00
/**
* name property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var string 'SomePages'
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $name = 'SomePages' ;
2008-06-02 19:22:55 +00:00
/**
* uses property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $uses = array ();
2008-06-02 19:22:55 +00:00
/**
* display method
2008-06-05 15:20:45 +00:00
*
* @ param mixed $page
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function display ( $page = null ) {
return $page ;
}
2008-06-02 19:22:55 +00:00
/**
* index method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function index () {
return true ;
}
2008-07-26 20:09:20 +00:00
/**
* protected method
*
* @ access protected
* @ return void
*/
function _protected () {
return true ;
}
/**
* redirect method overriding
*
* @ access public
* @ return void
*/
function redirect () {
echo 'this should not be accessible' ;
}
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* OtherPagesController class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class OtherPagesController extends MyPluginAppController {
2008-06-02 19:22:55 +00:00
/**
* name property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var string 'OtherPages'
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $name = 'OtherPages' ;
2008-06-02 19:22:55 +00:00
/**
* uses property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $uses = array ();
2008-06-02 19:22:55 +00:00
/**
* display method
2008-06-05 15:20:45 +00:00
*
* @ param mixed $page
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function display ( $page = null ) {
return $page ;
}
2008-06-02 19:22:55 +00:00
/**
* index method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function index () {
return true ;
}
}
2008-06-02 19:22:55 +00:00
/**
* TestDispatchPagesController class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class TestDispatchPagesController extends AppController {
2008-06-02 19:22:55 +00:00
/**
* name property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var string 'TestDispatchPages'
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $name = 'TestDispatchPages' ;
2008-06-02 19:22:55 +00:00
/**
* uses property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $uses = array ();
2008-06-02 19:22:55 +00:00
/**
* admin_index method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function admin_index () {
return true ;
}
2008-08-26 18:33:00 +00:00
/**
* camelCased method
*
* @ access public
* @ return void
*/
function camelCased () {
return true ;
}
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* ArticlesTestAppController class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class ArticlesTestAppController extends AppController {
}
2008-06-02 19:22:55 +00:00
/**
* ArticlesTestController class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class ArticlesTestController extends ArticlesTestAppController {
2008-06-02 19:22:55 +00:00
/**
* name property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var string 'ArticlesTest'
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $name = 'ArticlesTest' ;
2008-06-02 19:22:55 +00:00
/**
* uses property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $uses = array ();
2008-06-02 19:22:55 +00:00
/**
* admin_index method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function admin_index () {
return true ;
}
}
2008-06-02 19:22:55 +00:00
/**
* SomePostsController class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class SomePostsController extends AppController {
2008-06-02 19:22:55 +00:00
/**
* name property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var string 'SomePosts'
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $name = 'SomePosts' ;
2008-06-02 19:22:55 +00:00
/**
* uses property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $uses = array ();
2008-06-02 19:22:55 +00:00
/**
* autoRender property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var bool false
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $autoRender = false ;
2008-06-02 19:22:55 +00:00
/**
* beforeFilter method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function beforeFilter () {
2008-07-26 20:09:20 +00:00
if ( $this -> params [ 'action' ] == 'index' ) {
$this -> params [ 'action' ] = 'view' ;
} else {
$this -> params [ 'action' ] = 'change' ;
}
2008-05-30 11:40:08 +00:00
$this -> params [ 'pass' ] = array ( 'changed' );
}
2008-06-02 19:22:55 +00:00
/**
* index method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function index () {
return true ;
}
2008-07-26 20:09:20 +00:00
/**
* change method
*
* @ access public
* @ return void
*/
function change () {
return true ;
}
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* TestCachedPagesController class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class TestCachedPagesController extends AppController {
2008-06-02 19:22:55 +00:00
/**
* name property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var string 'TestCachedPages'
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $name = 'TestCachedPages' ;
2008-06-02 19:22:55 +00:00
/**
* uses property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $uses = array ();
2008-06-02 19:22:55 +00:00
/**
* helpers property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $helpers = array ( 'Cache' );
2008-06-02 19:22:55 +00:00
/**
* cacheAction property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-07-30 21:14:22 +00:00
var $cacheAction = array (
'index' => '+2 sec' , 'test_nocache_tags' => '+2 sec' ,
'view/' => '+2 sec'
);
2008-06-02 19:22:55 +00:00
/**
* viewPath property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var string 'posts'
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $viewPath = 'posts' ;
2008-06-02 19:22:55 +00:00
/**
* index method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function index () {
$this -> render ();
}
2008-06-02 19:22:55 +00:00
/**
* test_nocache_tags method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function test_nocache_tags () {
$this -> render ();
}
2008-07-30 21:14:22 +00:00
/**
* view method
*
* @ access public
* @ return void
*/
function view ( $id = null ) {
$this -> render ( 'index' );
}
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* TimesheetsController class
2008-06-05 15:20:45 +00:00
*
2008-10-30 17:30:26 +00:00
* @ package cake
* @ subpackage cake . tests . cases
2008-06-02 19:22:55 +00:00
*/
2008-05-30 11:40:08 +00:00
class TimesheetsController extends AppController {
2008-06-02 19:22:55 +00:00
/**
* name property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var string 'Timesheets'
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $name = 'Timesheets' ;
2008-06-02 19:22:55 +00:00
/**
* uses property
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $uses = array ();
2008-06-02 19:22:55 +00:00
/**
* index method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function index () {
return true ;
}
}
/**
2009-03-18 17:55:58 +00:00
* DispatcherTest class
2008-05-30 11:40:08 +00:00
*
2009-03-18 17:55:58 +00:00
* @ package cake
2008-10-30 17:30:26 +00:00
* @ subpackage cake . tests . cases
2008-05-30 11:40:08 +00:00
*/
2008-07-21 02:40:58 +00:00
class DispatcherTest extends CakeTestCase {
2008-06-02 19:22:55 +00:00
/**
* setUp method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2009-06-03 16:23:35 +00:00
function startTest () {
2008-05-30 11:40:08 +00:00
$this -> _get = $_GET ;
$_GET = array ();
2009-03-21 23:55:39 +00:00
$this -> _post = $_POST ;
$this -> _files = $_FILES ;
$this -> _server = $_SERVER ;
$this -> _app = Configure :: read ( 'App' );
2008-05-30 11:40:08 +00:00
Configure :: write ( 'App.base' , false );
Configure :: write ( 'App.baseUrl' , false );
Configure :: write ( 'App.dir' , 'app' );
Configure :: write ( 'App.webroot' , 'webroot' );
2009-03-21 23:55:39 +00:00
$this -> _cache = Configure :: read ( 'Cache' );
2008-05-30 11:40:08 +00:00
Configure :: write ( 'Cache.disable' , true );
2009-03-21 23:55:39 +00:00
$this -> _vendorPaths = Configure :: read ( 'vendorPaths' );
$this -> _pluginPaths = Configure :: read ( 'pluginPaths' );
$this -> _viewPaths = Configure :: read ( 'viewPaths' );
2009-06-03 16:23:35 +00:00
$this -> _controllerPaths = Configure :: read ( 'controllerPaths' );
2009-03-21 23:55:39 +00:00
$this -> _debug = Configure :: read ( 'debug' );
2009-06-03 16:23:35 +00:00
Configure :: write ( 'controllerPaths' , Configure :: corePaths ( 'controller' ));
Configure :: write ( 'viewPaths' , Configure :: corePaths ( 'view' ));
2008-05-30 11:40:08 +00:00
}
2009-03-18 17:55:58 +00:00
/**
* tearDown method
*
* @ access public
* @ return void
*/
2009-06-03 16:23:35 +00:00
function endTest () {
2009-03-18 17:55:58 +00:00
$_GET = $this -> _get ;
2009-03-21 23:55:39 +00:00
$_POST = $this -> _post ;
$_FILES = $this -> _files ;
$_SERVER = $this -> _server ;
Configure :: write ( 'App' , $this -> _app );
Configure :: write ( 'Cache' , $this -> _cache );
Configure :: write ( 'vendorPaths' , $this -> _vendorPaths );
Configure :: write ( 'pluginPaths' , $this -> _pluginPaths );
Configure :: write ( 'viewPaths' , $this -> _viewPaths );
2009-06-03 16:23:35 +00:00
Configure :: write ( 'controllerPaths' , $this -> _controllerPaths );
2009-03-21 23:55:39 +00:00
Configure :: write ( 'debug' , $this -> _debug );
2009-03-18 17:55:58 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testParseParamsWithoutZerosAndEmptyPost method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testParseParamsWithoutZerosAndEmptyPost () {
$Dispatcher =& new Dispatcher ();
$test = $Dispatcher -> parseParams ( " /testcontroller/testaction/params1/params2/params3 " );
$this -> assertIdentical ( $test [ 'controller' ], 'testcontroller' );
$this -> assertIdentical ( $test [ 'action' ], 'testaction' );
$this -> assertIdentical ( $test [ 'pass' ][ 0 ], 'params1' );
$this -> assertIdentical ( $test [ 'pass' ][ 1 ], 'params2' );
$this -> assertIdentical ( $test [ 'pass' ][ 2 ], 'params3' );
$this -> assertFalse ( ! empty ( $test [ 'form' ]));
}
2008-06-02 19:22:55 +00:00
/**
* testParseParamsReturnsPostedData method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testParseParamsReturnsPostedData () {
$_POST [ 'testdata' ] = " My Posted Content " ;
$Dispatcher =& new Dispatcher ();
$test = $Dispatcher -> parseParams ( " / " );
$this -> assertTrue ( $test [ 'form' ], " Parsed URL not returning post data " );
$this -> assertIdentical ( $test [ 'form' ][ 'testdata' ], " My Posted Content " );
}
2008-06-02 19:22:55 +00:00
/**
* testParseParamsWithSingleZero method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testParseParamsWithSingleZero () {
$Dispatcher =& new Dispatcher ();
$test = $Dispatcher -> parseParams ( " /testcontroller/testaction/1/0/23 " );
$this -> assertIdentical ( $test [ 'controller' ], 'testcontroller' );
$this -> assertIdentical ( $test [ 'action' ], 'testaction' );
$this -> assertIdentical ( $test [ 'pass' ][ 0 ], '1' );
$this -> assertPattern ( '/\\A(?:0)\\z/' , $test [ 'pass' ][ 1 ]);
$this -> assertIdentical ( $test [ 'pass' ][ 2 ], '23' );
}
2008-06-02 19:22:55 +00:00
/**
* testParseParamsWithManySingleZeros method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testParseParamsWithManySingleZeros () {
$Dispatcher =& new Dispatcher ();
$test = $Dispatcher -> parseParams ( " /testcontroller/testaction/0/0/0/0/0/0 " );
$this -> assertPattern ( '/\\A(?:0)\\z/' , $test [ 'pass' ][ 0 ]);
$this -> assertPattern ( '/\\A(?:0)\\z/' , $test [ 'pass' ][ 1 ]);
$this -> assertPattern ( '/\\A(?:0)\\z/' , $test [ 'pass' ][ 2 ]);
$this -> assertPattern ( '/\\A(?:0)\\z/' , $test [ 'pass' ][ 3 ]);
$this -> assertPattern ( '/\\A(?:0)\\z/' , $test [ 'pass' ][ 4 ]);
$this -> assertPattern ( '/\\A(?:0)\\z/' , $test [ 'pass' ][ 5 ]);
}
2008-06-02 19:22:55 +00:00
/**
* testParseParamsWithManyZerosInEachSectionOfUrl method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testParseParamsWithManyZerosInEachSectionOfUrl () {
$Dispatcher =& new Dispatcher ();
$test = $Dispatcher -> parseParams ( " /testcontroller/testaction/000/0000/00000/000000/000000/0000000 " );
$this -> assertPattern ( '/\\A(?:000)\\z/' , $test [ 'pass' ][ 0 ]);
$this -> assertPattern ( '/\\A(?:0000)\\z/' , $test [ 'pass' ][ 1 ]);
$this -> assertPattern ( '/\\A(?:00000)\\z/' , $test [ 'pass' ][ 2 ]);
$this -> assertPattern ( '/\\A(?:000000)\\z/' , $test [ 'pass' ][ 3 ]);
$this -> assertPattern ( '/\\A(?:000000)\\z/' , $test [ 'pass' ][ 4 ]);
$this -> assertPattern ( '/\\A(?:0000000)\\z/' , $test [ 'pass' ][ 5 ]);
}
2008-06-02 19:22:55 +00:00
/**
* testParseParamsWithMixedOneToManyZerosInEachSectionOfUrl method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testParseParamsWithMixedOneToManyZerosInEachSectionOfUrl () {
$Dispatcher =& new Dispatcher ();
$test = $Dispatcher -> parseParams ( " /testcontroller/testaction/01/0403/04010/000002/000030/0000400 " );
$this -> assertPattern ( '/\\A(?:01)\\z/' , $test [ 'pass' ][ 0 ]);
$this -> assertPattern ( '/\\A(?:0403)\\z/' , $test [ 'pass' ][ 1 ]);
$this -> assertPattern ( '/\\A(?:04010)\\z/' , $test [ 'pass' ][ 2 ]);
$this -> assertPattern ( '/\\A(?:000002)\\z/' , $test [ 'pass' ][ 3 ]);
$this -> assertPattern ( '/\\A(?:000030)\\z/' , $test [ 'pass' ][ 4 ]);
$this -> assertPattern ( '/\\A(?:0000400)\\z/' , $test [ 'pass' ][ 5 ]);
}
2008-06-05 15:20:45 +00:00
/**
2008-06-02 19:22:55 +00:00
* testQueryStringOnRoot method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testQueryStringOnRoot () {
2008-12-17 16:11:44 +00:00
Router :: reload ();
Router :: connect ( '/' , array ( 'controller' => 'pages' , 'action' => 'display' , 'home' ));
Router :: connect ( '/pages/*' , array ( 'controller' => 'pages' , 'action' => 'display' ));
2008-06-20 20:17:23 +00:00
$_GET = array ( 'coffee' => 'life' , 'sleep' => 'sissies' );
2008-05-30 11:40:08 +00:00
$Dispatcher =& new Dispatcher ();
$uri = 'posts/home/?coffee=life&sleep=sissies' ;
$result = $Dispatcher -> parseParams ( $uri );
2008-07-05 12:37:18 +00:00
$this -> assertPattern ( '/posts/' , $result [ 'controller' ]);
$this -> assertPattern ( '/home/' , $result [ 'action' ]);
2008-05-30 11:40:08 +00:00
$this -> assertTrue ( isset ( $result [ 'url' ][ 'sleep' ]));
$this -> assertTrue ( isset ( $result [ 'url' ][ 'coffee' ]));
2008-06-05 15:20:45 +00:00
2008-05-30 11:40:08 +00:00
$Dispatcher =& new Dispatcher ();
$uri = '/?coffee=life&sleep=sissy' ;
$result = $Dispatcher -> parseParams ( $uri );
2008-07-05 12:37:18 +00:00
$this -> assertPattern ( '/pages/' , $result [ 'controller' ]);
$this -> assertPattern ( '/display/' , $result [ 'action' ]);
2008-05-30 11:40:08 +00:00
$this -> assertTrue ( isset ( $result [ 'url' ][ 'sleep' ]));
$this -> assertTrue ( isset ( $result [ 'url' ][ 'coffee' ]));
$this -> assertEqual ( $result [ 'url' ][ 'coffee' ], 'life' );
}
2008-06-02 19:22:55 +00:00
/**
* testFileUploadArrayStructure method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFileUploadArrayStructure () {
$_FILES = array ( 'data' => array ( 'name' => array (
'File' => array (
array ( 'data' => 'cake_mssql_patch.patch' ),
array ( 'data' => 'controller.diff' ),
array ( 'data' => '' ),
array ( 'data' => '' ),
),
'Post' => array ( 'attachment' => 'jquery-1.2.1.js' ),
),
'type' => array (
'File' => array (
array ( 'data' => '' ),
array ( 'data' => '' ),
array ( 'data' => '' ),
array ( 'data' => '' ),
),
'Post' => array ( 'attachment' => 'application/x-javascript' ),
),
'tmp_name' => array (
'File' => array (
array ( 'data' => '/private/var/tmp/phpy05Ywj' ),
array ( 'data' => '/private/var/tmp/php7MBztY' ),
array ( 'data' => '' ),
array ( 'data' => '' ),
),
'Post' => array ( 'attachment' => '/private/var/tmp/phpEwlrIo' ),
),
'error' => array (
'File' => array (
array ( 'data' => 0 ),
array ( 'data' => 0 ),
array ( 'data' => 4 ),
array ( 'data' => 4 )
),
'Post' => array ( 'attachment' => 0 )
),
'size' => array (
'File' => array (
array ( 'data' => 6271 ),
array ( 'data' => 350 ),
array ( 'data' => 0 ),
array ( 'data' => 0 ),
),
'Post' => array ( 'attachment' => 80469 )
),
));
$Dispatcher =& new Dispatcher ();
$result = $Dispatcher -> parseParams ( '/' );
$expected = array (
'File' => array (
array ( 'data' => array (
'name' => 'cake_mssql_patch.patch' ,
'type' => '' ,
'tmp_name' => '/private/var/tmp/phpy05Ywj' ,
'error' => 0 ,
'size' => 6271 ,
),
),
array ( 'data' => array (
'name' => 'controller.diff' ,
'type' => '' ,
'tmp_name' => '/private/var/tmp/php7MBztY' ,
'error' => 0 ,
'size' => 350 ,
)),
array ( 'data' => array (
'name' => '' ,
'type' => '' ,
'tmp_name' => '' ,
'error' => 4 ,
'size' => 0 ,
)),
array ( 'data' => array (
'name' => '' ,
'type' => '' ,
'tmp_name' => '' ,
'error' => 4 ,
'size' => 0 ,
)),
),
'Post' => array ( 'attachment' => array (
'name' => 'jquery-1.2.1.js' ,
'type' => 'application/x-javascript' ,
'tmp_name' => '/private/var/tmp/phpEwlrIo' ,
'error' => 0 ,
'size' => 80469 ,
)));
$this -> assertEqual ( $result [ 'data' ], $expected );
2008-08-25 22:57:24 +00:00
2008-08-24 16:44:33 +00:00
$_FILES = array (
'data' => array (
'name' => array (
'Document' => array (
1 => array (
'birth_cert' => 'born on.txt' ,
'passport' => 'passport.txt' ,
'drivers_license' => 'ugly pic.jpg'
),
2 => array (
'birth_cert' => 'aunt betty.txt' ,
'passport' => 'betty-passport.txt' ,
'drivers_license' => 'betty-photo.jpg'
),
),
),
'type' => array (
'Document' => array (
1 => array (
'birth_cert' => 'application/octet-stream' ,
'passport' => 'application/octet-stream' ,
'drivers_license' => 'application/octet-stream' ,
),
2 => array (
'birth_cert' => 'application/octet-stream' ,
'passport' => 'application/octet-stream' ,
'drivers_license' => 'application/octet-stream' ,
)
2008-08-25 22:57:24 +00:00
)
2008-08-24 16:44:33 +00:00
),
'tmp_name' => array (
'Document' => array (
1 => array (
'birth_cert' => '/private/var/tmp/phpbsUWfH' ,
'passport' => '/private/var/tmp/php7f5zLt' ,
'drivers_license' => '/private/var/tmp/phpMXpZgT' ,
),
2 => array (
'birth_cert' => '/private/var/tmp/php5kHZt0' ,
'passport' => '/private/var/tmp/phpnYkOuM' ,
'drivers_license' => '/private/var/tmp/php9Rq0P3' ,
)
)
),
'error' => array (
'Document' => array (
1 => array (
'birth_cert' => 0 ,
'passport' => 0 ,
'drivers_license' => 0 ,
),
2 => array (
'birth_cert' => 0 ,
'passport' => 0 ,
'drivers_license' => 0 ,
)
)
),
'size' => array (
'Document' => array (
1 => array (
'birth_cert' => 123 ,
'passport' => 458 ,
'drivers_license' => 875 ,
),
2 => array (
'birth_cert' => 876 ,
'passport' => 976 ,
'drivers_license' => 9783 ,
)
)
)
)
2008-08-25 22:57:24 +00:00
);
$Dispatcher =& new Dispatcher ();
2008-08-24 16:44:33 +00:00
$result = $Dispatcher -> parseParams ( '/' );
$expected = array (
'Document' => array (
1 => array (
'birth_cert' => array (
'name' => 'born on.txt' ,
'tmp_name' => '/private/var/tmp/phpbsUWfH' ,
'error' => 0 ,
'size' => 123 ,
'type' => 'application/octet-stream' ,
),
'passport' => array (
'name' => 'passport.txt' ,
'tmp_name' => '/private/var/tmp/php7f5zLt' ,
'error' => 0 ,
'size' => 458 ,
'type' => 'application/octet-stream' ,
),
'drivers_license' => array (
'name' => 'ugly pic.jpg' ,
'tmp_name' => '/private/var/tmp/phpMXpZgT' ,
'error' => 0 ,
'size' => 875 ,
'type' => 'application/octet-stream' ,
),
),
2 => array (
'birth_cert' => array (
'name' => 'aunt betty.txt' ,
'tmp_name' => '/private/var/tmp/php5kHZt0' ,
'error' => 0 ,
'size' => 876 ,
'type' => 'application/octet-stream' ,
),
'passport' => array (
'name' => 'betty-passport.txt' ,
'tmp_name' => '/private/var/tmp/phpnYkOuM' ,
'error' => 0 ,
'size' => 976 ,
'type' => 'application/octet-stream' ,
),
'drivers_license' => array (
'name' => 'betty-photo.jpg' ,
'tmp_name' => '/private/var/tmp/php9Rq0P3' ,
'error' => 0 ,
'size' => 9783 ,
'type' => 'application/octet-stream' ,
),
),
)
);
$this -> assertEqual ( $result [ 'data' ], $expected );
2009-08-13 15:29:00 +00:00
$_FILES = array (
'data' => array (
'name' => array ( 'birth_cert' => 'born on.txt' ),
'type' => array ( 'birth_cert' => 'application/octet-stream' ),
'tmp_name' => array ( 'birth_cert' => '/private/var/tmp/phpbsUWfH' ),
'error' => array ( 'birth_cert' => 0 ),
'size' => array ( 'birth_cert' => 123 )
)
);
$Dispatcher =& new Dispatcher ();
$result = $Dispatcher -> parseParams ( '/' );
$expected = array (
'birth_cert' => array (
'name' => 'born on.txt' ,
'type' => 'application/octet-stream' ,
'tmp_name' => '/private/var/tmp/phpbsUWfH' ,
'error' => 0 ,
'size' => 123
)
);
$this -> assertEqual ( $result [ 'data' ], $expected );
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testGetUrl method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testGetUrl () {
$Dispatcher =& new Dispatcher ();
$Dispatcher -> base = '/app/webroot/index.php' ;
$uri = '/app/webroot/index.php/posts/add' ;
$result = $Dispatcher -> getUrl ( $uri );
$expected = 'posts/add' ;
$this -> assertEqual ( $expected , $result );
Configure :: write ( 'App.baseUrl' , '/app/webroot/index.php' );
$uri = '/posts/add' ;
$result = $Dispatcher -> getUrl ( $uri );
$expected = 'posts/add' ;
$this -> assertEqual ( $expected , $result );
$_GET [ 'url' ] = array ();
Configure :: write ( 'App.base' , '/control' );
$Dispatcher =& new Dispatcher ();
2008-08-25 22:57:24 +00:00
$Dispatcher -> baseUrl ();
2008-05-30 11:40:08 +00:00
$uri = '/control/students/browse' ;
$result = $Dispatcher -> getUrl ( $uri );
$expected = 'students/browse' ;
$this -> assertEqual ( $expected , $result );
$_GET [ 'url' ] = array ();
$Dispatcher =& new Dispatcher ();
$Dispatcher -> base = '' ;
$uri = '/?/home' ;
$result = $Dispatcher -> getUrl ( $uri );
$expected = '?/home' ;
$this -> assertEqual ( $expected , $result );
2008-06-05 15:20:45 +00:00
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testBaseUrlAndWebrootWithModRewrite method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testBaseUrlAndWebrootWithModRewrite () {
$Dispatcher =& new Dispatcher ();
$Dispatcher -> base = false ;
$_SERVER [ 'DOCUMENT_ROOT' ] = '/cake/repo/branches' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/cake/repo/branches/1.2.x.x/app/webroot/index.php' ;
$_SERVER [ 'PHP_SELF' ] = '/1.2.x.x/app/webroot/index.php' ;
$result = $Dispatcher -> baseUrl ();
$expected = '/1.2.x.x' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/1.2.x.x/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
$Dispatcher -> base = false ;
$_SERVER [ 'DOCUMENT_ROOT' ] = '/cake/repo/branches/1.2.x.x/app/webroot' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/cake/repo/branches/1.2.x.x/app/webroot/index.php' ;
$_SERVER [ 'PHP_SELF' ] = '/index.php' ;
$result = $Dispatcher -> baseUrl ();
$expected = '' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
$Dispatcher -> base = false ;
$_SERVER [ 'DOCUMENT_ROOT' ] = '/cake/repo/branches/1.2.x.x/test/' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/cake/repo/branches/1.2.x.x/test/webroot/index.php' ;
$_SERVER [ 'PHP_SELF' ] = '/webroot/index.php' ;
$result = $Dispatcher -> baseUrl ();
$expected = '' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
$Dispatcher -> base = false ;;
$_SERVER [ 'DOCUMENT_ROOT' ] = '/some/apps/where' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/some/apps/where/app/webroot/index.php' ;
$_SERVER [ 'PHP_SELF' ] = '/some/apps/where/app/webroot/index.php' ;
$result = $Dispatcher -> baseUrl ();
$expected = '/some/apps/where' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/some/apps/where/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.dir' , 'auth' );
$Dispatcher -> base = false ;;
$_SERVER [ 'DOCUMENT_ROOT' ] = '/cake/repo/branches' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/cake/repo/branches/demos/auth/webroot/index.php' ;
$_SERVER [ 'PHP_SELF' ] = '/demos/auth/webroot/index.php' ;
$result = $Dispatcher -> baseUrl ();
$expected = '/demos/auth' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/demos/auth/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.dir' , 'code' );
$Dispatcher -> base = false ;;
$_SERVER [ 'DOCUMENT_ROOT' ] = '/Library/WebServer/Documents' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/Library/WebServer/Documents/clients/PewterReport/code/webroot/index.php' ;
$_SERVER [ 'PHP_SELF' ] = '/clients/PewterReport/code/webroot/index.php' ;
$result = $Dispatcher -> baseUrl ();
$expected = '/clients/PewterReport/code' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/clients/PewterReport/code/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
}
2008-06-02 19:22:55 +00:00
/**
* testBaseUrlwithModRewriteAlias method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testBaseUrlwithModRewriteAlias () {
$_SERVER [ 'DOCUMENT_ROOT' ] = '/home/aplusnur/public_html' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/home/aplusnur/cake2/app/webroot/index.php' ;
$_SERVER [ 'PHP_SELF' ] = '/control/index.php' ;
Configure :: write ( 'App.base' , '/control' );
$Dispatcher =& new Dispatcher ();
$result = $Dispatcher -> baseUrl ();
$expected = '/control' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/control/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.base' , false );
Configure :: write ( 'App.dir' , 'affiliate' );
Configure :: write ( 'App.webroot' , 'newaffiliate' );
$_SERVER [ 'DOCUMENT_ROOT' ] = '/var/www/abtravaff/html' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/var/www/abtravaff/html/newaffiliate/index.php' ;
$_SERVER [ 'PHP_SELF' ] = '/newaffiliate/index.php' ;
$Dispatcher =& new Dispatcher ();
$result = $Dispatcher -> baseUrl ();
$expected = '/newaffiliate' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/newaffiliate/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
}
2008-06-02 19:22:55 +00:00
/**
* testBaseUrlAndWebrootWithBaseUrl method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testBaseUrlAndWebrootWithBaseUrl () {
$Dispatcher =& new Dispatcher ();
Configure :: write ( 'App.dir' , 'app' );
Configure :: write ( 'App.baseUrl' , '/app/webroot/index.php' );
$result = $Dispatcher -> baseUrl ();
$expected = '/app/webroot/index.php' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/app/webroot/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.baseUrl' , '/app/webroot/test.php' );
$result = $Dispatcher -> baseUrl ();
$expected = '/app/webroot/test.php' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/app/webroot/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.baseUrl' , '/app/index.php' );
$result = $Dispatcher -> baseUrl ();
$expected = '/app/index.php' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/app/webroot/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.baseUrl' , '/index.php' );
$result = $Dispatcher -> baseUrl ();
$expected = '/index.php' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/app/webroot/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.baseUrl' , '/CakeBB/app/webroot/index.php' );
$result = $Dispatcher -> baseUrl ();
$expected = '/CakeBB/app/webroot/index.php' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/CakeBB/app/webroot/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.baseUrl' , '/CakeBB/app/index.php' );
$result = $Dispatcher -> baseUrl ();
$expected = '/CakeBB/app/index.php' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/CakeBB/app/webroot/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.baseUrl' , '/CakeBB/index.php' );
$result = $Dispatcher -> baseUrl ();
$expected = '/CakeBB/index.php' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/CakeBB/app/webroot/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.baseUrl' , '/dbhauser/index.php' );
$_SERVER [ 'DOCUMENT_ROOT' ] = '/kunden/homepages/4/d181710652/htdocs/joomla' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/kunden/homepages/4/d181710652/htdocs/joomla/dbhauser/index.php' ;
$result = $Dispatcher -> baseUrl ();
$expected = '/dbhauser/index.php' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/dbhauser/app/webroot/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
}
2008-06-02 19:22:55 +00:00
/**
* testBaseUrlAndWebrootWithBase method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testBaseUrlAndWebrootWithBase () {
$Dispatcher =& new Dispatcher ();
$Dispatcher -> base = '/app' ;
$result = $Dispatcher -> baseUrl ();
$expected = '/app' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/app/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
$Dispatcher -> base = '' ;
$result = $Dispatcher -> baseUrl ();
$expected = '' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
Configure :: write ( 'App.dir' , 'testbed' );
$Dispatcher -> base = '/cake/testbed/webroot' ;
$result = $Dispatcher -> baseUrl ();
$expected = '/cake/testbed/webroot' ;
$this -> assertEqual ( $expected , $result );
$expectedWebroot = '/cake/testbed/webroot/' ;
$this -> assertEqual ( $expectedWebroot , $Dispatcher -> webroot );
}
2008-06-02 19:22:55 +00:00
/**
* testMissingController method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testMissingController () {
$Dispatcher =& new TestDispatcher ();
Configure :: write ( 'App.baseUrl' , '/index.php' );
$url = 'some_controller/home/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
2009-02-17 23:32:15 +00:00
$expected = array ( 'missingController' , array ( array (
'className' => 'SomeControllerController' ,
'webroot' => '/app/webroot/' ,
'url' => 'some_controller/home/param:value/param2:value2' ,
'base' => '/index.php'
)));
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $expected , $controller );
}
2008-06-02 19:22:55 +00:00
/**
* testPrivate method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testPrivate () {
$Dispatcher =& new TestDispatcher ();
Configure :: write ( 'App.baseUrl' , '/index.php' );
2008-07-26 20:09:20 +00:00
$url = 'some_pages/_protected/param:value/param2:value2' ;
2009-02-17 23:32:15 +00:00
2008-05-30 11:40:08 +00:00
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
2009-02-17 23:32:15 +00:00
$expected = array ( 'privateAction' , array ( array (
'className' => 'SomePagesController' ,
'action' => '_protected' ,
'webroot' => '/app/webroot/' ,
'url' => 'some_pages/_protected/param:value/param2:value2' ,
'base' => '/index.php'
)));
2008-09-12 02:06:53 +00:00
$this -> assertEqual ( $controller , $expected );
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testMissingAction method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testMissingAction () {
$Dispatcher =& new TestDispatcher ();
Configure :: write ( 'App.baseUrl' , '/index.php' );
$url = 'some_pages/home/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
2009-02-17 23:32:15 +00:00
$expected = array ( 'missingAction' , array ( array (
'className' => 'SomePagesController' ,
'action' => 'home' ,
'webroot' => '/app/webroot/' ,
'url' => '/index.php/some_pages/home/param:value/param2:value2' ,
'base' => '/index.php'
)));
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $expected , $controller );
2008-07-26 20:09:20 +00:00
$Dispatcher =& new TestDispatcher ();
Configure :: write ( 'App.baseUrl' , '/index.php' );
$url = 'some_pages/redirect/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
2009-02-17 23:32:15 +00:00
$expected = array ( 'missingAction' , array ( array (
'className' => 'SomePagesController' ,
'action' => 'redirect' ,
'webroot' => '/app/webroot/' ,
'url' => '/index.php/some_pages/redirect/param:value/param2:value2' ,
'base' => '/index.php'
)));
2008-07-26 20:09:20 +00:00
$this -> assertEqual ( $expected , $controller );
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testDispatch method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testDispatch () {
$Dispatcher =& new TestDispatcher ();
Configure :: write ( 'App.baseUrl' , '/index.php' );
$url = 'pages/home/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$expected = 'Pages' ;
$this -> assertEqual ( $expected , $controller -> name );
$expected = array ( '0' => 'home' , 'param' => 'value' , 'param2' => 'value2' );
$this -> assertIdentical ( $expected , $controller -> passedArgs );
Configure :: write ( 'App.baseUrl' , '/pages/index.php' );
$url = 'pages/home' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$expected = 'Pages' ;
$this -> assertEqual ( $expected , $controller -> name );
$url = 'pages/home/' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$expected = 'Pages' ;
$this -> assertEqual ( $expected , $controller -> name );
unset ( $Dispatcher );
2008-07-26 20:09:20 +00:00
2008-05-30 11:40:08 +00:00
$Dispatcher =& new TestDispatcher ();
Configure :: write ( 'App.baseUrl' , '/timesheets/index.php' );
$url = 'timesheets' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$expected = 'Timesheets' ;
$this -> assertEqual ( $expected , $controller -> name );
$url = 'timesheets/' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$this -> assertEqual ( 'Timesheets' , $controller -> name );
$this -> assertEqual ( '/timesheets/index.php' , $Dispatcher -> base );
2008-08-26 18:33:00 +00:00
$url = 'test_dispatch_pages/camelCased' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$this -> assertEqual ( 'TestDispatchPages' , $controller -> name );
2008-05-30 11:40:08 +00:00
}
2009-02-25 01:36:13 +00:00
/**
* testDispatchWithArray method
*
* @ access public
* @ return void
*/
function testDispatchWithArray () {
$Dispatcher =& new TestDispatcher ();
Configure :: write ( 'App.baseUrl' , '/index.php' );
$url = 'pages/home/param:value/param2:value2' ;
$url = array ( 'controller' => 'pages' , 'action' => 'display' );
$controller = $Dispatcher -> dispatch ( $url , array ( 'pass' => array ( 'home' ), 'named' => array ( 'param' => 'value' , 'param2' => 'value2' ), 'return' => 1 ));
$expected = 'Pages' ;
$this -> assertEqual ( $expected , $controller -> name );
$expected = array ( '0' => 'home' , 'param' => 'value' , 'param2' => 'value2' );
$this -> assertIdentical ( $expected , $controller -> passedArgs );
}
2008-06-02 19:22:55 +00:00
/**
* testAdminDispatch method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testAdminDispatch () {
$_POST = array ();
$Dispatcher =& new TestDispatcher ();
Configure :: write ( 'Routing.admin' , 'admin' );
Configure :: write ( 'App.baseUrl' , '/cake/repo/branches/1.2.x.x/index.php' );
$url = 'admin/test_dispatch_pages/index/param:value/param2:value2' ;
Router :: reload ();
$Router =& Router :: getInstance ();
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$expected = 'TestDispatchPages' ;
$this -> assertEqual ( $expected , $controller -> name );
$expected = array ( 'param' => 'value' , 'param2' => 'value2' );
$this -> assertIdentical ( $expected , $controller -> passedArgs );
$this -> assertTrue ( $controller -> params [ 'admin' ]);
$expected = '/cake/repo/branches/1.2.x.x/index.php/admin/test_dispatch_pages/index/param:value/param2:value2' ;
$this -> assertIdentical ( $expected , $controller -> here );
$expected = '/cake/repo/branches/1.2.x.x/index.php' ;
$this -> assertIdentical ( $expected , $controller -> base );
}
2008-06-02 19:22:55 +00:00
/**
* testPluginDispatch method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testPluginDispatch () {
$_POST = array ();
$_SERVER [ 'PHP_SELF' ] = '/cake/repo/branches/1.2.x.x/index.php' ;
Router :: reload ();
$Dispatcher =& new TestDispatcher ();
Router :: connect ( '/my_plugin/:controller/*' , array ( 'plugin' => 'my_plugin' , 'controller' => 'pages' , 'action' => 'display' ));
$Dispatcher -> base = false ;
$url = 'my_plugin/some_pages/home/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$result = $Dispatcher -> parseParams ( $url );
$expected = array (
'pass' => array ( 'home' ),
'named' => array ( 'param' => 'value' , 'param2' => 'value2' ), 'plugin' => 'my_plugin' ,
'controller' => 'some_pages' , 'action' => 'display' , 'form' => null ,
'url' => array ( 'url' => 'my_plugin/some_pages/home/param:value/param2:value2' ),
);
ksort ( $expected );
ksort ( $result );
$this -> assertEqual ( $expected , $result );
$expected = 'my_plugin' ;
$this -> assertIdentical ( $expected , $controller -> plugin );
$expected = 'SomePages' ;
$this -> assertIdentical ( $expected , $controller -> name );
2009-02-16 18:39:09 +00:00
$expected = 'some_pages' ;
$this -> assertIdentical ( $expected , $controller -> params [ 'controller' ]);
2008-05-30 11:40:08 +00:00
$expected = array ( '0' => 'home' , 'param' => 'value' , 'param2' => 'value2' );
$this -> assertIdentical ( $expected , $controller -> passedArgs );
$expected = '/cake/repo/branches/1.2.x.x/my_plugin/some_pages/home/param:value/param2:value2' ;
$this -> assertIdentical ( $expected , $controller -> here );
$expected = '/cake/repo/branches/1.2.x.x' ;
$this -> assertIdentical ( $expected , $controller -> base );
}
2008-06-02 19:22:55 +00:00
/**
* testAutomaticPluginDispatch method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testAutomaticPluginDispatch () {
$_POST = array ();
$_SERVER [ 'PHP_SELF' ] = '/cake/repo/branches/1.2.x.x/index.php' ;
Router :: reload ();
$Dispatcher =& new TestDispatcher ();
Router :: connect ( '/my_plugin/:controller/:action/*' , array ( 'plugin' => 'my_plugin' , 'controller' => 'pages' , 'action' => 'display' ));
$Dispatcher -> base = false ;
$url = 'my_plugin/other_pages/index/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$expected = 'my_plugin' ;
$this -> assertIdentical ( $expected , $controller -> plugin );
$expected = 'OtherPages' ;
$this -> assertIdentical ( $expected , $controller -> name );
$expected = 'index' ;
$this -> assertIdentical ( $expected , $controller -> action );
$expected = array ( 'param' => 'value' , 'param2' => 'value2' );
$this -> assertIdentical ( $expected , $controller -> passedArgs );
$expected = '/cake/repo/branches/1.2.x.x/my_plugin/other_pages/index/param:value/param2:value2' ;
$this -> assertIdentical ( $expected , $controller -> here );
$expected = '/cake/repo/branches/1.2.x.x' ;
$this -> assertIdentical ( $expected , $controller -> base );
}
2008-06-02 19:22:55 +00:00
/**
* testAutomaticPluginControllerDispatch method
2008-06-05 15:20:45 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testAutomaticPluginControllerDispatch () {
$_POST = array ();
$_SERVER [ 'PHP_SELF' ] = '/cake/repo/branches/1.2.x.x/index.php' ;
Router :: reload ();
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
$url = 'my_plugin/add/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$expected = 'my_plugin' ;
$this -> assertIdentical ( $controller -> plugin , $expected );
$expected = 'MyPlugin' ;
$this -> assertIdentical ( $controller -> name , $expected );
$expected = 'add' ;
$this -> assertIdentical ( $controller -> action , $expected );
$expected = array ( 'param' => 'value' , 'param2' => 'value2' );
$this -> assertEqual ( $controller -> params [ 'named' ], $expected );
2009-02-13 19:39:52 +00:00
Router :: reload ();
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
/* Simulates the Route for a real plugin, installed in APP/plugins */
Router :: connect ( '/my_plugin/:controller/:action/*' , array ( 'plugin' => 'my_plugin' ));
$plugin = 'MyPlugin' ;
$pluginUrl = Inflector :: underscore ( $plugin );
$url = $pluginUrl ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$expected = $pluginUrl ;
$this -> assertIdentical ( $controller -> plugin , $expected );
$expected = $plugin ;
$this -> assertIdentical ( $controller -> name , $expected );
$expected = 'index' ;
$this -> assertIdentical ( $controller -> action , $expected );
$expected = $pluginUrl ;
$this -> assertEqual ( $controller -> params [ 'controller' ], $expected );
2008-05-30 11:40:08 +00:00
Configure :: write ( 'Routing.admin' , 'admin' );
Router :: reload ();
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
$url = 'admin/my_plugin/add/5/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$expected = 'my_plugin' ;
$this -> assertIdentical ( $controller -> plugin , $expected );
$expected = 'MyPlugin' ;
$this -> assertIdentical ( $controller -> name , $expected );
$expected = 'admin_add' ;
$this -> assertIdentical ( $controller -> action , $expected );
$expected = array ( 0 => 5 , 'param' => 'value' , 'param2' => 'value2' );
$this -> assertEqual ( $controller -> passedArgs , $expected );
Router :: reload ();
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
$controller = $Dispatcher -> dispatch ( 'admin/articles_test' , array ( 'return' => 1 ));
$expected = 'articles_test' ;
$this -> assertIdentical ( $controller -> plugin , $expected );
$expected = 'ArticlesTest' ;
$this -> assertIdentical ( $controller -> name , $expected );
$expected = 'admin_index' ;
$this -> assertIdentical ( $controller -> action , $expected );
$expected = array (
'pass' => array (), 'named' => array (), 'controller' => 'articles_test' , 'plugin' => 'articles_test' , 'action' => 'admin_index' ,
'prefix' => 'admin' , 'admin' => true , 'form' => array (), 'url' => array ( 'url' => 'admin/articles_test' ), 'return' => 1
);
$this -> assertEqual ( $controller -> params , $expected );
}
2009-02-13 19:34:25 +00:00
/**
* test Plugin dispatching without controller name and using
* plugin short form instead .
*
* @ return void
**/
function testAutomaticPluginDispatchWithShortAccess () {
$_POST = array ();
$_SERVER [ 'PHP_SELF' ] = '/cake/repo/branches/1.2.x.x/index.php' ;
Router :: reload ();
Router :: connect ( '/my_plugin/:controller/:action/*' , array ( 'plugin' => 'my_plugin' ));
2009-02-16 00:18:59 +00:00
$Dispatcher =& new TestDispatcher ();
2009-02-13 19:34:25 +00:00
$Dispatcher -> base = false ;
$url = 'my_plugin/my_plugin/add' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$this -> assertFalse ( isset ( $controller -> params [ 'pass' ][ 0 ]));
2009-02-16 00:18:59 +00:00
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
2009-02-13 19:34:25 +00:00
$url = 'my_plugin/my_plugin/add/0' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$this -> assertTrue ( isset ( $controller -> params [ 'pass' ][ 0 ]));
2009-02-16 00:18:59 +00:00
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
2009-02-13 19:34:25 +00:00
$url = 'my_plugin/add' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
2009-02-16 00:18:59 +00:00
2009-02-13 19:34:25 +00:00
$this -> assertFalse ( isset ( $controller -> params [ 'pass' ][ 0 ]));
2009-02-16 00:18:59 +00:00
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
2009-02-13 19:34:25 +00:00
$url = 'my_plugin/add/0' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$this -> assertIdentical ( '0' , $controller -> params [ 'pass' ][ 0 ]);
2009-02-16 00:18:59 +00:00
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
2009-02-13 19:34:25 +00:00
$url = 'my_plugin/add/1' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$this -> assertIdentical ( '1' , $controller -> params [ 'pass' ][ 0 ]);
}
2008-06-05 15:20:45 +00:00
/**
* testAutomaticPluginControllerMissingActionDispatch method
2008-06-10 22:38:05 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testAutomaticPluginControllerMissingActionDispatch () {
$_POST = array ();
$_SERVER [ 'PHP_SELF' ] = '/cake/repo/branches/1.2.x.x/index.php' ;
Router :: reload ();
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
2009-02-17 23:32:15 +00:00
$url = 'my_plugin/not_here/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$expected = array ( 'missingAction' , array ( array (
'className' => 'MyPluginController' ,
'action' => 'not_here' ,
'webroot' => '/cake/repo/branches/1.2.x.x/' ,
'url' => '/cake/repo/branches/1.2.x.x/my_plugin/not_here/param:value/param2:value2' ,
'base' => '/cake/repo/branches/1.2.x.x'
)));
$this -> assertIdentical ( $expected , $controller );
Router :: reload ();
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
2008-05-30 11:40:08 +00:00
$url = 'my_plugin/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
2009-02-17 23:32:15 +00:00
$expected = array ( 'missingAction' , array ( array (
'className' => 'MyPluginController' ,
'action' => 'param:value' ,
'webroot' => '/cake/repo/branches/1.2.x.x/' ,
'url' => '/cake/repo/branches/1.2.x.x/my_plugin/param:value/param2:value2' ,
'base' => '/cake/repo/branches/1.2.x.x'
)));
2008-05-30 11:40:08 +00:00
$this -> assertIdentical ( $expected , $controller );
}
2008-06-05 15:20:45 +00:00
/**
* testPrefixProtection method
2008-06-10 22:38:05 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testPrefixProtection () {
$_POST = array ();
$_SERVER [ 'PHP_SELF' ] = '/cake/repo/branches/1.2.x.x/index.php' ;
Router :: reload ();
Router :: connect ( '/admin/:controller/:action/*' , array ( 'prefix' => 'admin' ), array ( 'controller' , 'action' ));
$Dispatcher =& new TestDispatcher ();
$Dispatcher -> base = false ;
$url = 'test_dispatch_pages/admin_index/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
2009-02-17 23:32:15 +00:00
$expected = array ( 'privateAction' , array ( array (
'className' => 'TestDispatchPagesController' ,
'action' => 'admin_index' ,
'webroot' => '/cake/repo/branches/1.2.x.x/' ,
'url' => 'test_dispatch_pages/admin_index/param:value/param2:value2' ,
'base' => '/cake/repo/branches/1.2.x.x'
)));
2008-05-30 11:40:08 +00:00
$this -> assertIdentical ( $expected , $controller );
}
2008-07-24 02:19:05 +00:00
/**
* undocumented function
*
* @ return void
**/
function testTestPluginDispatch () {
$Dispatcher =& new TestDispatcher ();
$_back = Configure :: read ( 'pluginPaths' );
Configure :: write ( 'pluginPaths' , array ( TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS ));
$url = '/test_plugin/tests/index' ;
$result = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$this -> assertTrue ( class_exists ( 'TestsController' ));
$this -> assertTrue ( class_exists ( 'TestPluginAppController' ));
$this -> assertTrue ( class_exists ( 'OtherComponentComponent' ));
$this -> assertTrue ( class_exists ( 'PluginsComponentComponent' ));
2008-07-26 20:09:20 +00:00
2008-07-24 02:19:05 +00:00
Configure :: write ( 'pluginPaths' , $_back );
}
2008-06-05 15:20:45 +00:00
/**
* testChangingParamsFromBeforeFilter method
2008-06-10 22:38:05 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testChangingParamsFromBeforeFilter () {
2009-03-21 23:55:39 +00:00
$_SERVER [ 'PHP_SELF' ] = '/cake/repo/branches/1.2.x.x/index.php' ;
2008-05-30 11:40:08 +00:00
$Dispatcher =& new TestDispatcher ();
$url = 'some_posts/index/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
2009-02-17 23:32:15 +00:00
$expected = array ( 'missingAction' , array ( array (
'className' => 'SomePostsController' ,
'action' => 'view' ,
'webroot' => '/cake/repo/branches/1.2.x.x/' ,
'url' => '/cake/repo/branches/1.2.x.x/some_posts/index/param:value/param2:value2' ,
'base' => '/cake/repo/branches/1.2.x.x'
)));
2008-07-26 20:09:20 +00:00
$this -> assertEqual ( $expected , $controller );
$url = 'some_posts/something_else/param:value/param2:value2' ;
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
2008-05-30 11:40:08 +00:00
$expected = 'SomePosts' ;
$this -> assertEqual ( $expected , $controller -> name );
2008-07-26 20:09:20 +00:00
$expected = 'change' ;
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $expected , $controller -> action );
$expected = array ( 'changed' );
$this -> assertIdentical ( $expected , $controller -> params [ 'pass' ]);
}
2008-06-05 15:20:45 +00:00
/**
* testStaticAssets method
2008-06-10 22:38:05 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testStaticAssets () {
Router :: reload ();
$Configure = Configure :: getInstance ();
$Configure -> __objects = null ;
Configure :: write ( 'pluginPaths' , array ( TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS ));
Configure :: write ( 'vendorPaths' , array ( TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'vendors' . DS ));
$Dispatcher =& new TestDispatcher ();
2008-07-05 12:24:51 +00:00
Configure :: write ( 'debug' , 0 );
ob_start ();
2009-11-03 18:14:38 +00:00
$Dispatcher -> dispatch ( 'img/test.jpg' );
2008-07-05 12:24:51 +00:00
$result = ob_get_clean ();
$file = file_get_contents ( TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'vendors' . DS . 'img' . DS . 'test.jpg' );
$this -> assertEqual ( $file , $result );
2008-07-26 20:09:20 +00:00
2008-05-30 11:40:08 +00:00
Configure :: write ( 'debug' , 0 );
$Dispatcher -> params = $Dispatcher -> parseParams ( 'css/test_asset.css' );
ob_start ();
$Dispatcher -> cached ( 'css/test_asset.css' );
$result = ob_get_clean ();
$this -> assertEqual ( 'this is the test asset css file' , $result );
2008-06-05 15:20:45 +00:00
2008-06-17 04:24:55 +00:00
2009-08-12 14:08:31 +00:00
ob_start ();
$Dispatcher -> cached ( 'test_plugin/js/test_plugin/test.js' );
$result = ob_get_clean ();
$this -> assertEqual ( 'alert("Test App");' , $result );
Configure :: write ( 'debug' , 0 );
$Dispatcher -> params = $Dispatcher -> parseParams ( 'test_plugin/js/test_plugin/test.js' );
ob_start ();
$Dispatcher -> cached ( 'test_plugin/js/test_plugin/test.js' );
$result = ob_get_clean ();
$this -> assertEqual ( 'alert("Test App");' , $result );
2008-05-30 11:40:08 +00:00
Configure :: write ( 'debug' , 0 );
$Dispatcher -> params = $Dispatcher -> parseParams ( 'test_plugin/css/test_plugin_asset.css' );
ob_start ();
$Dispatcher -> cached ( 'test_plugin/css/test_plugin_asset.css' );
$result = ob_get_clean ();
$this -> assertEqual ( 'this is the test plugin asset css file' , $result );
2009-08-12 14:08:31 +00:00
2008-06-17 04:24:55 +00:00
Configure :: write ( 'debug' , 0 );
$Dispatcher -> params = $Dispatcher -> parseParams ( 'test_plugin/img/cake.icon.gif' );
ob_start ();
$Dispatcher -> cached ( 'test_plugin/img/cake.icon.gif' );
$result = ob_get_clean ();
$file = file_get_contents ( TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS . 'test_plugin' . DS . 'vendors' . DS . 'img' . DS . 'cake.icon.gif' );
$this -> assertEqual ( $file , $result );
2009-11-03 18:14:38 +00:00
Configure :: write ( 'debug' , 2 );
$Dispatcher -> params = $Dispatcher -> parseParams ( 'plugin_js/js/plugin_js.js' );
ob_start ();
$Dispatcher -> cached ( 'plugin_js/js/plugin_js.js' );
$result = ob_get_clean ();
$expected = " alert('win sauce'); " ;
$this -> assertEqual ( $result , $expected );
2008-06-05 15:20:45 +00:00
header ( 'Content-type: text/html' ); //reset the header content-type without page can render as plain text.
}
/**
* testFullPageCachingDispatch method
2008-06-10 22:38:05 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFullPageCachingDispatch () {
Configure :: write ( 'Cache.disable' , false );
Configure :: write ( 'Cache.check' , true );
Configure :: write ( 'debug' , 2 );
$_POST = array ();
$_SERVER [ 'PHP_SELF' ] = '/' ;
Router :: reload ();
Router :: connect ( '/' , array ( 'controller' => 'test_cached_pages' , 'action' => 'index' ));
Configure :: write ( 'viewPaths' , array ( TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views' . DS ));
$dispatcher =& new Dispatcher ();
$dispatcher -> base = false ;
$url = '/' ;
ob_start ();
2008-06-12 18:36:08 +00:00
$dispatcher -> dispatch ( $url );
$out = ob_get_clean ();
2008-05-30 11:40:08 +00:00
ob_start ();
$dispatcher -> cached ( $url );
$cached = ob_get_clean ();
$result = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $out );
$cached = preg_replace ( '/<!--+[^<>]+-->/' , '' , $cached );
$expected = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $cached );
$this -> assertEqual ( $result , $expected );
2008-06-12 18:36:08 +00:00
$filename = $this -> __cachePath ( $dispatcher -> here );
2008-05-30 11:40:08 +00:00
unlink ( $filename );
$dispatcher -> base = false ;
$url = 'test_cached_pages/index' ;
ob_start ();
$dispatcher -> dispatch ( $url );
$out = ob_get_clean ();
ob_start ();
$dispatcher -> cached ( $url );
$cached = ob_get_clean ();
$result = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $out );
$cached = preg_replace ( '/<!--+[^<>]+-->/' , '' , $cached );
$expected = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $cached );
$this -> assertEqual ( $result , $expected );
2008-06-12 18:36:08 +00:00
$filename = $this -> __cachePath ( $dispatcher -> here );
2008-05-30 11:40:08 +00:00
unlink ( $filename );
$url = 'TestCachedPages/index' ;
ob_start ();
$dispatcher -> dispatch ( $url );
$out = ob_get_clean ();
ob_start ();
$dispatcher -> cached ( $url );
$cached = ob_get_clean ();
$result = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $out );
$cached = preg_replace ( '/<!--+[^<>]+-->/' , '' , $cached );
$expected = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $cached );
$this -> assertEqual ( $result , $expected );
2008-06-12 18:36:08 +00:00
$filename = $this -> __cachePath ( $dispatcher -> here );
2008-05-30 11:40:08 +00:00
unlink ( $filename );
$url = 'TestCachedPages/test_nocache_tags' ;
ob_start ();
$dispatcher -> dispatch ( $url );
$out = ob_get_clean ();
ob_start ();
$dispatcher -> cached ( $url );
$cached = ob_get_clean ();
$result = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $out );
$cached = preg_replace ( '/<!--+[^<>]+-->/' , '' , $cached );
2008-07-30 21:14:22 +00:00
$expected = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $cached );
$this -> assertEqual ( $result , $expected );
$filename = $this -> __cachePath ( $dispatcher -> here );
unlink ( $filename );
$url = 'test_cached_pages/view/param/param' ;
ob_start ();
$dispatcher -> dispatch ( $url );
$out = ob_get_clean ();
ob_start ();
$dispatcher -> cached ( $url );
$cached = ob_get_clean ();
$result = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $out );
$cached = preg_replace ( '/<!--+[^<>]+-->/' , '' , $cached );
2008-05-30 11:40:08 +00:00
$expected = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $cached );
$this -> assertEqual ( $result , $expected );
2008-06-12 18:36:08 +00:00
$filename = $this -> __cachePath ( $dispatcher -> here );
2008-05-30 11:40:08 +00:00
unlink ( $filename );
2008-11-08 02:58:37 +00:00
2008-09-17 21:08:50 +00:00
$url = 'test_cached_pages/view/foo:bar/value:goo' ;
2008-11-08 02:58:37 +00:00
2008-09-17 21:08:50 +00:00
ob_start ();
$dispatcher -> dispatch ( $url );
$out = ob_get_clean ();
2008-11-08 02:58:37 +00:00
2008-09-17 21:08:50 +00:00
ob_start ();
$dispatcher -> cached ( $url );
$cached = ob_get_clean ();
$result = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $out );
$cached = preg_replace ( '/<!--+[^<>]+-->/' , '' , $cached );
$expected = str_replace ( array ( " \t " , " \r \n " , " \n " ), " " , $cached );
2008-11-08 02:58:37 +00:00
2008-09-17 21:08:50 +00:00
$this -> assertEqual ( $result , $expected );
$filename = $this -> __cachePath ( $dispatcher -> here );
$this -> assertTrue ( file_exists ( $filename ));
unlink ( $filename );
2008-05-30 11:40:08 +00:00
}
2008-06-05 15:20:45 +00:00
/**
* testHttpMethodOverrides method
2008-06-10 22:38:05 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testHttpMethodOverrides () {
Router :: reload ();
Router :: mapResources ( 'Posts' );
$_SERVER [ 'REQUEST_METHOD' ] = 'POST' ;
$dispatcher =& new Dispatcher ();
$dispatcher -> base = false ;
$result = $dispatcher -> parseParams ( '/posts' );
$expected = array ( 'pass' => array (), 'named' => array (), 'plugin' => null , 'controller' => 'posts' , 'action' => 'add' , '[method]' => 'POST' , 'form' => array (), 'url' => array ());
$this -> assertEqual ( $result , $expected );
$_SERVER [ 'REQUEST_METHOD' ] = 'GET' ;
$_SERVER [ 'HTTP_X_HTTP_METHOD_OVERRIDE' ] = 'PUT' ;
$result = $dispatcher -> parseParams ( '/posts/5' );
$expected = array ( 'pass' => array ( '5' ), 'named' => array (), 'id' => '5' , 'plugin' => null , 'controller' => 'posts' , 'action' => 'edit' , '[method]' => 'PUT' , 'form' => array (), 'url' => array ());
$this -> assertEqual ( $result , $expected );
unset ( $_SERVER [ 'HTTP_X_HTTP_METHOD_OVERRIDE' ]);
$_SERVER [ 'REQUEST_METHOD' ] = 'GET' ;
$result = $dispatcher -> parseParams ( '/posts/5' );
$expected = array ( 'pass' => array ( '5' ), 'named' => array (), 'id' => '5' , 'plugin' => null , 'controller' => 'posts' , 'action' => 'view' , '[method]' => 'GET' , 'form' => array (), 'url' => array ());
$this -> assertEqual ( $result , $expected );
$_POST [ '_method' ] = 'PUT' ;
$result = $dispatcher -> parseParams ( '/posts/5' );
$expected = array ( 'pass' => array ( '5' ), 'named' => array (), 'id' => '5' , 'plugin' => null , 'controller' => 'posts' , 'action' => 'edit' , '[method]' => 'PUT' , 'form' => array (), 'url' => array ());
$this -> assertEqual ( $result , $expected );
$_POST [ '_method' ] = 'POST' ;
$_POST [ 'data' ] = array ( 'Post' => array ( 'title' => 'New Post' ));
$_POST [ 'extra' ] = 'data' ;
$_SERVER = array ();
$result = $dispatcher -> parseParams ( '/posts' );
$expected = array (
'pass' => array (), 'named' => array (), 'plugin' => null , 'controller' => 'posts' , 'action' => 'add' ,
'[method]' => 'POST' , 'form' => array ( 'extra' => 'data' ), 'data' => array ( 'Post' => array ( 'title' => 'New Post' )),
'url' => array ()
);
$this -> assertEqual ( $result , $expected );
unset ( $_POST [ '_method' ]);
}
2009-05-04 20:36:22 +00:00
/**
* Tests that invalid characters cannot be injected into the application base path .
*
* @ return void
*/
function testBasePathInjection () {
$self = $_SERVER [ 'PHP_SELF' ];
$_SERVER [ 'PHP_SELF' ] = urldecode (
" /index.php/%22%3E%3Ch1%20onclick=%22alert('xss');%22%3Eheya%3C/h1%3E "
);
$dispatcher =& new Dispatcher ();
$result = $dispatcher -> baseUrl ();
$expected = '/index.php/h1 onclick=alert(xss);heya' ;
$this -> assertEqual ( $result , $expected );
}
2008-06-05 15:20:45 +00:00
/**
* testEnvironmentDetection method
2008-06-10 22:38:05 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testEnvironmentDetection () {
$dispatcher =& new Dispatcher ();
$environments = array (
'IIS' => array (
'No rewrite base path' => array (
'App' => array ( 'base' => false , 'baseUrl' => '/index.php?' , 'server' => 'IIS' ),
'SERVER' => array ( 'HTTPS' => 'off' , 'SCRIPT_NAME' => '/index.php' , 'PATH_TRANSLATED' => 'C:\\Inetpub\\wwwroot' , 'QUERY_STRING' => '' , 'REMOTE_ADDR' => '127.0.0.1' , 'REMOTE_HOST' => '127.0.0.1' , 'REQUEST_METHOD' => 'GET' , 'SERVER_NAME' => 'localhost' , 'SERVER_PORT' => '80' , 'SERVER_PROTOCOL' => 'HTTP/1.1' , 'SERVER_SOFTWARE' => 'Microsoft-IIS/5.1' , 'APPL_PHYSICAL_PATH' => 'C:\\Inetpub\\wwwroot\\' , 'REQUEST_URI' => '/index.php' , 'URL' => '/index.php' , 'SCRIPT_FILENAME' => 'C:\\Inetpub\\wwwroot\\index.php' , 'ORIG_PATH_INFO' => '/index.php' , 'PATH_INFO' => '' , 'ORIG_PATH_TRANSLATED' => 'C:\\Inetpub\\wwwroot\\index.php' , 'DOCUMENT_ROOT' => 'C:\\Inetpub\\wwwroot' , 'PHP_SELF' => '/index.php' , 'HTTP_ACCEPT' => '*/*' , 'HTTP_ACCEPT_LANGUAGE' => 'en-us' , 'HTTP_CONNECTION' => 'Keep-Alive' , 'HTTP_HOST' => 'localhost' , 'HTTP_USER_AGENT' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)' , 'HTTP_ACCEPT_ENCODING' => 'gzip, deflate' , 'argv' => array (), 'argc' => 0 ),
'reload' => true ,
'path' => ''
),
'No rewrite with path' => array (
'SERVER' => array ( 'QUERY_STRING' => '/posts/add' , 'REQUEST_URI' => '/index.php?/posts/add' , 'URL' => '/index.php?/posts/add' , 'argv' => array ( '/posts/add' ), 'argc' => 1 ),
'reload' => false ,
'path' => '/posts/add'
),
'No rewrite sub dir 1' => array (
'GET' => array (),
'SERVER' => array ( 'QUERY_STRING' => '' , 'REQUEST_URI' => '/index.php' , 'URL' => '/index.php' , 'SCRIPT_FILENAME' => 'C:\\Inetpub\\wwwroot\\index.php' , 'ORIG_PATH_INFO' => '/index.php' , 'PATH_INFO' => '' , 'ORIG_PATH_TRANSLATED' => 'C:\\Inetpub\\wwwroot\\index.php' , 'DOCUMENT_ROOT' => 'C:\\Inetpub\\wwwroot' , 'PHP_SELF' => '/index.php' , 'argv' => array (), 'argc' => 0 ),
'reload' => false ,
'path' => ''
),
'No rewrite sub dir 1 with path' => array (
'GET' => array ( '/posts/add' => '' ),
'SERVER' => array ( 'QUERY_STRING' => '/posts/add' , 'REQUEST_URI' => '/index.php?/posts/add' , 'URL' => '/index.php?/posts/add' , 'SCRIPT_FILENAME' => 'C:\\Inetpub\\wwwroot\\index.php' , 'argv' => array ( '/posts/add' ), 'argc' => 1 ),
'reload' => false ,
'path' => '/posts/add'
),
'No rewrite sub dir 2' => array (
'App' => array ( 'base' => false , 'baseUrl' => '/site/index.php?' , 'dir' => 'app' , 'webroot' => 'webroot' , 'server' => 'IIS' ),
'GET' => array (),
'POST' => array (),
'SERVER' => array ( 'SCRIPT_NAME' => '/site/index.php' , 'PATH_TRANSLATED' => 'C:\\Inetpub\\wwwroot' , 'QUERY_STRING' => '' , 'REQUEST_URI' => '/site/index.php' , 'URL' => '/site/index.php' , 'SCRIPT_FILENAME' => 'C:\\Inetpub\\wwwroot\\site\\index.php' , 'DOCUMENT_ROOT' => 'C:\\Inetpub\\wwwroot' , 'PHP_SELF' => '/site/index.php' , 'argv' => array (), 'argc' => 0 ),
'reload' => false ,
'path' => ''
),
'No rewrite sub dir 2 with path' => array (
'GET' => array ( '/posts/add' => '' ),
'SERVER' => array ( 'SCRIPT_NAME' => '/site/index.php' , 'PATH_TRANSLATED' => 'C:\\Inetpub\\wwwroot' , 'QUERY_STRING' => '/posts/add' , 'REQUEST_URI' => '/site/index.php?/posts/add' , 'URL' => '/site/index.php?/posts/add' , 'ORIG_PATH_TRANSLATED' => 'C:\\Inetpub\\wwwroot\\site\\index.php' , 'DOCUMENT_ROOT' => 'C:\\Inetpub\\wwwroot' , 'PHP_SELF' => '/site/index.php' , 'argv' => array ( '/posts/add' ), 'argc' => 1 ),
'reload' => false ,
'path' => '/posts/add'
)
),
'Apache' => array (
'No rewrite base path' => array (
'App' => array ( 'base' => false , 'baseUrl' => '/index.php' , 'dir' => 'app' , 'webroot' => 'webroot' ),
'SERVER' => array ( 'SERVER_NAME' => 'localhost' , 'SERVER_ADDR' => '::1' , 'SERVER_PORT' => '80' , 'REMOTE_ADDR' => '::1' , 'DOCUMENT_ROOT' => '/Library/WebServer/Documents/officespace/app/webroot' , 'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/app/webroot/index.php' , 'REQUEST_METHOD' => 'GET' , 'QUERY_STRING' => '' , 'REQUEST_URI' => '/' , 'SCRIPT_NAME' => '/index.php' , 'PHP_SELF' => '/index.php' , 'argv' => array (), 'argc' => 0 ),
'reload' => true ,
'path' => ''
),
'No rewrite with path' => array (
'SERVER' => array ( 'UNIQUE_ID' => 'VardGqn@17IAAAu7LY8AAAAK' , 'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/523.10.5 (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6' , 'HTTP_ACCEPT' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' , 'HTTP_ACCEPT_LANGUAGE' => 'en-us' , 'HTTP_ACCEPT_ENCODING' => 'gzip, deflate' , 'HTTP_CONNECTION' => 'keep-alive' , 'HTTP_HOST' => 'localhost' , 'DOCUMENT_ROOT' => '/Library/WebServer/Documents/officespace/app/webroot' , 'SCRIPT_FILENAME' => '/Library/WebServer/Documents/officespace/app/webroot/index.php' , 'QUERY_STRING' => '' , 'REQUEST_URI' => '/index.php/posts/add' , 'SCRIPT_NAME' => '/index.php' , 'PATH_INFO' => '/posts/add' , 'PHP_SELF' => '/index.php/posts/add' , 'argv' => array (), 'argc' => 0 ),
'reload' => false ,
'path' => '/posts/add'
),
'GET Request at base domain' => array (
'App' => array ( 'base' => false , 'baseUrl' => null , 'dir' => 'app' , 'webroot' => 'webroot' ),
'SERVER' => array ( 'UNIQUE_ID' => '2A-v8sCoAQ8AAAc-2xUAAAAB' , 'HTTP_ACCEPT_LANGUAGE' => 'en-us' , 'HTTP_ACCEPT_ENCODING' => 'gzip, deflate' , 'HTTP_COOKIE' => 'CAKEPHP=jcbv51apn84kd9ucv5aj2ln3t3' , 'HTTP_CONNECTION' => 'keep-alive' , 'HTTP_HOST' => 'cake.1.2' , 'SERVER_NAME' => 'cake.1.2' , 'SERVER_ADDR' => '127.0.0.1' , 'SERVER_PORT' => '80' , 'REMOTE_ADDR' => '127.0.0.1' , 'DOCUMENT_ROOT' => '/Volumes/Home/htdocs/cake/repo/branches/1.2.x.x/app/webroot' , 'SERVER_ADMIN' => 'you@example.com' , 'SCRIPT_FILENAME' => '/Volumes/Home/htdocs/cake/repo/branches/1.2.x.x/app/webroot/index.php' , 'REMOTE_PORT' => '53550' , 'GATEWAY_INTERFACE' => 'CGI/1.1' , 'SERVER_PROTOCOL' => 'HTTP/1.1' , 'REQUEST_METHOD' => 'GET' , 'QUERY_STRING' => 'a=b' , 'REQUEST_URI' => '/?a=b' , 'SCRIPT_NAME' => '/index.php' , 'PHP_SELF' => '/index.php' ),
'GET' => array ( 'a' => 'b' ),
'POST' => array (),
'reload' => true ,
'path' => '' ,
2008-06-03 11:38:20 +00:00
'urlParams' => array ( 'a' => 'b' ),
'environment' => array ( 'CGI_MODE' => false )
),
'New CGI no mod_rewrite' => array (
'App' => array ( 'base' => false , 'baseUrl' => '/limesurvey20/index.php' , 'dir' => 'app' , 'webroot' => 'webroot' ),
'SERVER' => array ( 'DOCUMENT_ROOT' => '/home/.sites/110/site313/web' , 'PATH_INFO' => '/installations' , 'PATH_TRANSLATED' => '/home/.sites/110/site313/web/limesurvey20/index.php' , 'PHPRC' => '/home/.sites/110/site313' , 'QUERY_STRING' => '' , 'REQUEST_METHOD' => 'GET' , 'REQUEST_URI' => '/limesurvey20/index.php/installations' , 'SCRIPT_FILENAME' => '/home/.sites/110/site313/web/limesurvey20/index.php' , 'SCRIPT_NAME' => '/limesurvey20/index.php' , 'SCRIPT_URI' => 'http://www.gisdat-umfragen.at/limesurvey20/index.php/installations' , 'PHP_SELF' => '/limesurvey20/index.php/installations' , 'CGI_MODE' => true ),
'GET' => array (),
'POST' => array (),
'reload' => true ,
'path' => '/installations' ,
'urlParams' => array (),
'environment' => array ( 'CGI_MODE' => true )
2008-05-30 11:40:08 +00:00
)
)
);
$backup = $this -> __backupEnvironment ();
foreach ( $environments as $name => $env ) {
foreach ( $env as $descrip => $settings ) {
if ( $settings [ 'reload' ]) {
$this -> __reloadEnvironment ();
}
$this -> __loadEnvironment ( $settings );
$this -> assertEqual ( $dispatcher -> uri (), $settings [ 'path' ], " %s on environment: { $name } , on setting: { $descrip } " );
2008-06-03 11:38:20 +00:00
if ( isset ( $settings [ 'urlParams' ])) {
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $_GET , $settings [ 'urlParams' ], " %s on environment: { $name } , on setting: { $descrip } " );
}
2008-06-03 11:38:20 +00:00
if ( isset ( $settings [ 'environment' ])) {
foreach ( $settings [ 'environment' ] as $key => $val ) {
$this -> assertEqual ( env ( $key ), $val , " %s on key { $key } on environment: { $name } , on setting: { $descrip } " );
}
}
2008-05-30 11:40:08 +00:00
}
}
$this -> __loadEnvironment ( array_merge ( array ( 'reload' => true ), $backup ));
}
2008-09-17 15:17:23 +00:00
/**
* Tests that the Dispatcher does not return an empty action
*
* @ access private
* @ return void
*/
function testTrailingSlash () {
$_POST = array ();
$_SERVER [ 'PHP_SELF' ] = '/cake/repo/branches/1.2.x.x/index.php' ;
Router :: reload ();
$Dispatcher =& new TestDispatcher ();
Router :: connect ( '/myalias/:action/*' , array ( 'controller' => 'my_controller' , 'action' => null ));
$Dispatcher -> base = false ;
$url = 'myalias/' ; //Fails
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$result = $Dispatcher -> parseParams ( $url );
$this -> assertEqual ( 'index' , $result [ 'action' ]);
$url = 'myalias' ; //Passes
$controller = $Dispatcher -> dispatch ( $url , array ( 'return' => 1 ));
$result = $Dispatcher -> parseParams ( $url );
$this -> assertEqual ( 'index' , $result [ 'action' ]);
}
2008-06-05 15:20:45 +00:00
/**
* backupEnvironment method
2008-06-10 22:38:05 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access private
* @ return void
*/
2008-05-30 11:40:08 +00:00
function __backupEnvironment () {
return array (
'App' => Configure :: read ( 'App' ),
'GET' => $_GET ,
'POST' => $_POST ,
'SERVER' => $_SERVER
);
}
2008-06-05 15:20:45 +00:00
/**
* reloadEnvironment method
2008-06-10 22:38:05 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access private
* @ return void
*/
2008-05-30 11:40:08 +00:00
function __reloadEnvironment () {
foreach ( $_GET as $key => $val ) {
unset ( $_GET [ $key ]);
}
foreach ( $_POST as $key => $val ) {
unset ( $_POST [ $key ]);
}
foreach ( $_SERVER as $key => $val ) {
unset ( $_SERVER [ $key ]);
}
Configure :: write ( 'App' , array ());
}
2008-06-05 15:20:45 +00:00
/**
* loadEnvironment method
2008-06-10 22:38:05 +00:00
*
* @ param mixed $env
2008-06-05 15:20:45 +00:00
* @ access private
* @ return void
*/
2008-05-30 11:40:08 +00:00
function __loadEnvironment ( $env ) {
if ( $env [ 'reload' ]) {
$this -> __reloadEnvironment ();
}
if ( isset ( $env [ 'App' ])) {
Configure :: write ( 'App' , $env [ 'App' ]);
}
if ( isset ( $env [ 'GET' ])) {
foreach ( $env [ 'GET' ] as $key => $val ) {
$_GET [ $key ] = $val ;
}
}
if ( isset ( $env [ 'POST' ])) {
foreach ( $env [ 'POST' ] as $key => $val ) {
$_POST [ $key ] = $val ;
}
}
if ( isset ( $env [ 'SERVER' ])) {
foreach ( $env [ 'SERVER' ] as $key => $val ) {
$_SERVER [ $key ] = $val ;
}
}
}
2008-06-12 18:36:08 +00:00
/**
* cachePath method
*
* @ param mixed $her
* @ access private
* @ return string
*/
function __cachePath ( $here ) {
$path = $here ;
if ( $here == '/' ) {
$path = 'home' ;
}
2008-12-22 19:01:17 +00:00
$path = strtolower ( Inflector :: slug ( $path ));
2008-06-12 18:36:08 +00:00
$filename = CACHE . 'views' . DS . $path . '.php' ;
if ( ! file_exists ( $filename )) {
$filename = CACHE . 'views' . DS . $path . '_index.php' ;
}
return $filename ;
}
2008-05-30 11:40:08 +00:00
}
2008-06-10 22:38:05 +00:00
?>