2010-04-26 04:50:02 +00:00
< ? php
2010-09-12 18:05:57 +00:00
/**
* CakeRequest Test case file .
*
* PHP 5
*
* CakePHP ( tm ) : Rapid Development Framework ( http :// cakephp . org )
2012-03-13 02:46:07 +00:00
* Copyright 2005 - 2012 , Cake Software Foundation , Inc . ( http :// cakefoundation . org )
2010-09-12 18:05:57 +00:00
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice .
*
2012-03-13 02:46:07 +00:00
* @ copyright Copyright 2005 - 2012 , Cake Software Foundation , Inc . ( http :// cakefoundation . org )
2010-09-12 18:05:57 +00:00
* @ link http :// cakephp . org CakePHP ( tm ) Project
2011-07-26 06:16:14 +00:00
* @ package Cake . Test . Case . Network
2010-09-12 18:05:57 +00:00
* @ since CakePHP ( tm ) v 2.0
* @ license MIT License ( http :// www . opensource . org / licenses / mit - license . php )
*/
2010-12-09 05:13:11 +00:00
2011-01-09 03:27:27 +00:00
App :: uses ( 'Dispatcher' , 'Routing' );
2011-04-30 17:05:10 +00:00
App :: uses ( 'Xml' , 'Utility' );
2010-12-09 05:13:11 +00:00
App :: uses ( 'CakeRequest' , 'Network' );
2010-04-26 04:50:02 +00:00
2011-09-13 03:00:35 +00:00
class CakeRequestTest extends CakeTestCase {
2012-03-17 02:19:01 +00:00
2010-04-26 04:50:02 +00:00
/**
* setup callback
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function setUp () {
2010-09-26 01:36:49 +00:00
parent :: setUp ();
2011-02-19 15:00:34 +00:00
$this -> _app = Configure :: read ( 'App' );
2011-04-25 03:31:44 +00:00
$this -> _case = null ;
if ( isset ( $_GET [ 'case' ])) {
$this -> _case = $_GET [ 'case' ];
unset ( $_GET [ 'case' ]);
}
2011-02-19 15:00:34 +00:00
Configure :: write ( 'App.baseUrl' , false );
2010-04-26 04:50:02 +00:00
}
/**
2010-09-26 01:50:28 +00:00
* tearDown -
2010-04-26 04:50:02 +00:00
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function tearDown () {
2010-09-26 01:36:49 +00:00
parent :: tearDown ();
2011-04-25 03:31:44 +00:00
if ( ! empty ( $this -> _case )) {
$_GET [ 'case' ] = $this -> _case ;
}
2011-02-19 15:00:34 +00:00
Configure :: write ( 'App' , $this -> _app );
2010-04-26 04:50:02 +00:00
}
2010-05-04 02:50:38 +00:00
/**
* test that the autoparse = false constructor works .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testNoAutoParseConstruction () {
2010-05-04 02:50:38 +00:00
$_GET = array (
'one' => 'param'
);
$request = new CakeRequest ( null , false );
$this -> assertFalse ( isset ( $request -> query [ 'one' ]));
}
2010-04-26 04:50:02 +00:00
/**
* test construction
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testConstructionGetParsing () {
2010-04-27 02:33:56 +00:00
$_GET = array (
2010-04-26 04:50:02 +00:00
'one' => 'param' ,
'two' => 'banana'
);
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2011-11-16 00:07:56 +00:00
$this -> assertEquals ( $request -> query , $_GET );
2011-10-28 05:01:17 +00:00
2010-04-30 03:20:31 +00:00
$_GET = array (
'one' => 'param' ,
'two' => 'banana' ,
);
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2011-11-16 00:07:56 +00:00
$this -> assertEquals ( $request -> query , $_GET );
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( 'some/path' , $request -> url );
2010-04-26 04:56:54 +00:00
}
2010-05-01 15:04:41 +00:00
/**
* Test that querystring args provided in the url string are parsed .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testQueryStringParsingFromInputUrl () {
2010-05-01 15:04:41 +00:00
$_GET = array ();
$request = new CakeRequest ( 'some/path?one=something&two=else' );
2011-02-21 02:52:20 +00:00
$expected = array ( 'one' => 'something' , 'two' => 'else' );
2011-12-09 02:48:40 +00:00
$this -> assertEquals ( $expected , $request -> query );
2011-02-21 02:52:20 +00:00
$this -> assertEquals ( 'some/path?one=something&two=else' , $request -> url );
2010-05-01 15:04:41 +00:00
}
2011-12-09 02:48:40 +00:00
/**
* Test that named arguments + querystrings are handled correctly .
*
* @ return void
*/
public function testQueryStringAndNamedParams () {
$_SERVER [ 'REQUEST_URI' ] = '/tasks/index/page:1?ts=123456' ;
$request = new CakeRequest ();
$this -> assertEquals ( 'tasks/index/page:1' , $request -> url );
$_SERVER [ 'REQUEST_URI' ] = '/tasks/index/page:1/?ts=123456' ;
$request = new CakeRequest ();
$this -> assertEquals ( 'tasks/index/page:1/' , $request -> url );
}
2010-05-01 15:06:51 +00:00
/**
* test addParams () method
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testAddParams () {
2010-05-01 15:06:51 +00:00
$request = new CakeRequest ( 'some/path' );
$request -> params = array ( 'controller' => 'posts' , 'action' => 'view' );
2010-05-02 05:22:34 +00:00
$result = $request -> addParams ( array ( 'plugin' => null , 'action' => 'index' ));
2011-11-16 00:07:56 +00:00
$this -> assertSame ( $result , $request , 'Method did not return itself. %s' );
2010-05-01 15:06:51 +00:00
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( 'posts' , $request -> controller );
$this -> assertEquals ( 'index' , $request -> action );
$this -> assertEquals ( null , $request -> plugin );
2010-05-01 15:06:51 +00:00
}
2010-05-02 05:22:34 +00:00
/**
* test splicing in paths .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testAddPaths () {
2010-05-02 05:22:34 +00:00
$request = new CakeRequest ( 'some/path' );
$request -> webroot = '/some/path/going/here/' ;
$result = $request -> addPaths ( array (
'random' => '/something' , 'webroot' => '/' , 'here' => '/' , 'base' => '/base_dir'
));
2011-11-16 00:07:56 +00:00
$this -> assertSame ( $result , $request , 'Method did not return itself. %s' );
2010-05-02 05:22:34 +00:00
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/' , $request -> webroot );
$this -> assertEquals ( '/base_dir' , $request -> base );
$this -> assertEquals ( '/' , $request -> here );
2010-05-02 05:22:34 +00:00
$this -> assertFalse ( isset ( $request -> random ));
}
2010-04-26 04:56:54 +00:00
/**
* test parsing POST data into the object .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testPostParsing () {
2010-04-26 04:56:54 +00:00
$_POST = array ( 'data' => array (
'Article' => array ( 'title' )
));
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2012-02-22 21:23:52 +00:00
$this -> assertEquals ( $_POST [ 'data' ], $request -> data );
2010-04-26 04:56:54 +00:00
$_POST = array ( 'one' => 1 , 'two' => 'three' );
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2011-04-29 02:42:50 +00:00
$this -> assertEquals ( $_POST , $request -> data );
2012-02-19 03:18:16 +00:00
$_POST = array (
'data' => array (
'Article' => array ( 'title' => 'Testing' ),
),
'action' => 'update'
);
$request = new CakeRequest ( 'some/path' );
$expected = array (
'Article' => array ( 'title' => 'Testing' ),
'action' => 'update'
);
$this -> assertEquals ( $expected , $request -> data );
2012-02-22 20:53:51 +00:00
$_POST = array ( 'data' => array (
'Article' => array ( 'title' ),
'Tag' => array ( 'Tag' => array ( 1 , 2 ))
));
$request = new CakeRequest ( 'some/path' );
2012-02-22 21:31:28 +00:00
$this -> assertEquals ( $_POST [ 'data' ], $request -> data );
2012-02-22 21:23:52 +00:00
$_POST = array ( 'data' => array (
'Article' => array ( 'title' => 'some title' ),
'Tag' => array ( 'Tag' => array ( 1 , 2 ))
));
$request = new CakeRequest ( 'some/path' );
2012-02-22 21:31:28 +00:00
$this -> assertEquals ( $_POST [ 'data' ], $request -> data );
2012-03-07 01:22:13 +00:00
$_POST = array (
'a' => array ( 1 , 2 ),
'b' => array ( 1 , 2 )
);
$request = new CakeRequest ( 'some/path' );
$this -> assertEquals ( $_POST , $request -> data );
2010-04-26 04:50:02 +00:00
}
2010-04-26 05:08:33 +00:00
2010-04-26 05:20:05 +00:00
/**
* test parsing of FILES array
*
* @ return void
*/
2012-04-18 01:50:47 +00:00
public function testFilesParsing () {
$_FILES = array (
'data' => array (
'name' => array (
'File' => array (
array ( 'data' => 'cake_sqlserver_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' ),
2010-04-26 05:20:05 +00:00
),
2012-04-18 01:50:47 +00:00
'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' ),
2010-04-26 05:20:05 +00:00
),
2012-04-18 01:50:47 +00:00
'error' => array (
'File' => array (
array ( 'data' => 0 ),
array ( 'data' => 0 ),
array ( 'data' => 4 ),
array ( 'data' => 4 )
),
'Post' => array ( 'attachment' => 0 )
2010-04-26 05:20:05 +00:00
),
2012-04-18 01:50:47 +00:00
'size' => array (
'File' => array (
array ( 'data' => 6271 ),
array ( 'data' => 350 ),
array ( 'data' => 0 ),
array ( 'data' => 0 ),
),
'Post' => array ( 'attachment' => 80469 )
2010-04-26 05:20:05 +00:00
),
2012-04-18 01:50:47 +00:00
)
);
2010-04-26 05:20:05 +00:00
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2010-04-26 05:20:05 +00:00
$expected = array (
'File' => array (
array (
'data' => array (
2012-04-18 01:50:47 +00:00
'name' => 'cake_sqlserver_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 ,
)
),
2010-04-26 05:20:05 +00:00
),
2012-04-18 01:50:47 +00:00
'Post' => array (
'attachment' => array (
'name' => 'jquery-1.2.1.js' ,
'type' => 'application/x-javascript' ,
'tmp_name' => '/private/var/tmp/phpEwlrIo' ,
'error' => 0 ,
'size' => 80469 ,
)
)
2010-04-26 05:20:05 +00:00
);
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( $expected , $request -> data );
2010-04-26 05:20:05 +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' ,
)
)
),
'tmp_name' => array (
'Document' => array (
1 => array (
'birth_cert' => '/private/var/tmp/phpbsUWfH' ,
'passport' => '/private/var/tmp/php7f5zLt' ,
2012-04-18 01:50:47 +00:00
'drivers_license' => '/private/var/tmp/phpMXpZgT' ,
2010-04-26 05:20:05 +00:00
),
2 => array (
'birth_cert' => '/private/var/tmp/php5kHZt0' ,
2012-04-18 01:50:47 +00:00
'passport' => '/private/var/tmp/phpnYkOuM' ,
'drivers_license' => '/private/var/tmp/php9Rq0P3' ,
2010-04-26 05:20:05 +00:00
)
)
),
'error' => array (
'Document' => array (
1 => array (
'birth_cert' => 0 ,
'passport' => 0 ,
2012-04-18 01:50:47 +00:00
'drivers_license' => 0 ,
2010-04-26 05:20:05 +00:00
),
2 => array (
'birth_cert' => 0 ,
2012-04-18 01:50:47 +00:00
'passport' => 0 ,
'drivers_license' => 0 ,
2010-04-26 05:20:05 +00:00
)
)
),
'size' => array (
'Document' => array (
1 => array (
'birth_cert' => 123 ,
'passport' => 458 ,
2012-04-18 01:50:47 +00:00
'drivers_license' => 875 ,
2010-04-26 05:20:05 +00:00
),
2 => array (
'birth_cert' => 876 ,
2012-04-18 01:50:47 +00:00
'passport' => 976 ,
'drivers_license' => 9783 ,
2010-04-26 05:20:05 +00:00
)
)
)
)
);
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2010-04-26 05:20:05 +00:00
$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' ,
),
),
)
);
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( $expected , $request -> data );
2010-04-26 05:20:05 +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 )
)
);
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2010-04-26 05:20:05 +00:00
$expected = array (
'birth_cert' => array (
'name' => 'born on.txt' ,
'type' => 'application/octet-stream' ,
'tmp_name' => '/private/var/tmp/phpbsUWfH' ,
'error' => 0 ,
'size' => 123
)
);
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( $expected , $request -> data );
2010-04-30 03:08:01 +00:00
2010-04-26 05:33:40 +00:00
$_FILES = array (
'something' => array (
'name' => 'something.txt' ,
'type' => 'text/plain' ,
'tmp_name' => '/some/file' ,
'error' => 0 ,
'size' => 123
)
);
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2011-11-16 00:07:56 +00:00
$this -> assertEquals ( $request -> params [ 'form' ], $_FILES );
2010-04-26 05:20:05 +00:00
}
2010-04-26 05:08:33 +00:00
/**
* test method overrides coming in from POST data .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testMethodOverrides () {
2010-04-26 05:08:33 +00:00
$_POST = array ( '_method' => 'POST' );
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2011-11-16 00:07:56 +00:00
$this -> assertEquals ( env ( 'REQUEST_METHOD' ), 'POST' );
2010-04-26 05:08:33 +00:00
$_POST = array ( '_method' => 'DELETE' );
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2011-11-16 00:07:56 +00:00
$this -> assertEquals ( env ( 'REQUEST_METHOD' ), 'DELETE' );
2010-04-26 05:20:05 +00:00
$_SERVER [ 'HTTP_X_HTTP_METHOD_OVERRIDE' ] = 'PUT' ;
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2011-11-16 00:07:56 +00:00
$this -> assertEquals ( env ( 'REQUEST_METHOD' ), 'PUT' );
2010-04-26 05:08:33 +00:00
}
/**
2010-05-01 15:08:58 +00:00
* test the clientIp method .
2010-04-26 05:08:33 +00:00
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testclientIp () {
2010-04-26 05:08:33 +00:00
$_SERVER [ 'HTTP_X_FORWARDED_FOR' ] = '192.168.1.5, 10.0.1.1, proxy.com' ;
$_SERVER [ 'HTTP_CLIENT_IP' ] = '192.168.1.2' ;
$_SERVER [ 'REMOTE_ADDR' ] = '192.168.1.3' ;
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '192.168.1.5' , $request -> clientIp ( false ));
$this -> assertEquals ( '192.168.1.2' , $request -> clientIp ());
2010-04-26 05:08:33 +00:00
unset ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]);
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '192.168.1.2' , $request -> clientIp ());
2010-04-26 05:08:33 +00:00
unset ( $_SERVER [ 'HTTP_CLIENT_IP' ]);
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '192.168.1.3' , $request -> clientIp ());
2010-04-26 05:08:33 +00:00
$_SERVER [ 'HTTP_CLIENTADDRESS' ] = '10.0.1.2, 10.0.1.1' ;
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '10.0.1.2' , $request -> clientIp ());
2010-04-26 05:08:33 +00:00
}
2010-04-27 02:33:56 +00:00
/**
* test the referer function .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testReferer () {
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2010-05-15 04:53:15 +00:00
$request -> webroot = '/' ;
2010-04-27 02:33:56 +00:00
$_SERVER [ 'HTTP_REFERER' ] = 'http://cakephp.org' ;
$result = $request -> referer ();
2011-11-16 00:07:56 +00:00
$this -> assertSame ( $result , 'http://cakephp.org' );
2010-04-27 02:33:56 +00:00
$_SERVER [ 'HTTP_REFERER' ] = '' ;
$result = $request -> referer ();
2011-11-16 00:07:56 +00:00
$this -> assertSame ( $result , '/' );
2010-04-27 02:33:56 +00:00
2010-05-15 04:53:15 +00:00
$_SERVER [ 'HTTP_REFERER' ] = FULL_BASE_URL . '/some/path' ;
2010-04-27 02:33:56 +00:00
$result = $request -> referer ( true );
2011-11-16 00:07:56 +00:00
$this -> assertSame ( $result , '/some/path' );
2010-04-27 02:33:56 +00:00
2010-05-15 04:53:15 +00:00
$_SERVER [ 'HTTP_REFERER' ] = FULL_BASE_URL . '/some/path' ;
$result = $request -> referer ( false );
2011-11-16 00:07:56 +00:00
$this -> assertSame ( $result , FULL_BASE_URL . '/some/path' );
2010-04-27 02:33:56 +00:00
2010-05-15 04:53:15 +00:00
$_SERVER [ 'HTTP_REFERER' ] = FULL_BASE_URL . '/some/path' ;
2010-04-27 02:33:56 +00:00
$result = $request -> referer ( true );
2011-11-16 00:07:56 +00:00
$this -> assertSame ( $result , '/some/path' );
2010-04-27 02:33:56 +00:00
2010-05-15 04:53:15 +00:00
$_SERVER [ 'HTTP_REFERER' ] = FULL_BASE_URL . '/recipes/add' ;
2010-04-27 02:33:56 +00:00
$result = $request -> referer ( true );
2011-11-16 00:07:56 +00:00
$this -> assertSame ( $result , '/recipes/add' );
2010-05-08 04:36:03 +00:00
$_SERVER [ 'HTTP_X_FORWARDED_HOST' ] = 'cakephp.org' ;
$result = $request -> referer ();
2011-11-16 00:07:56 +00:00
$this -> assertSame ( $result , 'cakephp.org' );
2010-04-27 02:33:56 +00:00
}
2010-04-27 03:23:35 +00:00
/**
* test the simple uses of is ()
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testIsHttpMethods () {
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2010-04-27 03:23:35 +00:00
$this -> assertFalse ( $request -> is ( 'undefined-behavior' ));
$_SERVER [ 'REQUEST_METHOD' ] = 'GET' ;
$this -> assertTrue ( $request -> is ( 'get' ));
$_SERVER [ 'REQUEST_METHOD' ] = 'POST' ;
$this -> assertTrue ( $request -> is ( 'POST' ));
$_SERVER [ 'REQUEST_METHOD' ] = 'PUT' ;
$this -> assertTrue ( $request -> is ( 'put' ));
$this -> assertFalse ( $request -> is ( 'get' ));
$_SERVER [ 'REQUEST_METHOD' ] = 'DELETE' ;
$this -> assertTrue ( $request -> is ( 'delete' ));
2010-04-27 03:34:30 +00:00
$this -> assertTrue ( $request -> isDelete ());
2010-04-27 03:23:35 +00:00
$_SERVER [ 'REQUEST_METHOD' ] = 'delete' ;
$this -> assertFalse ( $request -> is ( 'delete' ));
}
2010-08-22 04:15:13 +00:00
/**
* test the method () method .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testMethod () {
2010-08-22 04:15:13 +00:00
$_SERVER [ 'REQUEST_METHOD' ] = 'delete' ;
$request = new CakeRequest ( 'some/path' );
$this -> assertEquals ( 'delete' , $request -> method ());
}
2010-08-22 04:44:05 +00:00
/**
* test host retrieval .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testHost () {
2010-08-22 04:44:05 +00:00
$_SERVER [ 'HTTP_HOST' ] = 'localhost' ;
$request = new CakeRequest ( 'some/path' );
2011-10-28 05:01:17 +00:00
2010-08-22 04:44:05 +00:00
$this -> assertEquals ( 'localhost' , $request -> host ());
}
/**
* test domain retrieval .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testDomain () {
2010-08-22 04:44:05 +00:00
$_SERVER [ 'HTTP_HOST' ] = 'something.example.com' ;
$request = new CakeRequest ( 'some/path' );
$this -> assertEquals ( 'example.com' , $request -> domain ());
$_SERVER [ 'HTTP_HOST' ] = 'something.example.co.uk' ;
$this -> assertEquals ( 'example.co.uk' , $request -> domain ( 2 ));
}
/**
* test getting subdomains for a host .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testSubdomain () {
2010-08-22 04:44:05 +00:00
$_SERVER [ 'HTTP_HOST' ] = 'something.example.com' ;
$request = new CakeRequest ( 'some/path' );
$this -> assertEquals ( array ( 'something' ), $request -> subdomains ());
$_SERVER [ 'HTTP_HOST' ] = 'www.something.example.com' ;
$this -> assertEquals ( array ( 'www' , 'something' ), $request -> subdomains ());
$_SERVER [ 'HTTP_HOST' ] = 'www.something.example.co.uk' ;
$this -> assertEquals ( array ( 'www' , 'something' ), $request -> subdomains ( 2 ));
2010-08-22 04:54:55 +00:00
$_SERVER [ 'HTTP_HOST' ] = 'example.co.uk' ;
$this -> assertEquals ( array (), $request -> subdomains ( 2 ));
2010-08-22 04:44:05 +00:00
}
2010-04-27 03:23:35 +00:00
/**
* test ajax , flash and friends
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testisAjaxFlashAndFriends () {
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2010-04-27 03:23:35 +00:00
$_SERVER [ 'HTTP_USER_AGENT' ] = 'Shockwave Flash' ;
$this -> assertTrue ( $request -> is ( 'flash' ));
$_SERVER [ 'HTTP_USER_AGENT' ] = 'Adobe Flash' ;
$this -> assertTrue ( $request -> is ( 'flash' ));
$_SERVER [ 'HTTP_X_REQUESTED_WITH' ] = 'XMLHttpRequest' ;
$this -> assertTrue ( $request -> is ( 'ajax' ));
$_SERVER [ 'HTTP_X_REQUESTED_WITH' ] = 'XMLHTTPREQUEST' ;
$this -> assertFalse ( $request -> is ( 'ajax' ));
2010-04-27 03:34:30 +00:00
$this -> assertFalse ( $request -> isAjax ());
2010-04-27 03:23:35 +00:00
$_SERVER [ 'HTTP_USER_AGENT' ] = 'Android 2.0' ;
$this -> assertTrue ( $request -> is ( 'mobile' ));
2010-04-27 03:34:30 +00:00
$this -> assertTrue ( $request -> isMobile ());
2011-10-28 05:01:17 +00:00
2010-10-28 02:32:15 +00:00
$_SERVER [ 'HTTP_USER_AGENT' ] = 'Mozilla/5.0 (Windows NT 5.1; rv:2.0b6pre) Gecko/20100902 Firefox/4.0b6pre Fennec/2.0b1pre' ;
$this -> assertTrue ( $request -> is ( 'mobile' ));
$this -> assertTrue ( $request -> isMobile ());
2012-01-01 17:57:35 +00:00
$_SERVER [ 'HTTP_USER_AGENT' ] = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7)' ;
$this -> assertTrue ( $request -> is ( 'mobile' ));
$this -> assertTrue ( $request -> isMobile ());
2010-10-28 02:32:15 +00:00
}
2010-05-04 03:41:13 +00:00
2010-10-28 02:32:15 +00:00
/**
* test __call expcetions
*
2010-12-12 00:01:07 +00:00
* @ expectedException CakeException
2010-10-28 02:32:15 +00:00
* @ return void
*/
2012-03-17 02:19:01 +00:00
public function testMagicCallExceptionOnUnknownMethod () {
2010-10-28 02:32:15 +00:00
$request = new CakeRequest ( 'some/path' );
2010-05-04 03:41:13 +00:00
$request -> IamABanana ();
2010-04-27 03:23:35 +00:00
}
/**
* test is ( ssl )
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testIsSsl () {
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2010-04-27 03:23:35 +00:00
$_SERVER [ 'HTTPS' ] = 1 ;
$this -> assertTrue ( $request -> is ( 'ssl' ));
2010-04-30 03:08:01 +00:00
2010-04-27 03:23:35 +00:00
$_SERVER [ 'HTTPS' ] = 'on' ;
$this -> assertTrue ( $request -> is ( 'ssl' ));
$_SERVER [ 'HTTPS' ] = '1' ;
$this -> assertTrue ( $request -> is ( 'ssl' ));
$_SERVER [ 'HTTPS' ] = 'I am not empty' ;
$this -> assertTrue ( $request -> is ( 'ssl' ));
$_SERVER [ 'HTTPS' ] = 1 ;
$this -> assertTrue ( $request -> is ( 'ssl' ));
$_SERVER [ 'HTTPS' ] = 'off' ;
$this -> assertFalse ( $request -> is ( 'ssl' ));
$_SERVER [ 'HTTPS' ] = false ;
$this -> assertFalse ( $request -> is ( 'ssl' ));
$_SERVER [ 'HTTPS' ] = '' ;
$this -> assertFalse ( $request -> is ( 'ssl' ));
}
2010-04-27 03:37:36 +00:00
/**
* test getting request params with object properties .
*
* @ return void
*/
2012-03-17 02:19:01 +00:00
public function testMagicget () {
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2010-04-27 03:37:36 +00:00
$request -> params = array ( 'controller' => 'posts' , 'action' => 'view' , 'plugin' => 'blogs' );
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( 'posts' , $request -> controller );
$this -> assertEquals ( 'view' , $request -> action );
$this -> assertEquals ( 'blogs' , $request -> plugin );
2011-11-16 00:07:56 +00:00
$this -> assertSame ( $request -> banana , null );
2010-04-27 03:37:36 +00:00
}
2010-04-27 03:46:47 +00:00
2011-11-17 01:20:50 +00:00
/**
* Test isset () / empty () with overloaded properties .
*
* @ return void
*/
2012-03-17 02:19:01 +00:00
public function testMagicisset () {
2011-11-17 01:20:50 +00:00
$request = new CakeRequest ( 'some/path' );
$request -> params = array (
'controller' => 'posts' ,
'action' => 'view' ,
'plugin' => 'blogs' ,
'named' => array ()
);
$this -> assertTrue ( isset ( $request -> controller ));
$this -> assertFalse ( isset ( $request -> notthere ));
$this -> assertFalse ( empty ( $request -> controller ));
$this -> assertTrue ( empty ( $request -> named ));
2010-04-27 03:37:36 +00:00
}
2010-04-27 03:46:47 +00:00
/**
* test the array access implementation
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testArrayAccess () {
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2010-04-27 03:46:47 +00:00
$request -> params = array ( 'controller' => 'posts' , 'action' => 'view' , 'plugin' => 'blogs' );
2010-04-30 03:08:01 +00:00
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( 'posts' , $request [ 'controller' ]);
2010-04-30 03:08:01 +00:00
2010-04-27 03:46:47 +00:00
$request [ 'slug' ] = 'speedy-slug' ;
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( 'speedy-slug' , $request -> slug );
$this -> assertEquals ( 'speedy-slug' , $request [ 'slug' ]);
2010-04-27 03:46:47 +00:00
$this -> assertTrue ( isset ( $request [ 'action' ]));
$this -> assertFalse ( isset ( $request [ 'wrong-param' ]));
$this -> assertTrue ( isset ( $request [ 'plugin' ]));
unset ( $request [ 'plugin' ]);
$this -> assertFalse ( isset ( $request [ 'plugin' ]));
$this -> assertNull ( $request [ 'plugin' ]);
$this -> assertNull ( $request -> plugin );
2010-05-01 15:04:41 +00:00
$request = new CakeRequest ( 'some/path?one=something&two=else' );
$this -> assertTrue ( isset ( $request [ 'url' ][ 'one' ]));
2010-05-02 03:46:10 +00:00
$request -> data = array ( 'Post' => array ( 'title' => 'something' ));
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( 'something' , $request [ 'data' ][ 'Post' ][ 'title' ]);
2010-04-27 03:46:47 +00:00
}
2010-04-30 03:08:01 +00:00
/**
* test adding detectors and having them work .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testAddDetector () {
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ( 'some/path' );
2010-04-30 03:08:01 +00:00
$request -> addDetector ( 'compare' , array ( 'env' => 'TEST_VAR' , 'value' => 'something' ));
$_SERVER [ 'TEST_VAR' ] = 'something' ;
2010-08-30 03:28:54 +00:00
$this -> assertTrue ( $request -> is ( 'compare' ), 'Value match failed.' );
2010-04-30 03:08:01 +00:00
$_SERVER [ 'TEST_VAR' ] = 'wrong' ;
2010-08-30 03:28:54 +00:00
$this -> assertFalse ( $request -> is ( 'compare' ), 'Value mis-match failed.' );
2012-03-17 02:19:01 +00:00
2012-02-28 16:05:24 +00:00
$request -> addDetector ( 'compareCamelCase' , array ( 'env' => 'TEST_VAR' , 'value' => 'foo' ));
$_SERVER [ 'TEST_VAR' ] = 'foo' ;
$this -> assertTrue ( $request -> is ( 'compareCamelCase' ), 'Value match failed.' );
2010-04-30 03:08:01 +00:00
$request -> addDetector ( 'banana' , array ( 'env' => 'TEST_VAR' , 'pattern' => '/^ban.*$/' ));
$_SERVER [ 'TEST_VAR' ] = 'banana' ;
$this -> assertTrue ( $request -> isBanana ());
$_SERVER [ 'TEST_VAR' ] = 'wrong value' ;
$this -> assertFalse ( $request -> isBanana ());
$request -> addDetector ( 'mobile' , array ( 'options' => array ( 'Imagination' )));
$_SERVER [ 'HTTP_USER_AGENT' ] = 'Imagination land' ;
$this -> assertTrue ( $request -> isMobile ());
$_SERVER [ 'HTTP_USER_AGENT' ] = 'iPhone 3.0' ;
$this -> assertTrue ( $request -> isMobile ());
2010-04-30 03:11:15 +00:00
2012-02-23 08:03:31 +00:00
$request -> addDetector ( 'callme' , array ( 'env' => 'TEST_VAR' , 'callback' => array ( $this , 'detectCallback' )));
2010-04-30 03:11:15 +00:00
2011-10-21 01:11:42 +00:00
$request -> addDetector ( 'index' , array ( 'param' => 'action' , 'value' => 'index' ));
$request -> params [ 'action' ] = 'index' ;
$this -> assertTrue ( $request -> isIndex ());
$request -> params [ 'action' ] = 'add' ;
$this -> assertFalse ( $request -> isIndex ());
2010-04-30 03:11:15 +00:00
$request -> return = true ;
$this -> assertTrue ( $request -> isCallMe ());
$request -> return = false ;
$this -> assertFalse ( $request -> isCallMe ());
}
/**
* helper function for testing callbacks .
*
* @ return void
*/
2012-02-23 08:03:31 +00:00
public function detectCallback ( $request ) {
2010-04-30 03:11:15 +00:00
return $request -> return == true ;
2010-04-30 03:08:01 +00:00
}
2010-04-30 04:13:24 +00:00
2010-06-29 04:24:29 +00:00
/**
* test getting headers
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testHeader () {
2010-09-20 01:40:35 +00:00
$_SERVER [ 'HTTP_HOST' ] = 'localhost' ;
$_SERVER [ 'HTTP_USER_AGENT' ] = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-ca) AppleWebKit/534.8+ (KHTML, like Gecko) Version/5.0 Safari/533.16' ;
2010-06-29 04:24:29 +00:00
$request = new CakeRequest ( '/' , false );
$this -> assertEquals ( $_SERVER [ 'HTTP_HOST' ], $request -> header ( 'host' ));
$this -> assertEquals ( $_SERVER [ 'HTTP_USER_AGENT' ], $request -> header ( 'User-Agent' ));
}
2010-07-01 03:25:45 +00:00
/**
* test accepts () with and without parameters
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testAccepts () {
2010-07-01 03:25:45 +00:00
$_SERVER [ 'HTTP_ACCEPT' ] = 'text/xml,application/xml;q=0.9,application/xhtml+xml,text/html,text/plain,image/png' ;
$request = new CakeRequest ( '/' , false );
2011-10-28 05:01:17 +00:00
2010-07-01 03:25:45 +00:00
$result = $request -> accepts ();
$expected = array (
2011-08-31 23:15:27 +00:00
'text/xml' , 'application/xhtml+xml' , 'text/html' , 'text/plain' , 'image/png' , 'application/xml'
2010-07-01 03:25:45 +00:00
);
$this -> assertEquals ( $expected , $result , 'Content types differ.' );
2011-08-26 02:28:02 +00:00
2010-07-01 03:25:45 +00:00
$result = $request -> accepts ( 'text/html' );
$this -> assertTrue ( $result );
2011-08-26 02:28:02 +00:00
2010-07-01 03:25:45 +00:00
$result = $request -> accepts ( 'image/gif' );
$this -> assertFalse ( $result );
}
2011-08-26 02:28:02 +00:00
/**
* Test that accept header types are trimmed for comparisons .
*
* @ return void
*/
public function testAcceptWithWhitespace () {
$_SERVER [ 'HTTP_ACCEPT' ] = 'text/xml , text/html , text/plain,image/png' ;
$request = new CakeRequest ( '/' , false );
$result = $request -> accepts ();
$expected = array (
'text/xml' , 'text/html' , 'text/plain' , 'image/png'
);
$this -> assertEquals ( $expected , $result , 'Content types differ.' );
$this -> assertTrue ( $request -> accepts ( 'text/html' ));
}
2011-08-27 15:39:22 +00:00
/**
* Content types from accepts () should respect the client ' s q preference values .
*
* @ return void
*/
public function testAcceptWithQvalueSorting () {
$_SERVER [ 'HTTP_ACCEPT' ] = 'text/html;q=0.8,application/json;q=0.7,application/xml;q=1.0' ;
$request = new CakeRequest ( '/' , false );
$result = $request -> accepts ();
$expected = array ( 'application/xml' , 'text/html' , 'application/json' );
$this -> assertEquals ( $expected , $result );
}
2011-08-31 23:15:27 +00:00
/**
* Test the raw parsing of accept headers into the q value formatting .
*
* @ return void
*/
public function testParseAcceptWithQValue () {
$_SERVER [ 'HTTP_ACCEPT' ] = 'text/html;q=0.8,application/json;q=0.7,application/xml;q=1.0,image/png' ;
$request = new CakeRequest ( '/' , false );
$result = $request -> parseAccept ();
$expected = array (
'1.0' => array ( 'application/xml' , 'image/png' ),
'0.8' => array ( 'text/html' ),
'0.7' => array ( 'application/json' ),
);
$this -> assertEquals ( $expected , $result );
}
2010-04-30 04:13:24 +00:00
/**
* testBaseUrlAndWebrootWithModRewrite method
*
* @ return void
*/
public function testBaseUrlAndWebrootWithModRewrite () {
2010-05-01 04:18:17 +00:00
Configure :: write ( 'App.baseUrl' , false );
2010-04-30 04:13:24 +00:00
$_SERVER [ 'DOCUMENT_ROOT' ] = '/cake/repo/branches' ;
2012-01-05 02:10:29 +00:00
$_SERVER [ 'PHP_SELF' ] = '/1.2.x.x/app/webroot/index.php' ;
2011-02-20 03:20:55 +00:00
$_SERVER [ 'PATH_INFO' ] = '/posts/view/1' ;
2010-04-30 04:13:24 +00:00
2010-05-01 03:37:16 +00:00
$request = new CakeRequest ();
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/1.2.x.x' , $request -> base );
$this -> assertEquals ( '/1.2.x.x/' , $request -> webroot );
$this -> assertEquals ( 'posts/view/1' , $request -> url );
2010-05-01 04:18:17 +00:00
2010-04-30 04:13:24 +00:00
$_SERVER [ 'DOCUMENT_ROOT' ] = '/cake/repo/branches/1.2.x.x/app/webroot' ;
2012-01-05 02:10:29 +00:00
$_SERVER [ 'PHP_SELF' ] = '/index.php' ;
2011-02-20 03:20:55 +00:00
$_SERVER [ 'PATH_INFO' ] = '/posts/add' ;
2010-05-01 03:37:16 +00:00
$request = new CakeRequest ();
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '' , $request -> base );
$this -> assertEquals ( '/' , $request -> webroot );
$this -> assertEquals ( 'posts/add' , $request -> url );
2010-04-30 04:13:24 +00:00
$_SERVER [ 'DOCUMENT_ROOT' ] = '/cake/repo/branches/1.2.x.x/test/' ;
2012-01-05 02:10:29 +00:00
$_SERVER [ 'PHP_SELF' ] = '/webroot/index.php' ;
2010-05-01 03:37:16 +00:00
$request = new CakeRequest ();
2011-11-16 00:07:56 +00:00
$this -> assertEquals ( '' , $request -> base );
$this -> assertEquals ( '/' , $request -> webroot );
2010-05-01 03:37:16 +00:00
2010-04-30 04:13:24 +00:00
$_SERVER [ 'DOCUMENT_ROOT' ] = '/some/apps/where' ;
2012-01-05 02:10:29 +00:00
$_SERVER [ 'PHP_SELF' ] = '/app/webroot/index.php' ;
2010-05-01 03:37:16 +00:00
$request = new CakeRequest ();
2010-04-30 04:13:24 +00:00
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '' , $request -> base );
$this -> assertEquals ( '/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
Configure :: write ( 'App.dir' , 'auth' );
$_SERVER [ 'DOCUMENT_ROOT' ] = '/cake/repo/branches' ;
2012-01-05 02:10:29 +00:00
$_SERVER [ 'PHP_SELF' ] = '/demos/auth/webroot/index.php' ;
2010-04-30 04:13:24 +00:00
2010-05-01 03:37:16 +00:00
$request = new CakeRequest ();
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/demos/auth' , $request -> base );
$this -> assertEquals ( '/demos/auth/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
Configure :: write ( 'App.dir' , 'code' );
$_SERVER [ 'DOCUMENT_ROOT' ] = '/Library/WebServer/Documents' ;
2012-01-05 02:10:29 +00:00
$_SERVER [ 'PHP_SELF' ] = '/clients/PewterReport/code/webroot/index.php' ;
2010-05-01 03:37:16 +00:00
$request = new CakeRequest ();
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/clients/PewterReport/code' , $request -> base );
$this -> assertEquals ( '/clients/PewterReport/code/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
}
/**
* testBaseUrlwithModRewriteAlias method
*
* @ return void
*/
public function testBaseUrlwithModRewriteAlias () {
$_SERVER [ 'DOCUMENT_ROOT' ] = '/home/aplusnur/public_html' ;
2012-01-05 02:10:29 +00:00
$_SERVER [ 'PHP_SELF' ] = '/control/index.php' ;
2010-04-30 04:13:24 +00:00
Configure :: write ( 'App.base' , '/control' );
$request = new CakeRequest ();
2010-05-01 03:37:16 +00:00
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/control' , $request -> base );
$this -> assertEquals ( '/control/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
Configure :: write ( 'App.base' , false );
Configure :: write ( 'App.dir' , 'affiliate' );
Configure :: write ( 'App.webroot' , 'newaffiliate' );
$_SERVER [ 'DOCUMENT_ROOT' ] = '/var/www/abtravaff/html' ;
2012-01-05 02:10:29 +00:00
$_SERVER [ 'PHP_SELF' ] = '/newaffiliate/index.php' ;
2010-04-30 04:13:24 +00:00
$request = new CakeRequest ();
2010-05-01 03:37:16 +00:00
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/newaffiliate' , $request -> base );
$this -> assertEquals ( '/newaffiliate/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
}
2010-05-01 04:18:17 +00:00
/**
* test base , webroot , and url parsing when there is no url rewriting
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testBaseUrlWithNoModRewrite () {
2010-05-01 04:18:17 +00:00
$_SERVER [ 'DOCUMENT_ROOT' ] = '/Users/markstory/Sites' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/Users/markstory/Sites/cake/index.php' ;
$_SERVER [ 'PHP_SELF' ] = '/cake/index.php/posts/index' ;
$_SERVER [ 'REQUEST_URI' ] = '/cake/index.php/posts/index' ;
Configure :: write ( 'App' , array (
'dir' => APP_DIR ,
'webroot' => WEBROOT_DIR ,
'base' => false ,
'baseUrl' => '/cake/index.php'
));
$request = new CakeRequest ();
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/cake/index.php' , $request -> base );
$this -> assertEquals ( '/cake/app/webroot/' , $request -> webroot );
$this -> assertEquals ( 'posts/index' , $request -> url );
2010-05-01 04:18:17 +00:00
}
2010-04-30 04:13:24 +00:00
/**
* testBaseUrlAndWebrootWithBaseUrl method
*
* @ return void
*/
public function testBaseUrlAndWebrootWithBaseUrl () {
Configure :: write ( 'App.dir' , 'app' );
Configure :: write ( 'App.baseUrl' , '/app/webroot/index.php' );
$request = new CakeRequest ();
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/app/webroot/index.php' , $request -> base );
$this -> assertEquals ( '/app/webroot/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
Configure :: write ( 'App.baseUrl' , '/app/webroot/test.php' );
$request = new CakeRequest ();
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/app/webroot/test.php' , $request -> base );
$this -> assertEquals ( '/app/webroot/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
Configure :: write ( 'App.baseUrl' , '/app/index.php' );
$request = new CakeRequest ();
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/app/index.php' , $request -> base );
$this -> assertEquals ( '/app/webroot/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
Configure :: write ( 'App.baseUrl' , '/CakeBB/app/webroot/index.php' );
$request = new CakeRequest ();
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/CakeBB/app/webroot/index.php' , $request -> base );
$this -> assertEquals ( '/CakeBB/app/webroot/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
Configure :: write ( 'App.baseUrl' , '/CakeBB/app/index.php' );
$request = new CakeRequest ();
2010-05-01 03:37:16 +00:00
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/CakeBB/app/index.php' , $request -> base );
$this -> assertEquals ( '/CakeBB/app/webroot/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
Configure :: write ( 'App.baseUrl' , '/CakeBB/index.php' );
$request = new CakeRequest ();
2010-05-01 03:37:16 +00:00
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/CakeBB/index.php' , $request -> base );
$this -> assertEquals ( '/CakeBB/app/webroot/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
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' ;
$request = new CakeRequest ();
2010-05-01 03:37:16 +00:00
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( '/dbhauser/index.php' , $request -> base );
$this -> assertEquals ( '/dbhauser/app/webroot/' , $request -> webroot );
2010-04-30 04:13:24 +00:00
}
2011-02-05 17:20:09 +00:00
/**
* test baseUrl with no rewrite and using the top level index . php .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testBaseUrlNoRewriteTopLevelIndex () {
2011-02-05 17:20:09 +00:00
Configure :: write ( 'App.baseUrl' , '/index.php' );
$_SERVER [ 'DOCUMENT_ROOT' ] = '/Users/markstory/Sites/cake_dev' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/Users/markstory/Sites/cake_dev/index.php' ;
$request = new CakeRequest ();
2011-11-16 00:07:56 +00:00
$this -> assertEquals ( '/index.php' , $request -> base );
$this -> assertEquals ( '/app/webroot/' , $request -> webroot );
2011-02-05 17:20:09 +00:00
}
2011-12-03 04:39:33 +00:00
/**
* Check that a sub - directory containing app | webroot doesn ' t get mishandled when re - writing is off .
*
* @ return void
*/
public function testBaseUrlWithAppAndWebrootInDirname () {
Configure :: write ( 'App.baseUrl' , '/approval/index.php' );
$_SERVER [ 'DOCUMENT_ROOT' ] = '/Users/markstory/Sites/' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/Users/markstory/Sites/approval/index.php' ;
$request = new CakeRequest ();
$this -> assertEquals ( '/approval/index.php' , $request -> base );
$this -> assertEquals ( '/approval/app/webroot/' , $request -> webroot );
Configure :: write ( 'App.baseUrl' , '/webrootable/index.php' );
$_SERVER [ 'DOCUMENT_ROOT' ] = '/Users/markstory/Sites/' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/Users/markstory/Sites/webrootable/index.php' ;
$request = new CakeRequest ();
$this -> assertEquals ( '/webrootable/index.php' , $request -> base );
$this -> assertEquals ( '/webrootable/app/webroot/' , $request -> webroot );
}
2011-02-05 17:20:09 +00:00
/**
* test baseUrl with no rewrite , and using the app / webroot / index . php file as is normal with virtual hosts .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testBaseUrlNoRewriteWebrootIndex () {
2011-02-05 17:20:09 +00:00
Configure :: write ( 'App.baseUrl' , '/index.php' );
$_SERVER [ 'DOCUMENT_ROOT' ] = '/Users/markstory/Sites/cake_dev/app/webroot' ;
$_SERVER [ 'SCRIPT_FILENAME' ] = '/Users/markstory/Sites/cake_dev/app/webroot/index.php' ;
$request = new CakeRequest ();
2011-11-16 00:07:56 +00:00
$this -> assertEquals ( '/index.php' , $request -> base );
$this -> assertEquals ( '/' , $request -> webroot );
2011-02-05 17:20:09 +00:00
}
2011-11-27 02:24:53 +00:00
/**
* Test that a request with a . in the main GET parameter is filtered out .
* PHP changes GET parameter keys containing dots to _ .
*
* @ return void
*/
public function testGetParamsWithDot () {
2012-02-23 07:47:25 +00:00
$_GET = array ();
2011-11-27 02:24:53 +00:00
$_GET [ '/posts/index/add_add' ] = '' ;
2012-01-05 02:10:29 +00:00
$_SERVER [ 'PHP_SELF' ] = '/cake_dev/app/webroot/index.php' ;
2011-11-27 02:24:53 +00:00
$_SERVER [ 'REQUEST_URI' ] = '/cake_dev/posts/index/add.add' ;
$request = new CakeRequest ();
$this -> assertEquals ( array (), $request -> query );
}
2012-02-18 15:53:47 +00:00
/**
* Test that a request with urlencoded bits in the main GET parameter are filtered out .
*
* @ return void
*/
public function testGetParamWithUrlencodedElement () {
2012-02-23 07:47:25 +00:00
$_GET = array ();
2012-02-18 15:53:47 +00:00
$_GET [ '/posts/add/∂∂' ] = '' ;
$_SERVER [ 'PHP_SELF' ] = '/cake_dev/app/webroot/index.php' ;
2012-02-18 16:18:03 +00:00
$_SERVER [ 'REQUEST_URI' ] = '/cake_dev/posts/add/%E2%88%82%E2%88%82' ;
2012-02-18 15:53:47 +00:00
$request = new CakeRequest ();
2011-11-27 02:24:53 +00:00
$this -> assertEquals ( array (), $request -> query );
}
2010-05-01 05:06:09 +00:00
/**
2011-02-19 17:36:27 +00:00
* generator for environment configurations
2010-05-01 05:06:09 +00:00
*
* @ return void
*/
2011-02-19 17:36:27 +00:00
public static function environmentGenerator () {
return array (
array (
'IIS - No rewrite base path' ,
array (
2010-05-01 05:06:09 +00:00
'App' => array (
2011-10-28 05:01:17 +00:00
'base' => false ,
2011-02-19 23:20:54 +00:00
'baseUrl' => '/index.php' ,
2011-02-05 21:12:50 +00:00
'dir' => 'app' ,
'webroot' => 'webroot'
2010-05-01 05:06:09 +00:00
),
'SERVER' => array (
'SCRIPT_NAME' => '/index.php' ,
'PATH_TRANSLATED' => 'C:\\Inetpub\\wwwroot' ,
'QUERY_STRING' => '' ,
2011-02-05 21:12:50 +00:00
'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' ,
2010-05-01 05:06:09 +00:00
),
2011-02-19 17:36:27 +00:00
),
array (
2011-02-19 23:20:54 +00:00
'base' => '/index.php' ,
2011-02-05 21:12:50 +00:00
'webroot' => '/app/webroot/' ,
2010-05-01 05:06:09 +00:00
'url' => ''
),
2011-02-19 17:36:27 +00:00
),
array (
2011-02-19 23:20:54 +00:00
'IIS - No rewrite with path, no PHP_SELF' ,
2011-02-19 17:36:27 +00:00
array (
'App' => array (
2011-10-28 05:01:17 +00:00
'base' => false ,
2011-02-19 17:36:27 +00:00
'baseUrl' => '/index.php?' ,
'dir' => 'app' ,
'webroot' => 'webroot'
),
2010-05-01 05:06:09 +00:00
'SERVER' => array (
'QUERY_STRING' => '/posts/add' ,
'REQUEST_URI' => '/index.php?/posts/add' ,
2011-02-19 23:20:54 +00:00
'PHP_SELF' => '' ,
2010-05-01 05:06:09 +00:00
'URL' => '/index.php?/posts/add' ,
2011-05-09 04:58:01 +00:00
'DOCUMENT_ROOT' => 'C:\\Inetpub\\wwwroot' ,
2010-05-01 05:06:09 +00:00
'argv' => array ( '/posts/add' ),
'argc' => 1
),
),
2011-02-19 17:36:27 +00:00
array (
2010-05-01 05:06:09 +00:00
'url' => 'posts/add' ,
'base' => '/index.php?' ,
2011-02-05 21:12:50 +00:00
'webroot' => '/app/webroot/'
2011-02-19 17:36:27 +00:00
)
),
array (
'IIS - No rewrite sub dir 2' ,
array (
2010-05-01 05:06:09 +00:00
'App' => array (
2011-10-28 05:01:17 +00:00
'base' => false ,
'baseUrl' => '/site/index.php' ,
'dir' => 'app' ,
'webroot' => 'webroot' ,
2010-05-01 05:06:09 +00:00
),
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'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 (),
2010-05-01 05:06:09 +00:00
'argc' => 0
),
2011-02-19 17:36:27 +00:00
),
array (
2010-05-01 05:06:09 +00:00
'url' => '' ,
2011-02-19 23:20:54 +00:00
'base' => '/site/index.php' ,
2010-05-01 05:06:09 +00:00
'webroot' => '/site/app/webroot/'
),
2011-02-19 17:36:27 +00:00
),
array (
'IIS - No rewrite sub dir 2 with path' ,
array (
'App' => array (
2011-10-28 05:01:17 +00:00
'base' => false ,
2011-02-19 23:20:54 +00:00
'baseUrl' => '/site/index.php' ,
2011-02-19 17:36:27 +00:00
'dir' => 'app' ,
'webroot' => 'webroot'
),
2010-05-01 05:06:09 +00:00
'GET' => array ( '/posts/add' => '' ),
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'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/posts/add' ,
'argv' => array ( '/posts/add' ),
2010-05-01 05:06:09 +00:00
'argc' => 1
),
2011-02-19 17:36:27 +00:00
),
array (
2010-05-01 05:06:09 +00:00
'url' => 'posts/add' ,
2011-02-19 23:20:54 +00:00
'base' => '/site/index.php' ,
2010-05-01 05:06:09 +00:00
'webroot' => '/site/app/webroot/'
)
),
2011-02-19 17:36:27 +00:00
array (
'Apache - No rewrite, document root set to webroot, requesting path' ,
array (
2010-05-01 05:06:09 +00:00
'App' => array (
2011-10-28 05:01:17 +00:00
'base' => false ,
'baseUrl' => '/index.php' ,
'dir' => 'app' ,
2010-05-01 05:06:09 +00:00
'webroot' => 'webroot'
),
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'DOCUMENT_ROOT' => '/Library/WebServer/Documents/site/app/webroot' ,
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/app/webroot/index.php' ,
'QUERY_STRING' => '' ,
'REQUEST_URI' => '/index.php/posts/index' ,
2011-02-19 15:00:34 +00:00
'SCRIPT_NAME' => '/index.php' ,
'PATH_INFO' => '/posts/index' ,
'PHP_SELF' => '/index.php/posts/index' ,
2010-05-01 05:06:09 +00:00
),
2011-02-19 17:36:27 +00:00
),
array (
2011-02-19 15:00:34 +00:00
'url' => 'posts/index' ,
2010-05-01 05:06:09 +00:00
'base' => '/index.php' ,
'webroot' => '/'
),
2011-02-19 17:36:27 +00:00
),
array (
'Apache - No rewrite, document root set to webroot, requesting root' ,
array (
'App' => array (
2011-10-28 05:01:17 +00:00
'base' => false ,
'baseUrl' => '/index.php' ,
'dir' => 'app' ,
2011-02-19 17:36:27 +00:00
'webroot' => 'webroot'
),
2010-05-01 05:06:09 +00:00
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'DOCUMENT_ROOT' => '/Library/WebServer/Documents/site/app/webroot' ,
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/app/webroot/index.php' ,
'QUERY_STRING' => '' ,
'REQUEST_URI' => '/index.php' ,
'SCRIPT_NAME' => '/index.php' ,
'PATH_INFO' => '' ,
'PHP_SELF' => '/index.php' ,
2010-05-01 05:06:09 +00:00
),
2011-02-19 17:36:27 +00:00
),
array (
2011-02-19 15:00:34 +00:00
'url' => '' ,
2010-05-01 05:06:09 +00:00
'base' => '/index.php' ,
'webroot' => '/'
),
2011-02-19 17:36:27 +00:00
),
array (
'Apache - No rewrite, document root set above top level cake dir, requesting path' ,
array (
2010-05-01 05:06:09 +00:00
'App' => array (
2011-10-28 05:01:17 +00:00
'base' => false ,
'baseUrl' => '/site/index.php' ,
'dir' => 'app' ,
2010-05-01 05:06:09 +00:00
'webroot' => 'webroot'
),
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'SERVER_NAME' => 'localhost' ,
'DOCUMENT_ROOT' => '/Library/WebServer/Documents' ,
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php' ,
'REQUEST_URI' => '/site/index.php/posts/index' ,
2011-02-19 15:00:34 +00:00
'SCRIPT_NAME' => '/site/index.php' ,
'PATH_INFO' => '/posts/index' ,
'PHP_SELF' => '/site/index.php/posts/index' ,
),
2011-02-19 17:36:27 +00:00
),
array (
2011-02-19 15:00:34 +00:00
'url' => 'posts/index' ,
'base' => '/site/index.php' ,
'webroot' => '/site/app/webroot/' ,
),
2011-02-19 17:36:27 +00:00
),
array (
2011-04-25 03:31:44 +00:00
'Apache - No rewrite, document root set above top level cake dir, request root, no PATH_INFO' ,
2011-02-19 17:36:27 +00:00
array (
2010-05-01 05:06:09 +00:00
'App' => array (
2011-10-28 05:01:17 +00:00
'base' => false ,
'baseUrl' => '/site/index.php' ,
'dir' => 'app' ,
2010-05-01 05:06:09 +00:00
'webroot' => 'webroot'
),
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'SERVER_NAME' => 'localhost' ,
'DOCUMENT_ROOT' => '/Library/WebServer/Documents' ,
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php' ,
2011-02-22 03:30:01 +00:00
'REQUEST_URI' => '/site/index.php/' ,
2011-02-19 15:00:34 +00:00
'SCRIPT_NAME' => '/site/index.php' ,
'PHP_SELF' => '/site/index.php/' ,
2010-05-01 05:06:09 +00:00
),
2011-02-19 17:36:27 +00:00
),
array (
2010-05-01 05:06:09 +00:00
'url' => '' ,
2011-02-19 15:00:34 +00:00
'base' => '/site/index.php' ,
'webroot' => '/site/app/webroot/' ,
2010-05-01 05:06:09 +00:00
),
2011-02-19 17:36:27 +00:00
),
array (
'Apache - No rewrite, document root set above top level cake dir, request path, with GET' ,
array (
2010-05-01 05:06:09 +00:00
'App' => array (
2011-10-28 05:01:17 +00:00
'base' => false ,
'baseUrl' => '/site/index.php' ,
'dir' => 'app' ,
2010-05-01 05:06:09 +00:00
'webroot' => 'webroot'
),
2011-02-19 23:20:54 +00:00
'GET' => array ( 'a' => 'b' , 'c' => 'd' ),
2010-05-01 05:06:09 +00:00
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'SERVER_NAME' => 'localhost' ,
'DOCUMENT_ROOT' => '/Library/WebServer/Documents' ,
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php' ,
'REQUEST_URI' => '/site/index.php/posts/index?a=b&c=d' ,
2011-02-19 15:00:34 +00:00
'SCRIPT_NAME' => '/site/index.php' ,
'PATH_INFO' => '/posts/index' ,
'PHP_SELF' => '/site/index.php/posts/index' ,
'QUERY_STRING' => 'a=b&c=d'
2010-05-01 05:06:09 +00:00
),
2011-02-19 17:36:27 +00:00
),
array (
2011-02-19 15:00:34 +00:00
'urlParams' => array ( 'a' => 'b' , 'c' => 'd' ),
'url' => 'posts/index' ,
'base' => '/site/index.php' ,
'webroot' => '/site/app/webroot/' ,
),
2011-02-22 03:30:01 +00:00
),
array (
'Apache - w/rewrite, document root set above top level cake dir, request root, no PATH_INFO' ,
array (
'App' => array (
'base' => false ,
'baseUrl' => false ,
'dir' => 'app' ,
'webroot' => 'webroot'
),
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'SERVER_NAME' => 'localhost' ,
'DOCUMENT_ROOT' => '/Library/WebServer/Documents' ,
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php' ,
2011-02-22 03:30:01 +00:00
'REQUEST_URI' => '/site/' ,
'SCRIPT_NAME' => '/site/app/webroot/index.php' ,
'PHP_SELF' => '/site/app/webroot/index.php' ,
),
),
array (
'url' => '' ,
'base' => '/site' ,
'webroot' => '/site/' ,
),
),
array (
'Apache - w/rewrite, document root above top level cake dir, request root, no PATH_INFO/REQUEST_URI' ,
array (
'App' => array (
'base' => false ,
'baseUrl' => false ,
'dir' => 'app' ,
'webroot' => 'webroot'
),
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'SERVER_NAME' => 'localhost' ,
'DOCUMENT_ROOT' => '/Library/WebServer/Documents' ,
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php' ,
2011-02-22 03:30:01 +00:00
'SCRIPT_NAME' => '/site/app/webroot/index.php' ,
'PHP_SELF' => '/site/app/webroot/index.php' ,
'PATH_INFO' => null ,
'REQUEST_URI' => null ,
),
),
array (
'url' => '' ,
'base' => '/site' ,
'webroot' => '/site/' ,
),
),
2011-02-26 20:37:08 +00:00
array (
'Apache - w/rewrite, document root set to webroot, request root, no PATH_INFO/REQUEST_URI' ,
array (
'App' => array (
'base' => false ,
'baseUrl' => false ,
'dir' => 'app' ,
'webroot' => 'webroot'
),
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'SERVER_NAME' => 'localhost' ,
'DOCUMENT_ROOT' => '/Library/WebServer/Documents/site/app/webroot' ,
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/app/webroot/index.php' ,
2011-02-26 20:37:08 +00:00
'SCRIPT_NAME' => '/index.php' ,
'PHP_SELF' => '/index.php' ,
'PATH_INFO' => null ,
'REQUEST_URI' => null ,
),
),
array (
'url' => '' ,
'base' => '' ,
'webroot' => '/' ,
),
),
2011-08-27 05:59:50 +00:00
array (
'Nginx - w/rewrite, document root set to webroot, request root, no PATH_INFO' ,
array (
'App' => array (
'base' => false ,
'baseUrl' => false ,
'dir' => 'app' ,
'webroot' => 'webroot'
),
'GET' => array ( '/posts/add' => '' ),
'SERVER' => array (
2011-10-28 05:01:17 +00:00
'SERVER_NAME' => 'localhost' ,
'DOCUMENT_ROOT' => '/Library/WebServer/Documents/site/app/webroot' ,
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/app/webroot/index.php' ,
2011-08-27 05:59:50 +00:00
'SCRIPT_NAME' => '/index.php' ,
'QUERY_STRING' => '/posts/add&' ,
'PHP_SELF' => '/index.php' ,
'PATH_INFO' => null ,
'REQUEST_URI' => '/posts/add' ,
),
),
array (
'url' => 'posts/add' ,
'base' => '' ,
'webroot' => '/' ,
'urlParams' => array ()
),
),
2010-05-01 05:06:09 +00:00
);
}
2010-05-02 03:49:22 +00:00
/**
2011-02-19 17:36:27 +00:00
* testEnvironmentDetection method
2010-05-02 03:49:22 +00:00
*
2011-02-19 17:36:27 +00:00
* @ dataProvider environmentGenerator
2010-05-02 03:49:22 +00:00
* @ return void
*/
2011-02-19 17:36:27 +00:00
public function testEnvironmentDetection ( $name , $env , $expected ) {
2011-05-09 04:58:01 +00:00
$_GET = array ();
2011-02-19 17:36:27 +00:00
$this -> __loadEnvironment ( $env );
2010-05-02 03:49:22 +00:00
$request = new CakeRequest ();
2011-02-19 17:36:27 +00:00
$this -> assertEquals ( $expected [ 'url' ], $request -> url , " url error " );
$this -> assertEquals ( $expected [ 'base' ], $request -> base , " base error " );
2011-02-22 03:30:01 +00:00
$this -> assertEquals ( $expected [ 'webroot' ], $request -> webroot , " webroot error " );
2011-02-19 17:36:27 +00:00
if ( isset ( $expected [ 'urlParams' ])) {
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( $expected [ 'urlParams' ], $request -> query , " GET param mismatch " );
2010-05-01 05:06:09 +00:00
}
2010-05-02 03:49:22 +00:00
}
2010-09-12 18:05:57 +00:00
/**
* test the data () method reading
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testDataReading () {
2010-09-12 18:05:57 +00:00
$_POST [ 'data' ] = array (
'Model' => array (
'field' => 'value'
)
);
$request = new CakeRequest ( 'posts/index' );
$result = $request -> data ( 'Model' );
$this -> assertEquals ( $_POST [ 'data' ][ 'Model' ], $result );
$result = $request -> data ( 'Model.imaginary' );
$this -> assertNull ( $result );
}
/**
* test writing with data ()
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testDataWriting () {
2010-09-12 18:05:57 +00:00
$_POST [ 'data' ] = array (
'Model' => array (
'field' => 'value'
)
);
$request = new CakeRequest ( 'posts/index' );
$result = $request -> data ( 'Model.new_value' , 'new value' );
$this -> assertSame ( $result , $request , 'Return was not $this' );
2011-10-28 05:01:17 +00:00
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( 'new value' , $request -> data [ 'Model' ][ 'new_value' ]);
2010-09-12 18:05:57 +00:00
$request -> data ( 'Post.title' , 'New post' ) -> data ( 'Comment.1.author' , 'Mark' );
2012-03-23 06:37:12 +00:00
$this -> assertEquals ( 'New post' , $request -> data [ 'Post' ][ 'title' ]);
$this -> assertEquals ( 'Mark' , $request -> data [ 'Comment' ][ '1' ][ 'author' ]);
2010-09-12 18:05:57 +00:00
}
2010-09-12 18:08:17 +00:00
/**
* test writing falsey values .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testDataWritingFalsey () {
2010-09-12 18:08:17 +00:00
$request = new CakeRequest ( 'posts/index' );
$request -> data ( 'Post.null' , null );
$this -> assertNull ( $request -> data [ 'Post' ][ 'null' ]);
2011-10-28 05:01:17 +00:00
2010-09-12 18:08:17 +00:00
$request -> data ( 'Post.false' , false );
$this -> assertFalse ( $request -> data [ 'Post' ][ 'false' ]);
2011-10-28 05:01:17 +00:00
2010-09-12 18:08:17 +00:00
$request -> data ( 'Post.zero' , 0 );
$this -> assertSame ( 0 , $request -> data [ 'Post' ][ 'zero' ]);
2011-10-28 05:01:17 +00:00
2010-09-12 18:08:17 +00:00
$request -> data ( 'Post.empty' , '' );
$this -> assertSame ( '' , $request -> data [ 'Post' ][ 'empty' ]);
}
2010-11-07 05:35:36 +00:00
/**
* test accept language
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testAcceptLanguage () {
2010-11-07 05:35:36 +00:00
$_SERVER [ 'HTTP_ACCEPT_LANGUAGE' ] = 'inexistent,en-ca' ;
$result = CakeRequest :: acceptLanguage ();
$this -> assertEquals ( array ( 'inexistent' , 'en-ca' ), $result , 'Languages do not match' );
$_SERVER [ 'HTTP_ACCEPT_LANGUAGE' ] = 'es_mx;en_ca' ;
$result = CakeRequest :: acceptLanguage ();
$this -> assertEquals ( array ( 'es-mx' , 'en-ca' ), $result , 'Languages do not match' );
2011-10-28 05:01:17 +00:00
2010-11-07 05:35:36 +00:00
$result = CakeRequest :: acceptLanguage ( 'en-ca' );
$this -> assertTrue ( $result );
$result = CakeRequest :: acceptLanguage ( 'en-us' );
$this -> assertFalse ( $result );
}
2011-03-03 02:46:28 +00:00
/**
2011-10-28 05:01:17 +00:00
* test the here () method
2011-03-03 02:46:28 +00:00
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testHere () {
2011-03-03 02:46:28 +00:00
Configure :: write ( 'App.base' , '/base_path' );
$_GET = array ( 'test' => 'value' );
$request = new CakeRequest ( '/posts/add/1/name:value' );
$result = $request -> here ();
$this -> assertEquals ( '/base_path/posts/add/1/name:value?test=value' , $result );
$result = $request -> here ( false );
$this -> assertEquals ( '/posts/add/1/name:value?test=value' , $result );
$request = new CakeRequest ( '/posts/base_path/1/name:value' );
$result = $request -> here ();
$this -> assertEquals ( '/base_path/posts/base_path/1/name:value?test=value' , $result );
$result = $request -> here ( false );
$this -> assertEquals ( '/posts/base_path/1/name:value?test=value' , $result );
}
2011-04-27 03:03:17 +00:00
/**
* Test the input () method .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testInput () {
2011-09-25 01:56:37 +00:00
$request = $this -> getMock ( 'CakeRequest' , array ( '_readInput' ));
$request -> expects ( $this -> once ()) -> method ( '_readInput' )
2011-04-27 03:03:17 +00:00
-> will ( $this -> returnValue ( 'I came from stdin' ));
2011-10-28 05:01:17 +00:00
2011-04-27 03:03:17 +00:00
$result = $request -> input ();
$this -> assertEquals ( 'I came from stdin' , $result );
}
/**
* Test input () decoding .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testInputDecode () {
2011-09-25 01:56:37 +00:00
$request = $this -> getMock ( 'CakeRequest' , array ( '_readInput' ));
$request -> expects ( $this -> once ()) -> method ( '_readInput' )
2011-04-27 03:03:17 +00:00
-> will ( $this -> returnValue ( '{"name":"value"}' ));
$result = $request -> input ( 'json_decode' );
$this -> assertEquals ( array ( 'name' => 'value' ), ( array ) $result );
}
2011-04-30 17:05:10 +00:00
2011-10-28 05:01:17 +00:00
/**
2011-04-30 17:05:10 +00:00
* Test input () decoding with additional arguments .
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function testInputDecodeExtraParams () {
2011-04-30 17:05:10 +00:00
$xml = <<< XML
< ? xml version = " 1.0 " encoding = " utf-8 " ?>
< post >
< title id = " title " > Test </ title >
</ post >
XML ;
2011-09-25 01:56:37 +00:00
$request = $this -> getMock ( 'CakeRequest' , array ( '_readInput' ));
$request -> expects ( $this -> once ()) -> method ( '_readInput' )
2011-04-30 17:05:10 +00:00
-> will ( $this -> returnValue ( $xml ));
$result = $request -> input ( 'Xml::build' , array ( 'return' => 'domdocument' ));
$this -> assertInstanceOf ( 'DOMDocument' , $result );
$this -> assertEquals (
2011-10-28 05:01:17 +00:00
'Test' ,
2011-04-30 17:05:10 +00:00
$result -> getElementsByTagName ( 'title' ) -> item ( 0 ) -> childNodes -> item ( 0 ) -> wholeText
);
}
2011-10-21 01:11:42 +00:00
/**
* Test is ( 'requested' ) and isRequested ()
*
* @ return void
*/
public function testIsRequested () {
$request = new CakeRequest ( '/posts/index' );
$request -> addParams ( array (
'controller' => 'posts' ,
'action' => 'index' ,
'plugin' => null ,
'requested' => 1
));
$this -> assertTrue ( $request -> is ( 'requested' ));
$this -> assertTrue ( $request -> isRequested ());
$request = new CakeRequest ( '/posts/index' );
$request -> addParams ( array (
'controller' => 'posts' ,
'action' => 'index' ,
'plugin' => null ,
));
$this -> assertFalse ( $request -> is ( 'requested' ));
$this -> assertFalse ( $request -> isRequested ());
}
2010-05-01 05:06:09 +00:00
/**
* loadEnvironment method
*
* @ param mixed $env
* @ return void
*/
2012-02-17 07:13:12 +00:00
protected function __loadEnvironment ( $env ) {
2010-05-01 05:06:09 +00:00
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 ;
}
}
}
2011-04-27 03:03:17 +00:00
}