mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Merge branch '2.0' into 2.1
Conflicts: lib/Cake/Config/config.php lib/Cake/VERSION.txt
This commit is contained in:
commit
0304bb8796
105 changed files with 896 additions and 469 deletions
|
@ -368,7 +368,7 @@ form .submit input[type=submit]:hover {
|
|||
/* Form errors */
|
||||
form .error {
|
||||
background: #FFDACC;
|
||||
-moz-order-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
font-weight: normal;
|
||||
|
|
|
@ -498,7 +498,7 @@ class SchemaShell extends Shell {
|
|||
))->addSubcommand('dump', array(
|
||||
'help' => __d('cake_console', 'Dump database SQL based on a schema file to stdout.'),
|
||||
'parser' => array(
|
||||
'options' => compact('plugin', 'path', 'file', 'name', 'connection'),
|
||||
'options' => compact('plugin', 'path', 'file', 'name', 'connection', 'write'),
|
||||
'arguments' => compact('name')
|
||||
)
|
||||
))->addSubcommand('create', array(
|
||||
|
|
|
@ -283,7 +283,7 @@ class DbConfigTask extends Shell {
|
|||
|
||||
$oldConfigs[] = array(
|
||||
'name' => $configName,
|
||||
'driver' => $info['driver'],
|
||||
'datasource' => $info['datasource'],
|
||||
'persistent' => $info['persistent'],
|
||||
'host' => $info['host'],
|
||||
'port' => $info['port'],
|
||||
|
|
|
@ -606,7 +606,7 @@ class ExtractTask extends Shell {
|
|||
if (!empty($this->_exclude)) {
|
||||
$exclude = array();
|
||||
foreach ($this->_exclude as $e) {
|
||||
if ($e[0] !== DS) {
|
||||
if (DS !== '\\' && $e[0] !== DS) {
|
||||
$e = DS . $e;
|
||||
}
|
||||
$exclude[] = preg_quote($e, '/');
|
||||
|
|
|
@ -145,7 +145,7 @@ class TestTask extends BakeTask {
|
|||
$this->Template->set('fixtures', $this->_fixtures);
|
||||
$this->Template->set('plugin', $plugin);
|
||||
$this->Template->set(compact(
|
||||
'className', 'methods', 'type', 'fullClassName', 'mock',
|
||||
'className', 'methods', 'type', 'fullClassName', 'mock',
|
||||
'construction', 'realType'
|
||||
));
|
||||
$out = $this->Template->generate('classes', 'test');
|
||||
|
|
|
@ -178,7 +178,8 @@ class ConsoleOutput {
|
|||
return $text;
|
||||
}
|
||||
if ($this->_outputAs == self::PLAIN) {
|
||||
return strip_tags($text);
|
||||
$tags = implode('|', array_keys(self::$_styles));
|
||||
return preg_replace('#</?(?:' . $tags . ')>#', '', $text);
|
||||
}
|
||||
return preg_replace_callback(
|
||||
'/<(?<tag>[a-z0-9-_]+)>(?<text>.*?)<\/(\1)>/ims', array($this, '_replaceTags'), $text
|
||||
|
|
|
@ -24,7 +24,7 @@ App::uses('<?php echo $fullClassName; ?>', '<?php echo $realType; ?>');
|
|||
|
||||
<?php if ($mock and strtolower($type) == 'controller'): ?>
|
||||
/**
|
||||
* Test<?php echo $fullClassName; ?>
|
||||
* Test<?php echo $fullClassName; ?>
|
||||
*
|
||||
*/
|
||||
class Test<?php echo $fullClassName; ?> extends <?php echo $fullClassName; ?> {
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
|
||||
<div class="paging">
|
||||
<?php
|
||||
echo "<?php\n";
|
||||
echo "<?php\n";
|
||||
echo "\t\techo \$this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));\n";
|
||||
echo "\t\techo \$this->Paginator->numbers(array('separator' => ''));\n";
|
||||
echo "\t\techo \$this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));\n";
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/**
|
||||
* This file is loaded automatically by the app/webroot/index.php file after core.php
|
||||
*
|
||||
* This file should load/create any application wide configuration settings, such as
|
||||
* This file should load/create any application wide configuration settings, such as
|
||||
* Caching, Logging, loading additional configuration files.
|
||||
*
|
||||
* You should also use this file to include any files that provide global functions/constants
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
|
||||
|
||||
/**
|
||||
* Load all plugin routes. See the CakePlugin documentation on
|
||||
* Load all plugin routes. See the CakePlugin documentation on
|
||||
* how to customize the loading of plugin routes.
|
||||
*/
|
||||
CakePlugin::routes();
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
<?php echo '<?xml version="1.0" encoding="' . Configure::read('App.encoding') . '"?>'; ?>
|
||||
<?php echo $content_for_layout; ?>
|
||||
|
|
|
@ -368,7 +368,7 @@ form .submit input[type=submit]:hover {
|
|||
/* Form errors */
|
||||
form .error {
|
||||
background: #FFDACC;
|
||||
-moz-order-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
font-weight: normal;
|
||||
|
@ -611,7 +611,7 @@ pre {
|
|||
overflow: auto;
|
||||
position: relative;
|
||||
-moz-border-radius: 4px;
|
||||
-wekbkit-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.cake-stack-trace a {
|
||||
|
|
|
@ -131,7 +131,7 @@ abstract class BaseAuthorize {
|
|||
* }}}
|
||||
*
|
||||
* You can use the custom CRUD operations to create additional generic permissions
|
||||
* that behave like CRUD operations. Doing this will require additional columns on the
|
||||
* that behave like CRUD operations. Doing this will require additional columns on the
|
||||
* permissions lookup. When using with DbAcl, you'll have to add additional _admin type columns
|
||||
* to the `aros_acos` table.
|
||||
*
|
||||
|
|
|
@ -425,6 +425,7 @@ class AuthComponent extends Component {
|
|||
*
|
||||
* `$this->Auth->allow(array('edit', 'add'));` or
|
||||
* `$this->Auth->allow('edit', 'add');`
|
||||
* `$this->Auth->allow();` to allow all actions.
|
||||
*
|
||||
* allow() also supports '*' as a wildcard to mean all actions.
|
||||
*
|
||||
|
@ -452,7 +453,8 @@ class AuthComponent extends Component {
|
|||
* You can use deny with either an array, or var args.
|
||||
*
|
||||
* `$this->Auth->deny(array('edit', 'add'));` or
|
||||
* `$this->Auth->deny('edit', 'add');`
|
||||
* `$this->Auth->deny('edit', 'add');` or
|
||||
* `$this->Auth->deny();` to remove all items from the allowed list
|
||||
*
|
||||
* @param mixed $action,... Controller action name or array of actions
|
||||
* @return void
|
||||
|
@ -461,16 +463,20 @@ class AuthComponent extends Component {
|
|||
*/
|
||||
public function deny($action = null) {
|
||||
$args = func_get_args();
|
||||
if (isset($args[0]) && is_array($args[0])) {
|
||||
$args = $args[0];
|
||||
}
|
||||
foreach ($args as $arg) {
|
||||
$i = array_search($arg, $this->allowedActions);
|
||||
if (is_int($i)) {
|
||||
unset($this->allowedActions[$i]);
|
||||
if (empty($args)) {
|
||||
$this->allowedActions = array();
|
||||
} else {
|
||||
if (isset($args[0]) && is_array($args[0])) {
|
||||
$args = $args[0];
|
||||
}
|
||||
foreach ($args as $arg) {
|
||||
$i = array_search($arg, $this->allowedActions);
|
||||
if (is_int($i)) {
|
||||
unset($this->allowedActions[$i]);
|
||||
}
|
||||
}
|
||||
$this->allowedActions = array_values($this->allowedActions);
|
||||
}
|
||||
$this->allowedActions = array_values($this->allowedActions);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -519,7 +525,7 @@ class AuthComponent extends Component {
|
|||
* Logs a user out, and returns the login action to redirect to.
|
||||
* Triggers the logout() method of all the authenticate objects, so they can perform
|
||||
* custom logout logic. AuthComponent will remove the session data, so
|
||||
* there is no need to do that in an authentication object. Logging out
|
||||
* there is no need to do that in an authentication object. Logging out
|
||||
* will also renew the session id. This helps mitigate issues with session replays.
|
||||
*
|
||||
* @return string AuthComponent::$logoutRedirect
|
||||
|
|
|
@ -91,14 +91,18 @@ class RequestHandlerComponent extends Component {
|
|||
* @param array $settings Array of settings.
|
||||
*/
|
||||
public function __construct(ComponentCollection $collection, $settings = array()) {
|
||||
$this->addInputType('xml', array(array($this, 'convertXml')));
|
||||
parent::__construct($collection, $settings);
|
||||
$this->addInputType('xml', array(array($this, 'convertXml')));
|
||||
|
||||
$Controller = $collection->getController();
|
||||
$this->request = $Controller->request;
|
||||
$this->response = $Controller->response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if a file extension has been parsed by the Router, or if the
|
||||
* HTTP_ACCEPT_TYPE has matches only one content type with the supported extensions.
|
||||
* If there is only one matching type between the supported content types & extensions,
|
||||
* If there is only one matching type between the supported content types & extensions,
|
||||
* and the requested mime-types, RequestHandler::$ext is set to that value.
|
||||
*
|
||||
* @param Controller $controller A reference to the controller
|
||||
|
@ -107,8 +111,6 @@ class RequestHandlerComponent extends Component {
|
|||
* @see Router::parseExtensions()
|
||||
*/
|
||||
public function initialize($controller, $settings = array()) {
|
||||
$this->request = $controller->request;
|
||||
$this->response = $controller->response;
|
||||
if (isset($this->request->params['ext'])) {
|
||||
$this->ext = $this->request->params['ext'];
|
||||
}
|
||||
|
|
|
@ -805,6 +805,7 @@ class Controller extends Object {
|
|||
*/
|
||||
public function setAction($action) {
|
||||
$this->request->action = $action;
|
||||
$this->view = $action;
|
||||
$args = func_get_args();
|
||||
unset($args[0]);
|
||||
return call_user_func_array(array(&$this, $action), $args);
|
||||
|
@ -878,7 +879,8 @@ class Controller extends Object {
|
|||
list($plugin, $className) = pluginSplit($model);
|
||||
$this->request->params['models'][$className] = compact('plugin', 'className');
|
||||
}
|
||||
} if (!empty($this->modelClass) && ($this->uses === false || $this->uses === array())) {
|
||||
}
|
||||
if (!empty($this->modelClass) && ($this->uses === false || $this->uses === array())) {
|
||||
$this->request->params['models'][$this->modelClass] = array('plugin' => $this->plugin, 'className' => $this->modelClass);
|
||||
}
|
||||
|
||||
|
|
|
@ -119,12 +119,7 @@ class ExceptionRenderer {
|
|||
}
|
||||
|
||||
if (Configure::read('debug') == 0) {
|
||||
$parentClass = get_parent_class($this);
|
||||
if ($parentClass != __CLASS__) {
|
||||
$method = 'error400';
|
||||
}
|
||||
$parentMethods = (array)get_class_methods($parentClass);
|
||||
if (in_array($method, $parentMethods)) {
|
||||
if ($method == '_cakeError') {
|
||||
$method = 'error400';
|
||||
}
|
||||
if ($code == 500) {
|
||||
|
@ -223,11 +218,15 @@ class ExceptionRenderer {
|
|||
* @return void
|
||||
*/
|
||||
public function error500($error) {
|
||||
$message = $error->getMessage();
|
||||
if (Configure::read('debug') == 0) {
|
||||
$message = __d('cake', 'An Internal Error Has Occurred');
|
||||
}
|
||||
$url = $this->controller->request->here();
|
||||
$code = ($error->getCode() > 500 && $error->getCode() < 506) ? $error->getCode() : 500;
|
||||
$this->controller->response->statusCode($code);
|
||||
$this->controller->set(array(
|
||||
'name' => __d('cake', 'An Internal Error Has Occurred'),
|
||||
'name' => $message,
|
||||
'message' => h($url),
|
||||
'error' => $error,
|
||||
));
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
|
||||
App::uses('DboSource', 'Model/Datasource');
|
||||
App::uses('String', 'Utility');
|
||||
|
||||
/**
|
||||
* DBO implementation for the SQLite3 DBMS.
|
||||
|
@ -249,7 +250,7 @@ class Sqlite extends DboSource {
|
|||
if (in_array($col, array('text', 'integer', 'float', 'boolean', 'timestamp', 'date', 'datetime', 'time'))) {
|
||||
return $col;
|
||||
}
|
||||
if (strpos($col, 'varchar') !== false) {
|
||||
if (strpos($col, 'varchar') !== false || strpos($col, 'char') !== false) {
|
||||
return 'string';
|
||||
}
|
||||
if (in_array($col, array('blob', 'clob'))) {
|
||||
|
@ -281,7 +282,7 @@ class Sqlite extends DboSource {
|
|||
$last = strripos($querystring, 'FROM');
|
||||
if ($last !== false) {
|
||||
$selectpart = substr($querystring, 7, $last - 8);
|
||||
$selects = explode(',', $selectpart);
|
||||
$selects = String::tokenize($selectpart, ',', '(', ')');
|
||||
}
|
||||
} elseif (strpos($querystring, 'PRAGMA table_info') === 0) {
|
||||
$selects = array('cid', 'name', 'type', 'notnull', 'dflt_value', 'pk');
|
||||
|
|
|
@ -990,7 +990,7 @@ class DboSource extends DataSource {
|
|||
$queryData = $this->_scrubQueryData($queryData);
|
||||
|
||||
$null = null;
|
||||
$array = array();
|
||||
$array = array('callbacks' => $queryData['callbacks']);
|
||||
$linkedModels = array();
|
||||
$bypass = false;
|
||||
|
||||
|
@ -1043,7 +1043,11 @@ class DboSource extends DataSource {
|
|||
return false;
|
||||
}
|
||||
|
||||
$filtered = $this->_filterResults($resultSet, $model);
|
||||
$filtered = array();
|
||||
|
||||
if ($queryData['callbacks'] === true || $queryData['callbacks'] === 'after') {
|
||||
$filtered = $this->_filterResults($resultSet, $model);
|
||||
}
|
||||
|
||||
if ($model->recursive > -1) {
|
||||
foreach ($_associations as $type) {
|
||||
|
@ -1071,7 +1075,9 @@ class DboSource extends DataSource {
|
|||
}
|
||||
}
|
||||
}
|
||||
$this->_filterResults($resultSet, $model, $filtered);
|
||||
if ($queryData['callbacks'] === true || $queryData['callbacks'] === 'after') {
|
||||
$this->_filterResults($resultSet, $model, $filtered);
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_null($recursive)) {
|
||||
|
@ -1162,7 +1168,9 @@ class DboSource extends DataSource {
|
|||
}
|
||||
}
|
||||
}
|
||||
$this->_filterResults($fetch, $model);
|
||||
if ($queryData['callbacks'] === true || $queryData['callbacks'] === 'after') {
|
||||
$this->_filterResults($fetch, $model);
|
||||
}
|
||||
return $this->_mergeHasMany($resultSet, $fetch, $association, $model, $linkModel);
|
||||
} elseif ($type === 'hasAndBelongsToMany') {
|
||||
$ins = $fetch = array();
|
||||
|
@ -2093,6 +2101,7 @@ class DboSource extends DataSource {
|
|||
static $base = null;
|
||||
if ($base === null) {
|
||||
$base = array_fill_keys(array('conditions', 'fields', 'joins', 'order', 'limit', 'offset', 'group'), array());
|
||||
$base['callbacks'] = null;
|
||||
}
|
||||
return (array)$data + $base;
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
* @since CakePHP(tm) v 2.0
|
||||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
||||
*/
|
||||
|
||||
/**
|
||||
* CakeResponse is responsible for managing the response text, status and headers of a HTTP response.
|
||||
*
|
||||
|
@ -185,6 +186,7 @@ class CakeResponse {
|
|||
'mp2' => 'audio/mpeg',
|
||||
'mp3' => 'audio/mpeg',
|
||||
'mpga' => 'audio/mpeg',
|
||||
'ogg' => 'audio/ogg',
|
||||
'ra' => 'audio/x-realaudio',
|
||||
'ram' => 'audio/x-pn-realaudio',
|
||||
'rm' => 'audio/x-pn-realaudio',
|
||||
|
@ -347,7 +349,14 @@ class CakeResponse {
|
|||
$codeMessage = $this->_statusCodes[$this->_status];
|
||||
$this->_sendHeader("{$this->_protocol} {$this->_status} {$codeMessage}");
|
||||
$this->_sendHeader('Content-Type', "{$this->_contentType}; charset={$this->_charset}");
|
||||
|
||||
$shouldSetLength = empty($this->_headers['Content-Length']) && !in_array($this->_status, range(301, 307));
|
||||
if ($shouldSetLength && !$this->outputCompressed()) {
|
||||
if (ini_get('mbstring.func_overload') & 2 && function_exists('mb_strlen')) {
|
||||
$this->_headers['Content-Length'] = mb_strlen($this->_body, '8bit');
|
||||
} else {
|
||||
$this->_headers['Content-Length'] = strlen($this->_body);
|
||||
}
|
||||
}
|
||||
foreach ($this->_headers as $header => $value) {
|
||||
$this->_sendHeader($header, $value);
|
||||
}
|
||||
|
@ -643,6 +652,15 @@ class CakeResponse {
|
|||
return $compressionEnabled && ob_start('ob_gzhandler');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the resulting output will be compressed by PHP
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function outputCompressed() {
|
||||
return ini_get("zlib.output_compression") === '1' || in_array('ob_gzhandler', ob_list_handlers());
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the correct headers to instruct the browser to dowload the response as a file.
|
||||
*
|
||||
|
|
|
@ -315,6 +315,9 @@ class Dispatcher {
|
|||
}
|
||||
$response->type($contentType);
|
||||
}
|
||||
if (!$compressionEnabled) {
|
||||
$response->header('Content-Length', filesize($assetFile));
|
||||
}
|
||||
$response->cache(filemtime($assetFile));
|
||||
$response->send();
|
||||
ob_clean();
|
||||
|
|
|
@ -280,11 +280,11 @@ class CakeRoute {
|
|||
$separatorIsPresent = strpos($param, $namedConfig['separator']) !== false;
|
||||
if ((!isset($this->options['named']) || !empty($this->options['named'])) && $separatorIsPresent) {
|
||||
list($key, $val) = explode($namedConfig['separator'], $param, 2);
|
||||
$val = urldecode($val);
|
||||
$val = rawurldecode($val);
|
||||
$hasRule = isset($rules[$key]);
|
||||
$passIt = (!$hasRule && !$greedy) || ($hasRule && !$this->_matchNamed($val, $rules[$key], $context));
|
||||
if ($passIt) {
|
||||
$pass[] = $param;
|
||||
$pass[] = rawurldecode($param);
|
||||
} else {
|
||||
if (preg_match_all('/\[([A-Za-z0-9_-]+)?\]/', $key, $matches, PREG_SET_ORDER)) {
|
||||
$matches = array_reverse($matches);
|
||||
|
@ -305,7 +305,7 @@ class CakeRoute {
|
|||
$named = array_merge_recursive($named, array($key => $val));
|
||||
}
|
||||
} else {
|
||||
$pass[] = $param;
|
||||
$pass[] = rawurldecode($param);
|
||||
}
|
||||
}
|
||||
return array($pass, $named);
|
||||
|
@ -471,7 +471,7 @@ class CakeRoute {
|
|||
}
|
||||
|
||||
if (is_array($params['pass'])) {
|
||||
$params['pass'] = implode('/', $params['pass']);
|
||||
$params['pass'] = implode('/', array_map('rawurlencode', $params['pass']));
|
||||
}
|
||||
|
||||
$namedConfig = Router::namedConfig();
|
||||
|
@ -482,10 +482,10 @@ class CakeRoute {
|
|||
foreach ($params['named'] as $key => $value) {
|
||||
if (is_array($value)) {
|
||||
foreach ($value as $namedKey => $namedValue) {
|
||||
$named[] = $key . "[$namedKey]" . $separator . $namedValue;
|
||||
$named[] = $key . "[$namedKey]" . $separator . rawurlencode($namedValue);
|
||||
}
|
||||
} else {
|
||||
$named[] = $key . $separator . $value;
|
||||
$named[] = $key . $separator . rawurlencode($value);
|
||||
}
|
||||
}
|
||||
$params['pass'] = $params['pass'] . '/' . implode('/', $named);
|
||||
|
|
|
@ -433,7 +433,7 @@ class Router {
|
|||
Router::connect($url,
|
||||
array(
|
||||
'plugin' => $plugin,
|
||||
'controller' => $urlName,
|
||||
'controller' => $urlName,
|
||||
'action' => $params['action'],
|
||||
'[method]' => $params['method']
|
||||
),
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
require_once CAKE . 'basics.php';
|
||||
App::uses('Folder', 'Utility');
|
||||
App::uses('CakeResponse', 'Network');
|
||||
|
||||
/**
|
||||
* BasicsTest class
|
||||
|
@ -234,6 +235,14 @@ class BasicsTest extends CakeTestCase {
|
|||
'n' => ' '
|
||||
);
|
||||
$this->assertEqual($expected, $result);
|
||||
|
||||
$obj = new stdClass();
|
||||
$result = h($obj);
|
||||
$this->assertEquals('(object)stdClass', $result);
|
||||
|
||||
$obj = new CakeResponse(array('body' => 'Body content'));
|
||||
$result = h($obj);
|
||||
$this->assertEquals('Body content', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -157,7 +157,7 @@ class ApcEngineTest extends CakeTestCase {
|
|||
|
||||
$result = Cache::read('test_decrement', 'apc');
|
||||
$this->assertEqual(2, $result);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -352,7 +352,7 @@ class FileEngineTest extends CakeTestCase {
|
|||
|
||||
/**
|
||||
* Testing the mask setting in FileEngine
|
||||
*
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testMaskSetting() {
|
||||
|
|
|
@ -24,13 +24,13 @@ class TestMemcacheEngine extends MemcacheEngine {
|
|||
/**
|
||||
* public accessor to _parseServerString
|
||||
*
|
||||
* @param string $server
|
||||
* @param string $server
|
||||
* @return array
|
||||
*/
|
||||
public function parseServerString($server) {
|
||||
return $this->_parseServerString($server);
|
||||
}
|
||||
|
||||
|
||||
public function setMemcache($memcache) {
|
||||
$this->_Memcache = $memcache;
|
||||
}
|
||||
|
|
|
@ -145,7 +145,7 @@ class WincacheEngineTest extends CakeTestCase {
|
|||
|
||||
$result = Cache::read('test_decrement', 'wincache');
|
||||
$this->assertEqual(2, $result);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -81,7 +81,7 @@ class AclShellTest extends CakeTestCase {
|
|||
|
||||
$this->Task->expects($this->at(4))->method('out')
|
||||
->with($this->stringContains('[3] Gandalf'));
|
||||
|
||||
|
||||
$this->Task->expects($this->at(6))->method('out')
|
||||
->with($this->stringContains('[5] MyModel.2'));
|
||||
|
||||
|
@ -217,7 +217,7 @@ class AclShellTest extends CakeTestCase {
|
|||
$this->Task->args = array('AuthUser.2', 'ROOT/Controller1', 'create');
|
||||
$this->Task->expects($this->at(0))->method('out')
|
||||
->with($this->stringContains('Permission denied'), true);
|
||||
|
||||
|
||||
$this->Task->deny();
|
||||
|
||||
$node = $this->Task->Acl->Aro->node(array('model' => 'AuthUser', 'foreign_key' => 2));
|
||||
|
@ -264,7 +264,7 @@ class AclShellTest extends CakeTestCase {
|
|||
->with($this->matchesRegularExpression('/Permission .*granted/'), true);
|
||||
$this->Task->expects($this->at(1))->method('out')
|
||||
->with($this->matchesRegularExpression('/Permission .*inherited/'), true);
|
||||
|
||||
|
||||
$this->Task->args = array('AuthUser.2', 'ROOT/Controller1', 'create');
|
||||
$this->Task->grant();
|
||||
|
||||
|
@ -302,7 +302,7 @@ class AclShellTest extends CakeTestCase {
|
|||
public function testInitDb() {
|
||||
$this->Task->expects($this->once())->method('dispatchShell')
|
||||
->with('schema create DbAcl');
|
||||
|
||||
|
||||
$this->Task->initdb();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,10 +84,10 @@ class BakeShellTest extends CakeTestCase {
|
|||
$this->Shell->DbConfig = $this->getMock('DbConfigTask', array(), array(&$this->Dispatcher));
|
||||
|
||||
$this->Shell->DbConfig->expects($this->once())->method('getConfig')->will($this->returnValue('test'));
|
||||
|
||||
|
||||
$this->Shell->Model->expects($this->never())->method('getName');
|
||||
$this->Shell->Model->expects($this->once())->method('bake')->will($this->returnValue(true));
|
||||
|
||||
|
||||
$this->Shell->Controller->expects($this->once())->method('bake')->will($this->returnValue(true));
|
||||
$this->Shell->View->expects($this->once())->method('execute');
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ class CommandListShellTest extends CakeTestCase {
|
|||
|
||||
$output = $this->Shell->stdout->output;
|
||||
|
||||
$find = '<shell name="sample" call_as="sample" provider="app" help="sample -h"/>';
|
||||
$find = '<shell name="sample" call_as="sample" provider="app" help="sample -h"/>';
|
||||
$this->assertContains($find, $output);
|
||||
|
||||
$find = '<shell name="bake" call_as="bake" provider="CORE" help="bake -h"/>';
|
||||
|
|
|
@ -184,7 +184,7 @@ class ShellTest extends CakeTestCase {
|
|||
$this->assertTrue(isset($this->Shell->Comment));
|
||||
$this->assertInstanceOf('Comment', $this->Shell->Comment);
|
||||
$this->assertEqual($this->Shell->modelClass, 'Comment');
|
||||
|
||||
|
||||
App::build();
|
||||
}
|
||||
|
||||
|
@ -832,7 +832,7 @@ TEXT;
|
|||
|
||||
/**
|
||||
* Testing camel cased naming of tasks
|
||||
*
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testShellNaming() {
|
||||
|
|
|
@ -40,7 +40,7 @@ class DbConfigTaskTest extends CakeTestCase {
|
|||
$out = $this->getMock('ConsoleOutput', array(), array(), '', false);
|
||||
$in = $this->getMock('ConsoleInput', array(), array(), '', false);
|
||||
|
||||
$this->Task = $this->getMock('DbConfigTask',
|
||||
$this->Task = $this->getMock('DbConfigTask',
|
||||
array('in', 'out', 'err', 'hr', 'createFile', '_stop', '_checkUnitTest', '_verify'),
|
||||
array($out, $out, $in)
|
||||
);
|
||||
|
|
|
@ -188,7 +188,7 @@ class FixtureTaskTest extends CakeTestCase {
|
|||
$this->Task->connection = 'test';
|
||||
$this->Task->path = '/my/path/';
|
||||
$result = $this->Task->bake('Article', false, array(
|
||||
'fromTable' => true,
|
||||
'fromTable' => true,
|
||||
'schema' => 'Article',
|
||||
'records' => false
|
||||
));
|
||||
|
@ -209,7 +209,7 @@ class FixtureTaskTest extends CakeTestCase {
|
|||
|
||||
$this->Task->expects($this->at(0))->method('createFile')
|
||||
->with($filename, $this->stringContains('class ArticleFixture'));
|
||||
|
||||
|
||||
$this->Task->execute();
|
||||
}
|
||||
|
||||
|
|
|
@ -45,12 +45,12 @@ class PluginTaskTest extends CakeTestCase {
|
|||
$this->out = $this->getMock('ConsoleOutput', array(), array(), '', false);
|
||||
$this->in = $this->getMock('ConsoleInput', array(), array(), '', false);
|
||||
|
||||
$this->Task = $this->getMock('PluginTask',
|
||||
$this->Task = $this->getMock('PluginTask',
|
||||
array('in', 'err', 'createFile', '_stop', 'clear'),
|
||||
array($this->out, $this->out, $this->in)
|
||||
);
|
||||
$this->Task->path = TMP . 'tests' . DS;
|
||||
|
||||
|
||||
$this->_paths = $paths = App::path('plugins');
|
||||
foreach ($paths as $i => $p) {
|
||||
if (!is_dir($p)) {
|
||||
|
@ -84,7 +84,7 @@ class PluginTaskTest extends CakeTestCase {
|
|||
|
||||
$path = $this->Task->path . 'BakeTestPlugin';
|
||||
$this->assertTrue(is_dir($path), 'No plugin dir %s');
|
||||
|
||||
|
||||
$directories = array(
|
||||
'Config' . DS . 'Schema',
|
||||
'Model' . DS . 'Behavior',
|
||||
|
@ -155,7 +155,7 @@ class PluginTaskTest extends CakeTestCase {
|
|||
$file = $path . DS . 'Model' . DS . 'BakeTestPluginAppModel.php';
|
||||
$this->Task->expects($this->at(3))->method('createFile')
|
||||
->with($file, new PHPUnit_Framework_Constraint_IsAnything());
|
||||
|
||||
|
||||
$this->Task->args = array('BakeTestPlugin');
|
||||
|
||||
$this->Task->execute();
|
||||
|
@ -174,7 +174,7 @@ class PluginTaskTest extends CakeTestCase {
|
|||
$last = count($paths);
|
||||
$paths[] = '/fake/path';
|
||||
|
||||
$this->Task = $this->getMock('PluginTask',
|
||||
$this->Task = $this->getMock('PluginTask',
|
||||
array('in', 'out', 'err', 'createFile', '_stop'),
|
||||
array($this->out, $this->out, $this->in)
|
||||
);
|
||||
|
@ -183,7 +183,7 @@ class PluginTaskTest extends CakeTestCase {
|
|||
// Make sure the added path is filtered out.
|
||||
$this->Task->expects($this->exactly($last))
|
||||
->method('out');
|
||||
|
||||
|
||||
$this->Task->expects($this->once())
|
||||
->method('in')
|
||||
->will($this->returnValue($last));
|
||||
|
|
|
@ -130,7 +130,7 @@ class ProjectTaskTest extends CakeTestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* test bake with CakePHP on the include path. The constants should remain commented out.
|
||||
* test bake with CakePHP on the include path. The constants should remain commented out.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
|
|
@ -613,7 +613,7 @@ class ViewTaskTest extends CakeTestCase {
|
|||
TMP . 'ViewTaskComments' . DS . 'index.ctp',
|
||||
$this->stringContains('ViewTaskComment')
|
||||
);
|
||||
|
||||
|
||||
$this->Task->expects($this->at(4))->method('createFile')
|
||||
->with(
|
||||
TMP . 'ViewTaskComments' . DS . 'view.ctp',
|
||||
|
@ -631,7 +631,7 @@ class ViewTaskTest extends CakeTestCase {
|
|||
TMP . 'ViewTaskComments' . DS . 'edit.ctp',
|
||||
$this->stringContains('Edit View Task Comment')
|
||||
);
|
||||
|
||||
|
||||
$this->Task->expects($this->exactly(4))->method('createFile');
|
||||
$this->Task->execute();
|
||||
}
|
||||
|
@ -678,7 +678,7 @@ class ViewTaskTest extends CakeTestCase {
|
|||
TMP . 'ViewTaskComments' . DS . 'admin_index.ctp',
|
||||
$this->stringContains('ViewTaskComment')
|
||||
);
|
||||
|
||||
|
||||
$this->Task->expects($this->at(4))->method('createFile')
|
||||
->with(
|
||||
TMP . 'ViewTaskComments' . DS . 'admin_view.ctp',
|
||||
|
@ -696,7 +696,7 @@ class ViewTaskTest extends CakeTestCase {
|
|||
TMP . 'ViewTaskComments' . DS . 'admin_edit.ctp',
|
||||
$this->stringContains('Edit View Task Comment')
|
||||
);
|
||||
|
||||
|
||||
$this->Task->expects($this->exactly(4))->method('createFile');
|
||||
$this->Task->execute();
|
||||
}
|
||||
|
|
|
@ -87,7 +87,7 @@ class ConsoleErrorHandlerTest extends CakeTestCase {
|
|||
|
||||
ConsoleErrorHandler::$stderr->expects($this->once())->method('write')
|
||||
->with($this->stringContains('Too many parameters.'));
|
||||
|
||||
|
||||
$this->Error->expects($this->once())
|
||||
->method('_stop')
|
||||
->with(1);
|
||||
|
@ -102,7 +102,7 @@ class ConsoleErrorHandlerTest extends CakeTestCase {
|
|||
*/
|
||||
public function testError404Exception() {
|
||||
$exception = new NotFoundException('dont use me in cli.');
|
||||
|
||||
|
||||
ConsoleErrorHandler::$stderr->expects($this->once())->method('write')
|
||||
->with($this->stringContains('dont use me in cli.'));
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ class ConsoleOptionParserTest extends CakeTestCase {
|
|||
|
||||
$this->assertEquals($parser, $result, 'Setting epilog is not chainable');
|
||||
$this->assertEquals('A test', $parser->epilog(), 'getting value is wrong.');
|
||||
|
||||
|
||||
$result = $parser->epilog(array('A test', 'something'));
|
||||
$this->assertEquals("A test\nsomething", $parser->epilog(), 'getting value is wrong.');
|
||||
}
|
||||
|
@ -116,7 +116,7 @@ class ConsoleOptionParserTest extends CakeTestCase {
|
|||
));
|
||||
$result = $parser->parse(array('--test'));
|
||||
$this->assertEquals(array('test' => 'default value', 'help' => false), $result[0], 'Default value did not parse out');
|
||||
|
||||
|
||||
$parser = new ConsoleOptionParser('test', false);
|
||||
$parser->addOption('test', array(
|
||||
'default' => 'default value',
|
||||
|
@ -165,7 +165,7 @@ class ConsoleOptionParserTest extends CakeTestCase {
|
|||
$result = $parser->parse(array('--test', 'value'));
|
||||
$expected = array(array('test' => true, 'help' => false), array('value'));
|
||||
$this->assertEquals($expected, $result);
|
||||
|
||||
|
||||
$result = $parser->parse(array('value'));
|
||||
$expected = array(array('test' => false, 'help' => false), array('value'));
|
||||
$this->assertEquals($expected, $result);
|
||||
|
@ -249,7 +249,7 @@ class ConsoleOptionParserTest extends CakeTestCase {
|
|||
|
||||
$result = $parser->parse(array('--fail', 'other'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* test parsing short options that do not exist.
|
||||
*
|
||||
|
@ -271,7 +271,7 @@ class ConsoleOptionParserTest extends CakeTestCase {
|
|||
public function testOptionWithChoices() {
|
||||
$parser = new ConsoleOptionParser('test', false);
|
||||
$parser->addOption('name', array('choices' => array('mark', 'jose')));
|
||||
|
||||
|
||||
$result = $parser->parse(array('--name', 'mark'));
|
||||
$expected = array('name' => 'mark', 'help' => false);
|
||||
$this->assertEquals($expected, $result[0], 'Got the correct value.');
|
||||
|
@ -519,7 +519,7 @@ TEXT;
|
|||
|
||||
$args = $parser->arguments();
|
||||
$this->assertEquals(2, count($args));
|
||||
|
||||
|
||||
$commands = $parser->subcommands();
|
||||
$this->assertEquals(1, count($commands));
|
||||
}
|
||||
|
@ -567,7 +567,7 @@ TEXT;
|
|||
)
|
||||
)
|
||||
));
|
||||
|
||||
|
||||
$result = $parser->parse(array('--secondary', '--fourth', '4', 'c'), 'sub');
|
||||
$expected = array(array(
|
||||
'secondary' => true,
|
||||
|
|
|
@ -225,4 +225,17 @@ class ConsoleOutputTest extends CakeTestCase {
|
|||
|
||||
$this->output->write('<error>Bad</error> Regular', false);
|
||||
}
|
||||
|
||||
/**
|
||||
* test plain output only strips tags used for formatting.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testOutputAsPlainSelectiveTagRemoval() {
|
||||
$this->output->outputAs(ConsoleOutput::PLAIN);
|
||||
$this->output->expects($this->once())->method('_write')
|
||||
->with('Bad Regular <b>Left</b> <i>behind</i> <name>');
|
||||
|
||||
$this->output->write('<error>Bad</error> Regular <b>Left</b> <i>behind</i> <name>', false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* ActionsAuthorizeTest file
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
|
@ -77,7 +77,7 @@ class ActionsAuthorizeTest extends CakeTestCase {
|
|||
->method('check')
|
||||
->with($user, '/controllers/Posts/index')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
|
||||
$this->assertFalse($this->auth->authorize($user['User'], $request));
|
||||
}
|
||||
|
||||
|
@ -106,7 +106,7 @@ class ActionsAuthorizeTest extends CakeTestCase {
|
|||
->method('check')
|
||||
->with($user, '/controllers/Posts/index')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
|
||||
$this->assertTrue($this->auth->authorize($user['User'], $request));
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* BasicAuthenticateTest file
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* ControllerAuthorizeTest file
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
|
@ -36,12 +36,12 @@ class ControllerAuthorizeTest extends CakeTestCase {
|
|||
$this->components->expects($this->any())
|
||||
->method('getController')
|
||||
->will($this->returnValue($this->controller));
|
||||
|
||||
|
||||
$this->auth = new ControllerAuthorize($this->components);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @expectedException CakeException
|
||||
*/
|
||||
public function testControllerTypeError() {
|
||||
|
@ -74,7 +74,7 @@ class ControllerAuthorizeTest extends CakeTestCase {
|
|||
public function testAuthorizeSuccess() {
|
||||
$user = array('User' => array('username' => 'mark'));
|
||||
$request = new CakeRequest('/posts/index', false);
|
||||
|
||||
|
||||
$this->controller->expects($this->once())
|
||||
->method('isAuthorized')
|
||||
->with($user)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* CrudAuthorizeTest file
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
|
@ -179,7 +179,7 @@ class CrudAuthorizeTest extends CakeTestCase {
|
|||
public function testAutoPrefixMapActions() {
|
||||
Configure::write('Routing.prefixes', array('admin', 'manager'));
|
||||
Router::reload();
|
||||
|
||||
|
||||
$auth = new CrudAuthorize($this->Components);
|
||||
$this->assertTrue(isset($auth->settings['actionMap']['admin_index']));
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* DigestAuthenticateTest file
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* FormAuthenticateTest file
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
|
|
|
@ -636,6 +636,24 @@ class AuthComponentTest extends CakeTestCase {
|
|||
|
||||
$this->Controller->request['action'] = 'camelCase';
|
||||
$this->assertFalse($this->Controller->Auth->startup($this->Controller));
|
||||
|
||||
$this->Controller->Auth->allow('*');
|
||||
$this->Controller->Auth->deny();
|
||||
|
||||
$this->Controller->request['action'] = 'camelCase';
|
||||
$this->assertFalse($this->Controller->Auth->startup($this->Controller));
|
||||
|
||||
$this->Controller->request['action'] = 'add';
|
||||
$this->assertFalse($this->Controller->Auth->startup($this->Controller));
|
||||
|
||||
$this->Controller->Auth->allow('camelCase');
|
||||
$this->Controller->Auth->deny();
|
||||
|
||||
$this->Controller->request['action'] = 'camelCase';
|
||||
$this->assertFalse($this->Controller->Auth->startup($this->Controller));
|
||||
|
||||
$this->Controller->request['action'] = 'login';
|
||||
$this->assertFalse($this->Controller->Auth->startup($this->Controller));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -76,7 +76,7 @@ class CookieComponentTest extends CakeTestCase {
|
|||
$this->Cookie = $this->getMock('CookieComponent', array('_setcookie'), array($Collection));
|
||||
$this->Controller = new CookieComponentTestController();
|
||||
$this->Cookie->initialize($this->Controller);
|
||||
|
||||
|
||||
$this->Cookie->name = 'CakeTestCookie';
|
||||
$this->Cookie->time = 10;
|
||||
$this->Cookie->path = '/';
|
||||
|
|
|
@ -453,7 +453,7 @@ class PaginatorComponentTest extends CakeTestCase {
|
|||
$Controller->params['url'] = array();
|
||||
$Controller->constructClasses();
|
||||
$Controller->Paginator->settings = array(
|
||||
'order' => 'PaginatorControllerPost.id DESC',
|
||||
'order' => 'PaginatorControllerPost.id DESC',
|
||||
'maxLimit' => 10,
|
||||
'paramType' => 'named'
|
||||
);
|
||||
|
@ -502,7 +502,7 @@ class PaginatorComponentTest extends CakeTestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* test that option merging prefers specific models
|
||||
* test that option merging prefers specific models
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
@ -671,7 +671,7 @@ class PaginatorComponentTest extends CakeTestCase {
|
|||
->method('hasField')
|
||||
->with('something')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
|
||||
$model->expects($this->at(1))
|
||||
->method('hasField')
|
||||
->with('something', true)
|
||||
|
|
|
@ -29,13 +29,6 @@ App::uses('Router', 'Routing');
|
|||
*/
|
||||
class RequestHandlerTestController extends Controller {
|
||||
|
||||
/**
|
||||
* name property
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $name = 'RequestHandlerTest';
|
||||
|
||||
/**
|
||||
* uses property
|
||||
*
|
||||
|
@ -117,9 +110,8 @@ class RequestHandlerComponentTest extends CakeTestCase {
|
|||
$request = new CakeRequest('controller_posts/index');
|
||||
$response = new CakeResponse();
|
||||
$this->Controller = new RequestHandlerTestController($request, $response);
|
||||
$this->Controller->constructClasses();
|
||||
$this->RequestHandler = new RequestHandlerComponent($this->Controller->Components);
|
||||
$this->RequestHandler->request = $request;
|
||||
$this->RequestHandler->response = $response;
|
||||
$this->_extensions = Router::extensions();
|
||||
}
|
||||
|
||||
|
@ -148,6 +140,7 @@ class RequestHandlerComponentTest extends CakeTestCase {
|
|||
'ajaxLayout' => 'test_ajax'
|
||||
);
|
||||
$Collection = new ComponentCollection();
|
||||
$Collection->init($this->Controller);
|
||||
$RequestHandler = new RequestHandlerComponent($Collection, $settings);
|
||||
$this->assertEqual($RequestHandler->ajaxLayout, 'test_ajax');
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ class SecurityComponentTest extends CakeTestCase {
|
|||
*/
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
|
||||
$request = new CakeRequest('posts/index', false);
|
||||
$request->addParams(array('controller' => 'posts', 'action' => 'index'));
|
||||
$this->Controller = new SecurityTestController($request);
|
||||
|
@ -492,7 +492,7 @@ class SecurityComponentTest extends CakeTestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* Test that objects can't be passed into the serialized string. This was a vector for RFI and LFI
|
||||
* Test that objects can't be passed into the serialized string. This was a vector for RFI and LFI
|
||||
* attacks. Thanks to Felix Wilhelm
|
||||
*
|
||||
* @return void
|
||||
|
@ -641,7 +641,7 @@ class SecurityComponentTest extends CakeTestCase {
|
|||
$fields = '19464422eafe977ee729c59222af07f983010c5f%3A';
|
||||
$this->Controller->request->data = array(
|
||||
'User.password' => 'bar', 'User.name' => 'foo', 'User.is_valid' => '1',
|
||||
'Tag' => array('Tag' => array(1)),
|
||||
'Tag' => array('Tag' => array(1)),
|
||||
'_Token' => compact('key', 'fields', 'unlocked'),
|
||||
);
|
||||
$result = $this->Controller->Security->validatePost($this->Controller);
|
||||
|
@ -1056,7 +1056,7 @@ class SecurityComponentTest extends CakeTestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* test that csrf checks are skipped for request action.
|
||||
* test that csrf checks are skipped for request action.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
@ -1073,7 +1073,7 @@ class SecurityComponentTest extends CakeTestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* test setting
|
||||
* test setting
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
@ -1117,9 +1117,9 @@ class SecurityComponentTest extends CakeTestCase {
|
|||
$this->Security->validatePost = false;
|
||||
$this->Security->csrfCheck = true;
|
||||
$this->Security->csrfExpires = '+10 minutes';
|
||||
|
||||
|
||||
$this->Security->Session->write('_Token.csrfTokens', array('nonce1' => strtotime('+10 minutes')));
|
||||
|
||||
|
||||
$this->Controller->request = $this->getMock('CakeRequest', array('is'));
|
||||
$this->Controller->request->expects($this->once())->method('is')
|
||||
->with('post')
|
||||
|
@ -1148,7 +1148,7 @@ class SecurityComponentTest extends CakeTestCase {
|
|||
$this->Security->validatePost = false;
|
||||
$this->Security->csrfCheck = true;
|
||||
$this->Security->csrfExpires = '+10 minutes';
|
||||
|
||||
|
||||
$this->Security->Session->write('_Token.csrfTokens', array(
|
||||
'valid' => strtotime('+30 minutes'),
|
||||
'poof' => strtotime('-11 minutes'),
|
||||
|
@ -1158,7 +1158,7 @@ class SecurityComponentTest extends CakeTestCase {
|
|||
$tokens = $this->Security->Session->read('_Token.csrfTokens');
|
||||
$this->assertEquals(2, count($tokens), 'Too many tokens left behind');
|
||||
$this->assertNotEmpty('valid', $tokens, 'Valid token was removed.');
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1170,9 +1170,9 @@ class SecurityComponentTest extends CakeTestCase {
|
|||
$this->Security->validatePost = false;
|
||||
$this->Security->csrfCheck = true;
|
||||
$this->Security->csrfExpires = '+10 minutes';
|
||||
|
||||
|
||||
$this->Security->Session->write('_Token.csrfTokens', array('nonce1' => strtotime('+10 minutes')));
|
||||
|
||||
|
||||
$this->Controller->request = $this->getMock('CakeRequest', array('is'));
|
||||
$this->Controller->request->expects($this->once())->method('is')
|
||||
->with('post')
|
||||
|
|
|
@ -274,21 +274,21 @@ class TestController extends ControllerTestAppController {
|
|||
public function returner() {
|
||||
return 'I am from the controller.';
|
||||
}
|
||||
|
||||
|
||||
protected function protected_m() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
private function private_m() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function _hidden() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function admin_add() {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -967,7 +967,8 @@ class ControllerTest extends CakeTestCase {
|
|||
$TestController = new TestController($request);
|
||||
$TestController->setAction('index', 1, 2);
|
||||
$expected = array('testId' => 1, 'test2Id' => 2);
|
||||
$this->assertidentical($TestController->data, $expected);
|
||||
$this->assertSame($expected, $TestController->request->data);
|
||||
$this->assertSame('index', $TestController->view);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1319,5 +1320,5 @@ class ControllerTest extends CakeTestCase {
|
|||
$this->assertEquals('I am from the controller.', $result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -819,4 +819,20 @@ class AppTest extends CakeTestCase {
|
|||
$this->assertArrayHasKey('Controller', $result);
|
||||
$this->assertArrayHasKey('Controller/Component', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Proves that it is possible to load plugin libraries in top
|
||||
* level Lib dir for plugins
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPluginLibClasses() {
|
||||
App::build(array(
|
||||
'plugins' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS)
|
||||
), App::RESET);
|
||||
CakePlugin::loadAll();
|
||||
$this->assertFalse(class_exists('TestPluginOtherLibrary', false));
|
||||
App::uses('TestPluginOtherLibrary', 'TestPlugin.Lib');
|
||||
$this->assertTrue(class_exists('TestPluginOtherLibrary'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -287,10 +287,11 @@ class ExceptionRendererTest extends CakeTestCase {
|
|||
|
||||
ob_start();
|
||||
$ExceptionRenderer->render();
|
||||
$results = ob_get_clean();
|
||||
$result = ob_get_clean();
|
||||
|
||||
$this->assertFalse(method_exists($ExceptionRenderer, 'missingWidgetThing'), 'no method should exist.');
|
||||
$this->assertEquals('error400', $ExceptionRenderer->method, 'incorrect method coercion.');
|
||||
$this->assertContains('coding fail', $result, 'Text should show up.');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -302,13 +303,40 @@ class ExceptionRendererTest extends CakeTestCase {
|
|||
$exception = new OutOfBoundsException('foul ball.');
|
||||
$ExceptionRenderer = new ExceptionRenderer($exception);
|
||||
$ExceptionRenderer->controller->response = $this->getMock('CakeResponse', array('statusCode', '_sendHeader'));
|
||||
$ExceptionRenderer->controller->response->expects($this->once())->method('statusCode')->with(500);
|
||||
$ExceptionRenderer->controller->response->expects($this->once())
|
||||
->method('statusCode')
|
||||
->with(500);
|
||||
|
||||
ob_start();
|
||||
$ExceptionRenderer->render();
|
||||
$results = ob_get_clean();
|
||||
$result = ob_get_clean();
|
||||
|
||||
$this->assertEquals('error500', $ExceptionRenderer->method, 'incorrect method coercion.');
|
||||
$this->assertContains('foul ball.', $result, 'Text should show up as its debug mode.');
|
||||
}
|
||||
|
||||
/**
|
||||
* test that unknown exceptions have messages ignored.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testUnknownExceptionInProduction() {
|
||||
Configure::write('debug', 0);
|
||||
|
||||
$exception = new OutOfBoundsException('foul ball.');
|
||||
$ExceptionRenderer = new ExceptionRenderer($exception);
|
||||
$ExceptionRenderer->controller->response = $this->getMock('CakeResponse', array('statusCode', '_sendHeader'));
|
||||
$ExceptionRenderer->controller->response->expects($this->once())
|
||||
->method('statusCode')
|
||||
->with(500);
|
||||
|
||||
ob_start();
|
||||
$ExceptionRenderer->render();
|
||||
$result = ob_get_clean();
|
||||
|
||||
$this->assertEquals('error500', $ExceptionRenderer->method, 'incorrect method coercion.');
|
||||
$this->assertNotContains('foul ball.', $result, 'Text should no show up.');
|
||||
$this->assertContains('Internal Error', $result, 'Generic message only.');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -324,9 +352,10 @@ class ExceptionRendererTest extends CakeTestCase {
|
|||
|
||||
ob_start();
|
||||
$ExceptionRenderer->render();
|
||||
$results = ob_get_clean();
|
||||
$result = ob_get_clean();
|
||||
|
||||
$this->assertEquals('error500', $ExceptionRenderer->method, 'incorrect method coercion.');
|
||||
$this->assertContains('foul ball.', $result, 'Text should show up as its debug mode.');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -238,7 +238,7 @@ class ContainableBehaviorTest extends CakeTestCase {
|
|||
|
||||
/**
|
||||
* testBeforeFindWithNonExistingBinding method
|
||||
*
|
||||
*
|
||||
* @expectedException PHPUnit_Framework_Error_Warning
|
||||
* @return void
|
||||
*/
|
||||
|
@ -3304,15 +3304,15 @@ class ContainableBehaviorTest extends CakeTestCase {
|
|||
$this->assertEqual($expected, array_keys($result));
|
||||
|
||||
$this->assertTrue(empty($this->Article->hasMany['ArticlesTag']));
|
||||
|
||||
|
||||
$this->JoinA =& ClassRegistry::init('JoinA');
|
||||
$this->JoinB =& ClassRegistry::init('JoinB');
|
||||
$this->JoinC =& ClassRegistry::init('JoinC');
|
||||
|
||||
|
||||
$this->JoinA->Behaviors->attach('Containable');
|
||||
$this->JoinB->Behaviors->attach('Containable');
|
||||
$this->JoinC->Behaviors->attach('Containable');
|
||||
|
||||
|
||||
$this->JoinA->JoinB->find('all', array('contain' => array('JoinA')));
|
||||
$this->JoinA->bindModel(array('hasOne' => array('JoinAsJoinC' => array('joinTable' => 'as_cs'))), false);
|
||||
$result = $this->JoinA->hasOne;
|
||||
|
|
|
@ -566,7 +566,7 @@ class CakeSchemaTest extends CakeTestCase {
|
|||
));
|
||||
$this->assertFalse(isset($read['tables']['missing']['posts_tags']), 'Join table marked as missing');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* testSchemaReadWithAppModel method
|
||||
*
|
||||
|
@ -575,7 +575,7 @@ class CakeSchemaTest extends CakeTestCase {
|
|||
*/
|
||||
public function testSchemaReadWithAppModel() {
|
||||
$connections = ConnectionManager::enumConnectionObjects();
|
||||
ConnectionManager::drop('default');
|
||||
ConnectionManager::drop('default');
|
||||
ConnectionManager::create('default', $connections['test']);
|
||||
try {
|
||||
$read = $this->Schema->read(array(
|
||||
|
|
|
@ -1002,7 +1002,8 @@ class MysqlTest extends CakeTestCase {
|
|||
'order' => array(),
|
||||
'limit' => array(),
|
||||
'offset' => array(),
|
||||
'group' => array()
|
||||
'group' => array(),
|
||||
'callbacks' => null
|
||||
);
|
||||
$queryData['joins'][0]['table'] = $this->Dbo->fullTableName($queryData['joins'][0]['table']);
|
||||
$this->assertEqual($queryData, $expected);
|
||||
|
@ -2554,7 +2555,7 @@ class MysqlTest extends CakeTestCase {
|
|||
*/
|
||||
public function testDropSchemaNoSchema() {
|
||||
$result = $this->Dbo->dropSchema(null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* testOrderParsing method
|
||||
|
|
|
@ -20,6 +20,8 @@ App::uses('Model', 'Model');
|
|||
App::uses('AppModel', 'Model');
|
||||
App::uses('Sqlite', 'Model/Datasource/Database');
|
||||
|
||||
require_once dirname(dirname(dirname(__FILE__))) . DS . 'models.php';
|
||||
|
||||
/**
|
||||
* DboSqliteTestDb class
|
||||
*
|
||||
|
@ -74,7 +76,7 @@ class SqliteTest extends CakeTestCase {
|
|||
*
|
||||
* @var object
|
||||
*/
|
||||
public $fixtures = array('core.user');
|
||||
public $fixtures = array('core.user', 'core.uuid');
|
||||
|
||||
/**
|
||||
* Actual DB connection used in testing
|
||||
|
@ -88,6 +90,7 @@ class SqliteTest extends CakeTestCase {
|
|||
*
|
||||
*/
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
Configure::write('Cache.disable', true);
|
||||
$this->Dbo = ConnectionManager::getDataSource('test');
|
||||
if (!$this->Dbo instanceof Sqlite) {
|
||||
|
@ -100,6 +103,7 @@ class SqliteTest extends CakeTestCase {
|
|||
*
|
||||
*/
|
||||
public function tearDown() {
|
||||
parent::tearDown();
|
||||
Configure::write('Cache.disable', false);
|
||||
}
|
||||
|
||||
|
@ -317,5 +321,58 @@ class SqliteTest extends CakeTestCase {
|
|||
);
|
||||
$this->assertEqual($result['id'], $expected);
|
||||
$this->Dbo->query('DROP TABLE ' . $tableName);
|
||||
|
||||
$tableName = 'uuid_tests';
|
||||
$this->Dbo->query("CREATE TABLE {$tableName} (id CHAR(36) PRIMARY KEY, name VARCHAR, created DATETIME, modified DATETIME)");
|
||||
$Model = new Model(array('name' => 'UuidTest', 'ds' => 'test', 'table' => 'uuid_tests'));
|
||||
$result = $this->Dbo->describe($Model);
|
||||
$expected = array(
|
||||
'type' => 'string',
|
||||
'length' => 36,
|
||||
'null' => false,
|
||||
'default' => null,
|
||||
'key' => 'primary',
|
||||
);
|
||||
$this->assertEqual($result['id'], $expected);
|
||||
$this->Dbo->query('DROP TABLE ' . $tableName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test virtualFields with functions.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVirtualFieldWithFunction() {
|
||||
$this->loadFixtures('User');
|
||||
$User = ClassRegistry::init('User');
|
||||
$User->virtualFields = array('name' => 'SUBSTR(User.user, 5)');
|
||||
|
||||
$result = $User->find('first', array(
|
||||
'conditions' => array('User.user' => 'garrett')
|
||||
));
|
||||
$this->assertEquals('ett', $result['User']['name']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that records can be inserted with uuid primary keys, and
|
||||
* that the primary key is not blank
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testUuidPrimaryKeyInsertion() {
|
||||
$this->loadFixtures('Uuid');
|
||||
$Model = ClassRegistry::init('Uuid');
|
||||
|
||||
$data = array(
|
||||
'title' => 'A uuid should work',
|
||||
'count' => 10
|
||||
);
|
||||
$Model->create($data);
|
||||
$this->assertTrue((bool)$Model->save());
|
||||
$result = $Model->read();
|
||||
|
||||
$this->assertEquals($data['title'], $result['Uuid']['title']);
|
||||
$this->assertTrue(Validation::uuid($result['Uuid']['id']), 'Not a uuid');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ class SqlserverTestDb extends Sqlserver {
|
|||
public function clearFieldMappings() {
|
||||
$this->_fieldMappings = array();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* describe method
|
||||
*
|
||||
|
@ -568,11 +568,11 @@ class SqlserverTest extends CakeTestCase {
|
|||
*/
|
||||
public function testGetPrimaryKey() {
|
||||
$schema = $this->model->schema();
|
||||
|
||||
|
||||
$this->db->describe = $schema;
|
||||
$result = $this->db->getPrimaryKey($this->model);
|
||||
$this->assertEqual($result, 'id');
|
||||
|
||||
|
||||
unset($schema['id']['key']);
|
||||
$this->db->describe = $schema;
|
||||
$result = $this->db->getPrimaryKey($this->model);
|
||||
|
@ -586,7 +586,7 @@ class SqlserverTest extends CakeTestCase {
|
|||
*/
|
||||
public function testInsertMulti() {
|
||||
$this->db->describe = $this->model->schema();
|
||||
|
||||
|
||||
$fields = array('id', 'name', 'login');
|
||||
$values = array(
|
||||
array(1, 'Larry', 'PhpNut'),
|
||||
|
|
|
@ -612,7 +612,7 @@ class DboSourceTest extends CakeTestCase {
|
|||
$result = Set::extract($log['log'], '/query');
|
||||
$expected = array('Query 1', 'Query 2');
|
||||
$this->assertEqual($expected, $result);
|
||||
|
||||
|
||||
$oldDebug = Configure::read('debug');
|
||||
Configure::write('debug', 2);
|
||||
ob_start();
|
||||
|
|
|
@ -146,7 +146,7 @@ class DatabaseSessionTest extends CakeTestCase {
|
|||
$result = $this->storage->read('foo');
|
||||
$expected = 'Some value';
|
||||
$this->assertEquals($expected, $result);
|
||||
|
||||
|
||||
$result = $this->storage->read('made up value');
|
||||
$this->assertFalse($result);
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ class DatabaseSessionTest extends CakeTestCase {
|
|||
*/
|
||||
public function testDestroy() {
|
||||
$this->storage->write('foo', 'Some value');
|
||||
|
||||
|
||||
$this->assertTrue($this->storage->destroy('foo'), 'Destroy failed');
|
||||
$this->assertFalse($this->storage->read('foo'), 'Value still present.');
|
||||
}
|
||||
|
|
|
@ -4933,6 +4933,95 @@ class ModelReadTest extends BaseModelTest {
|
|||
$this->assertEqual($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* testAssociationAfterFindCallbacksDisabled method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testAssociationAfterFindCalbacksDisabled() {
|
||||
$this->loadFixtures('Post', 'Author', 'Comment');
|
||||
$TestModel = new Post();
|
||||
$result = $TestModel->find('all', array('callbacks' => false));
|
||||
$expected = array(
|
||||
array(
|
||||
'Post' => array(
|
||||
'id' => '1',
|
||||
'author_id' => '1',
|
||||
'title' => 'First Post',
|
||||
'body' => 'First Post Body',
|
||||
'published' => 'Y',
|
||||
'created' => '2007-03-18 10:39:23',
|
||||
'updated' => '2007-03-18 10:41:31'
|
||||
),
|
||||
'Author' => array(
|
||||
'id' => '1',
|
||||
'user' => 'mariano',
|
||||
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
|
||||
'created' => '2007-03-17 01:16:23',
|
||||
'updated' => '2007-03-17 01:18:31'
|
||||
)),
|
||||
array(
|
||||
'Post' => array(
|
||||
'id' => '2',
|
||||
'author_id' => '3',
|
||||
'title' => 'Second Post',
|
||||
'body' => 'Second Post Body',
|
||||
'published' => 'Y',
|
||||
'created' => '2007-03-18 10:41:23',
|
||||
'updated' => '2007-03-18 10:43:31'
|
||||
),
|
||||
'Author' => array(
|
||||
'id' => '3',
|
||||
'user' => 'larry',
|
||||
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
|
||||
'created' => '2007-03-17 01:20:23',
|
||||
'updated' => '2007-03-17 01:22:31'
|
||||
)),
|
||||
array(
|
||||
'Post' => array(
|
||||
'id' => '3',
|
||||
'author_id' => '1',
|
||||
'title' => 'Third Post',
|
||||
'body' => 'Third Post Body',
|
||||
'published' => 'Y',
|
||||
'created' => '2007-03-18 10:43:23',
|
||||
'updated' => '2007-03-18 10:45:31'
|
||||
),
|
||||
'Author' => array(
|
||||
'id' => '1',
|
||||
'user' => 'mariano',
|
||||
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
|
||||
'created' => '2007-03-17 01:16:23',
|
||||
'updated' => '2007-03-17 01:18:31'
|
||||
)));
|
||||
$this->assertEqual($expected, $result);
|
||||
unset($TestModel);
|
||||
|
||||
$Author = new Author();
|
||||
$Author->Post->bindModel(array(
|
||||
'hasMany' => array(
|
||||
'Comment' => array(
|
||||
'className' => 'ModifiedComment',
|
||||
'foreignKey' => 'article_id',
|
||||
)
|
||||
)));
|
||||
$result = $Author->find('all', array(
|
||||
'conditions' => array('Author.id' => 1),
|
||||
'recursive' => 2,
|
||||
'callbacks' => false
|
||||
));
|
||||
$expected = array(
|
||||
'id' => 1,
|
||||
'article_id' => 1,
|
||||
'user_id' => 2,
|
||||
'comment' => 'First Comment for First Article',
|
||||
'published' => 'Y',
|
||||
'created' => '2007-03-18 10:45:23',
|
||||
'updated' => '2007-03-18 10:47:31'
|
||||
);
|
||||
$this->assertEqual($result[0]['Post'][0]['Comment'][0], $expected);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the database configuration assigned to the model can be changed using
|
||||
* (before|after)Find callbacks
|
||||
|
|
|
@ -3457,7 +3457,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
)
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
$this->assertTrue($result[0]['Post']['updated'] >= $newTs);
|
||||
$this->assertTrue($result[1]['Post']['updated'] >= $newTs);
|
||||
$this->assertTrue($result[3]['Post']['updated'] >= $newTs);
|
||||
|
@ -4372,7 +4372,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
|
||||
$mock = $this->getMock(
|
||||
'DboSource',
|
||||
array('connect', 'rollback', 'describe', 'create', 'begin'),
|
||||
array('connect', 'rollback', 'describe', 'create', 'begin'),
|
||||
array(),
|
||||
'MockAssociatedTransactionDboSource',
|
||||
false
|
||||
|
@ -4754,7 +4754,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
|
||||
$result = $TestModel->find('all', array(
|
||||
'fields' => array('id', 'author_id', 'title', 'body', 'published'),
|
||||
'recursive' => -1,
|
||||
'recursive' => -1,
|
||||
'order' => 'Post.id ASC'
|
||||
));
|
||||
$errors = array(1 => array('title' => array('This field cannot be left blank')));
|
||||
|
@ -4810,7 +4810,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
|
||||
$result = $TestModel->find('all', array(
|
||||
'fields' => array('id', 'author_id', 'title', 'body', 'published'),
|
||||
'recursive' => -1,
|
||||
'recursive' => -1,
|
||||
'order' => 'Post.id ASC'
|
||||
));
|
||||
$this->assertEqual($expected, $result);
|
||||
|
|
|
@ -85,7 +85,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
);
|
||||
$request = new CakeRequest('some/path');
|
||||
$this->assertEqual($request->query, $_GET);
|
||||
|
||||
|
||||
$_GET = array(
|
||||
'one' => 'param',
|
||||
'two' => 'banana',
|
||||
|
@ -106,7 +106,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
$expected = array('one' => 'something', 'two' => 'else');
|
||||
$this->assertEqual($request->query, $expected);
|
||||
$this->assertEquals('some/path?one=something&two=else', $request->url);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -553,7 +553,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
public function testHost() {
|
||||
$_SERVER['HTTP_HOST'] = 'localhost';
|
||||
$request = new CakeRequest('some/path');
|
||||
|
||||
|
||||
$this->assertEquals('localhost', $request->host());
|
||||
}
|
||||
|
||||
|
@ -617,7 +617,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
$_SERVER['HTTP_USER_AGENT'] = 'Android 2.0';
|
||||
$this->assertTrue($request->is('mobile'));
|
||||
$this->assertTrue($request->isMobile());
|
||||
|
||||
|
||||
$_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());
|
||||
|
@ -789,7 +789,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
public function testAccepts() {
|
||||
$_SERVER['HTTP_ACCEPT'] = 'text/xml,application/xml;q=0.9,application/xhtml+xml,text/html,text/plain,image/png';
|
||||
$request = new CakeRequest('/', false);
|
||||
|
||||
|
||||
$result = $request->accepts();
|
||||
$expected = array(
|
||||
'text/xml', 'application/xhtml+xml', 'text/html', 'text/plain', 'image/png', 'application/xml'
|
||||
|
@ -1054,7 +1054,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'IIS - No rewrite base path',
|
||||
array(
|
||||
'App' => array(
|
||||
'base' => false,
|
||||
'base' => false,
|
||||
'baseUrl' => '/index.php',
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot'
|
||||
|
@ -1083,7 +1083,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'IIS - No rewrite with path, no PHP_SELF',
|
||||
array(
|
||||
'App' => array(
|
||||
'base' => false,
|
||||
'base' => false,
|
||||
'baseUrl' => '/index.php?',
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot'
|
||||
|
@ -1108,21 +1108,21 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'IIS - No rewrite sub dir 2',
|
||||
array(
|
||||
'App' => array(
|
||||
'base' => false,
|
||||
'baseUrl' => '/site/index.php',
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot',
|
||||
'base' => false,
|
||||
'baseUrl' => '/site/index.php',
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot',
|
||||
),
|
||||
'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(),
|
||||
'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
|
||||
),
|
||||
),
|
||||
|
@ -1136,22 +1136,22 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'IIS - No rewrite sub dir 2 with path',
|
||||
array(
|
||||
'App' => array(
|
||||
'base' => false,
|
||||
'base' => false,
|
||||
'baseUrl' => '/site/index.php',
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot'
|
||||
),
|
||||
'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/posts/add',
|
||||
'argv' => array('/posts/add'),
|
||||
'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'),
|
||||
'argc' => 1
|
||||
),
|
||||
),
|
||||
|
@ -1165,16 +1165,16 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'Apache - No rewrite, document root set to webroot, requesting path',
|
||||
array(
|
||||
'App' => array(
|
||||
'base' => false,
|
||||
'baseUrl' => '/index.php',
|
||||
'dir' => 'app',
|
||||
'base' => false,
|
||||
'baseUrl' => '/index.php',
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot'
|
||||
),
|
||||
'SERVER' => array(
|
||||
'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',
|
||||
'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',
|
||||
'SCRIPT_NAME' => '/index.php',
|
||||
'PATH_INFO' => '/posts/index',
|
||||
'PHP_SELF' => '/index.php/posts/index',
|
||||
|
@ -1190,19 +1190,19 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'Apache - No rewrite, document root set to webroot, requesting root',
|
||||
array(
|
||||
'App' => array(
|
||||
'base' => false,
|
||||
'baseUrl' => '/index.php',
|
||||
'dir' => 'app',
|
||||
'base' => false,
|
||||
'baseUrl' => '/index.php',
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot'
|
||||
),
|
||||
'SERVER' => array(
|
||||
'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',
|
||||
'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',
|
||||
),
|
||||
),
|
||||
array(
|
||||
|
@ -1215,16 +1215,16 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'Apache - No rewrite, document root set above top level cake dir, requesting path',
|
||||
array(
|
||||
'App' => array(
|
||||
'base' => false,
|
||||
'baseUrl' => '/site/index.php',
|
||||
'dir' => 'app',
|
||||
'base' => false,
|
||||
'baseUrl' => '/site/index.php',
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot'
|
||||
),
|
||||
'SERVER' => array(
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php',
|
||||
'REQUEST_URI' => '/site/index.php/posts/index',
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php',
|
||||
'REQUEST_URI' => '/site/index.php/posts/index',
|
||||
'SCRIPT_NAME' => '/site/index.php',
|
||||
'PATH_INFO' => '/posts/index',
|
||||
'PHP_SELF' => '/site/index.php/posts/index',
|
||||
|
@ -1240,15 +1240,15 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'Apache - No rewrite, document root set above top level cake dir, request root, no PATH_INFO',
|
||||
array(
|
||||
'App' => array(
|
||||
'base' => false,
|
||||
'baseUrl' => '/site/index.php',
|
||||
'dir' => 'app',
|
||||
'base' => false,
|
||||
'baseUrl' => '/site/index.php',
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot'
|
||||
),
|
||||
'SERVER' => array(
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php',
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php',
|
||||
'REQUEST_URI' => '/site/index.php/',
|
||||
'SCRIPT_NAME' => '/site/index.php',
|
||||
'PHP_SELF' => '/site/index.php/',
|
||||
|
@ -1264,17 +1264,17 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'Apache - No rewrite, document root set above top level cake dir, request path, with GET',
|
||||
array(
|
||||
'App' => array(
|
||||
'base' => false,
|
||||
'baseUrl' => '/site/index.php',
|
||||
'dir' => 'app',
|
||||
'base' => false,
|
||||
'baseUrl' => '/site/index.php',
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot'
|
||||
),
|
||||
'GET' => array('a' => 'b', 'c' => 'd'),
|
||||
'SERVER' => array(
|
||||
'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',
|
||||
'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',
|
||||
'SCRIPT_NAME' => '/site/index.php',
|
||||
'PATH_INFO' => '/posts/index',
|
||||
'PHP_SELF' => '/site/index.php/posts/index',
|
||||
|
@ -1298,9 +1298,9 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'webroot' => 'webroot'
|
||||
),
|
||||
'SERVER' => array(
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php',
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php',
|
||||
'REQUEST_URI' => '/site/',
|
||||
'SCRIPT_NAME' => '/site/app/webroot/index.php',
|
||||
'PHP_SELF' => '/site/app/webroot/index.php',
|
||||
|
@ -1322,9 +1322,9 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'webroot' => 'webroot'
|
||||
),
|
||||
'SERVER' => array(
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php',
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/index.php',
|
||||
'SCRIPT_NAME' => '/site/app/webroot/index.php',
|
||||
'PHP_SELF' => '/site/app/webroot/index.php',
|
||||
'PATH_INFO' => null,
|
||||
|
@ -1347,9 +1347,9 @@ class CakeRequestTest extends CakeTestCase {
|
|||
'webroot' => 'webroot'
|
||||
),
|
||||
'SERVER' => array(
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents/site/app/webroot',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/app/webroot/index.php',
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents/site/app/webroot',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/app/webroot/index.php',
|
||||
'SCRIPT_NAME' => '/index.php',
|
||||
'PHP_SELF' => '/index.php',
|
||||
'PATH_INFO' => null,
|
||||
|
@ -1373,9 +1373,9 @@ class CakeRequestTest extends CakeTestCase {
|
|||
),
|
||||
'GET' => array('/posts/add' => ''),
|
||||
'SERVER' => array(
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents/site/app/webroot',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/app/webroot/index.php',
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents/site/app/webroot',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/app/webroot/index.php',
|
||||
'SCRIPT_NAME' => '/index.php',
|
||||
'QUERY_STRING' => '/posts/add&',
|
||||
'PHP_SELF' => '/index.php',
|
||||
|
@ -1445,7 +1445,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
$request = new CakeRequest('posts/index');
|
||||
$result = $request->data('Model.new_value', 'new value');
|
||||
$this->assertSame($result, $request, 'Return was not $this');
|
||||
|
||||
|
||||
$this->assertEquals($request->data['Model']['new_value'], 'new value');
|
||||
|
||||
$request->data('Post.title', 'New post')->data('Comment.1.author', 'Mark');
|
||||
|
@ -1463,13 +1463,13 @@ class CakeRequestTest extends CakeTestCase {
|
|||
|
||||
$request->data('Post.null', null);
|
||||
$this->assertNull($request->data['Post']['null']);
|
||||
|
||||
|
||||
$request->data('Post.false', false);
|
||||
$this->assertFalse($request->data['Post']['false']);
|
||||
|
||||
|
||||
$request->data('Post.zero', 0);
|
||||
$this->assertSame(0, $request->data['Post']['zero']);
|
||||
|
||||
|
||||
$request->data('Post.empty', '');
|
||||
$this->assertSame('', $request->data['Post']['empty']);
|
||||
}
|
||||
|
@ -1487,7 +1487,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'es_mx;en_ca';
|
||||
$result = CakeRequest::acceptLanguage();
|
||||
$this->assertEquals(array('es-mx', 'en-ca'), $result, 'Languages do not match');
|
||||
|
||||
|
||||
$result = CakeRequest::acceptLanguage('en-ca');
|
||||
$this->assertTrue($result);
|
||||
|
||||
|
@ -1496,7 +1496,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* test the here() method
|
||||
* test the here() method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
@ -1528,7 +1528,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
$request = $this->getMock('CakeRequest', array('_readInput'));
|
||||
$request->expects($this->once())->method('_readInput')
|
||||
->will($this->returnValue('I came from stdin'));
|
||||
|
||||
|
||||
$result = $request->input();
|
||||
$this->assertEquals('I came from stdin', $result);
|
||||
}
|
||||
|
@ -1547,7 +1547,7 @@ class CakeRequestTest extends CakeTestCase {
|
|||
$this->assertEquals(array('name' => 'value'), (array)$result);
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Test input() decoding with additional arguments.
|
||||
*
|
||||
* @return void
|
||||
|
@ -1567,7 +1567,7 @@ XML;
|
|||
$result = $request->input('Xml::build', array('return' => 'domdocument'));
|
||||
$this->assertInstanceOf('DOMDocument', $result);
|
||||
$this->assertEquals(
|
||||
'Test',
|
||||
'Test',
|
||||
$result->getElementsByTagName('title')->item(0)->childNodes->item(0)->wholeText
|
||||
);
|
||||
}
|
||||
|
|
|
@ -370,4 +370,59 @@ class CakeResponseTest extends CakeTestCase {
|
|||
$result = $response->mapType(array('application/json', 'application/xhtml+xml', 'text/css'));
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the send and setting of Content-Length
|
||||
*
|
||||
*/
|
||||
public function testSendContentLength() {
|
||||
$response = $this->getMock('CakeResponse', array('_sendHeader', '_sendContent'));
|
||||
$response->body('the response body');
|
||||
$response->expects($this->once())->method('_sendContent')->with('the response body');
|
||||
$response->expects($this->at(0))
|
||||
->method('_sendHeader')->with('HTTP/1.1 200 OK');
|
||||
$response->expects($this->at(1))
|
||||
->method('_sendHeader')->with('Content-Type', 'text/html; charset=UTF-8');
|
||||
$response->expects($this->at(2))
|
||||
->method('_sendHeader')->with('Content-Length', strlen('the response body'));
|
||||
$response->send();
|
||||
|
||||
$response = $this->getMock('CakeResponse', array('_sendHeader', '_sendContent'));
|
||||
$body = '長い長い長いSubjectの場合はfoldingするのが正しいんだけどいったいどうなるんだろう?';
|
||||
$response->body($body);
|
||||
$response->expects($this->once())->method('_sendContent')->with($body);
|
||||
$response->expects($this->at(0))
|
||||
->method('_sendHeader')->with('HTTP/1.1 200 OK');
|
||||
$response->expects($this->at(1))
|
||||
->method('_sendHeader')->with('Content-Type', 'text/html; charset=UTF-8');
|
||||
$response->expects($this->at(2))
|
||||
->method('_sendHeader')->with('Content-Length', 116);
|
||||
$response->send();
|
||||
|
||||
$response = $this->getMock('CakeResponse', array('_sendHeader', '_sendContent', 'outputCompressed'));
|
||||
$body = '長い長い長いSubjectの場合はfoldingするのが正しいんだけどいったいどうなるんだろう?';
|
||||
$response->body($body);
|
||||
$response->expects($this->once())->method('outputCompressed')->will($this->returnValue(true));
|
||||
$response->expects($this->once())->method('_sendContent')->with($body);
|
||||
$response->expects($this->exactly(2))->method('_sendHeader');
|
||||
$response->send();
|
||||
|
||||
$response = $this->getMock('CakeResponse', array('_sendHeader', '_sendContent', 'outputCompressed'));
|
||||
$body = 'hwy';
|
||||
$response->body($body);
|
||||
$response->header('Content-Length', 1);
|
||||
$response->expects($this->never())->method('outputCompressed');
|
||||
$response->expects($this->once())->method('_sendContent')->with($body);
|
||||
$response->expects($this->at(2))
|
||||
->method('_sendHeader')->with('Content-Length', 1);
|
||||
$response->send();
|
||||
|
||||
$response = $this->getMock('CakeResponse', array('_sendHeader', '_sendContent'));
|
||||
$body = 'content';
|
||||
$response->statusCode(301);
|
||||
$response->body($body);
|
||||
$response->expects($this->once())->method('_sendContent')->with($body);
|
||||
$response->expects($this->exactly(2))->method('_sendHeader');
|
||||
$response->send();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1291,6 +1291,14 @@ class DispatcherTest extends CakeTestCase {
|
|||
$result = ob_get_clean();
|
||||
$this->assertEqual('htc file', $result);
|
||||
|
||||
$response = $this->getMock('CakeResponse', array('_sendHeader'));
|
||||
ob_start();
|
||||
$Dispatcher->asset('test_plugin/css/unknown.extension', $response);
|
||||
ob_end_clean();
|
||||
$expected = filesize(CakePlugin::path('TestPlugin') . 'webroot' . DS . 'css' . DS . 'unknown.extension');
|
||||
$headers = $response->header();
|
||||
$this->assertEqual($expected, $headers['Content-Length']);
|
||||
|
||||
if (php_sapi_name() == 'cli') {
|
||||
while (ob_get_level()) {
|
||||
ob_get_clean();
|
||||
|
|
|
@ -369,6 +369,8 @@ class CakeRouteTest extends CakeTestCase {
|
|||
$result = $route->match(array('controller' => 'posts', 'action' => 'view', 'plugin' => null, 5, 'page' => 1, 'limit' => 20, 'order' => 'title'));
|
||||
$this->assertEqual($result, '/posts/view/5/page:1/limit:20/order:title');
|
||||
|
||||
$result = $route->match(array('controller' => 'posts', 'action' => 'view', 'plugin' => null, 'word space', 'order' => 'Θ'));
|
||||
$this->assertEqual($result, '/posts/view/word%20space/order:%CE%98');
|
||||
|
||||
$route = new CakeRoute('/test2/*', array('controller' => 'pages', 'action' => 'display', 2));
|
||||
$result = $route->match(array('controller' => 'pages', 'action' => 'display', 1));
|
||||
|
@ -395,6 +397,10 @@ class CakeRouteTest extends CakeTestCase {
|
|||
|
||||
$result = $route->parse('/posts/index/page[]:%CE%98');
|
||||
$this->assertEquals('Θ', $result['named']['page'][0]);
|
||||
|
||||
$result = $route->parse('/posts/index/something%20else/page[]:%CE%98');
|
||||
$this->assertEquals('Θ', $result['named']['page'][0]);
|
||||
$this->assertEquals('something else', $result['pass'][0]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -146,7 +146,7 @@ class RouterTest extends CakeTestCase {
|
|||
'named' => array(),
|
||||
'plugin' => 'test_plugin',
|
||||
'controller' => 'test_plugin',
|
||||
'action' => 'index',
|
||||
'action' => 'index',
|
||||
'[method]' => 'GET'
|
||||
);
|
||||
$this->assertEqual($result, $expected);
|
||||
|
@ -186,7 +186,7 @@ class RouterTest extends CakeTestCase {
|
|||
'named' => array(),
|
||||
'plugin' => 'test_plugin',
|
||||
'controller' => 'test_plugin',
|
||||
'action' => 'index',
|
||||
'action' => 'index',
|
||||
'[method]' => 'GET'
|
||||
);
|
||||
$this->assertEqual($result, $expected);
|
||||
|
|
|
@ -419,9 +419,9 @@ class CakeTestFixtureTest extends CakeTestCase {
|
|||
/**
|
||||
* Helper function to be used as callback and store the parameters of an insertMulti call
|
||||
*
|
||||
* @param string $table
|
||||
* @param string $fields
|
||||
* @param string $values
|
||||
* @param string $table
|
||||
* @param string $fields
|
||||
* @param string $values
|
||||
* @return boolean true
|
||||
*/
|
||||
function _insertCallback($table, $fields, $values) {
|
||||
|
|
|
@ -423,7 +423,7 @@ TEXT;
|
|||
*
|
||||
* @return void
|
||||
*/
|
||||
function testNoDbCredentials() {
|
||||
public function testNoDbCredentials() {
|
||||
$config = array(
|
||||
'driver' => 'mysql',
|
||||
'persistent' => false,
|
||||
|
@ -449,4 +449,19 @@ TEXT;
|
|||
|
||||
$this->assertEqual($expected, $output);
|
||||
}
|
||||
|
||||
/**
|
||||
* test trace exclude
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testTraceExclude() {
|
||||
$result = Debugger::trace();
|
||||
$this->assertPattern('/^DebuggerTest::testTraceExclude/', $result);
|
||||
|
||||
$result = Debugger::trace(array(
|
||||
'exclude' => array('DebuggerTest::testTraceExclude')
|
||||
));
|
||||
$this->assertNoPattern('/^DebuggerTest::testTraceExclude/', $result);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -257,7 +257,7 @@ class ObjectCollectionTest extends CakeTestCase {
|
|||
$this->Objects->TriggerMockSecond->expects($this->once())
|
||||
->method('callback')
|
||||
->will($this->returnValue(array('three', 'four')));
|
||||
|
||||
|
||||
$result = $this->Objects->trigger('callback', array(), array('collectReturn' => true));
|
||||
$expected = array(
|
||||
array('one', 'two'),
|
||||
|
@ -402,7 +402,7 @@ class ObjectCollectionTest extends CakeTestCase {
|
|||
'Apple' => array('class' => 'Banana.Apple', 'settings' => array('foo' => 'bar')),
|
||||
);
|
||||
$this->assertEquals($expected, $result);
|
||||
|
||||
|
||||
// This is the result after Controller::_mergeVars
|
||||
$components = array(
|
||||
'Html' => null,
|
||||
|
|
|
@ -134,7 +134,7 @@ class SecurityTest extends CakeTestCase {
|
|||
$key = 'my_key';
|
||||
$result = Security::cipher($txt, $key);
|
||||
$this->assertEqual(Security::cipher($result, $key), $txt);
|
||||
|
||||
|
||||
$txt = 123456;
|
||||
$key = 'my_key';
|
||||
$result = Security::cipher($txt, $key);
|
||||
|
|
|
@ -104,6 +104,7 @@ class Contact extends CakeTestModel {
|
|||
'non_existing' => array(),
|
||||
'idontexist' => array(),
|
||||
'imrequired' => array('rule' => array('between', 5, 30), 'allowEmpty' => false),
|
||||
'string_required' => 'notEmpty',
|
||||
'imalsorequired' => array('rule' => 'alphaNumeric', 'allowEmpty' => false),
|
||||
'imrequiredtoo' => array('rule' => 'notEmpty'),
|
||||
'required_one' => array('required' => array('rule' => array('notEmpty'))),
|
||||
|
@ -845,7 +846,7 @@ class FormHelperTest extends CakeTestCase {
|
|||
);
|
||||
$this->assertTags($result, $expected);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Tests correct generation of number fields for integer fields
|
||||
*
|
||||
|
@ -1610,7 +1611,7 @@ class FormHelperTest extends CakeTestCase {
|
|||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
|
||||
$result = $this->Form->error(
|
||||
'ValidateUser.email', 'Invalid email', array('wrap' => false)
|
||||
);
|
||||
|
@ -6584,6 +6585,141 @@ class FormHelperTest extends CakeTestCase {
|
|||
$this->assertTags($result, $expected);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that required fields are created for various types of validation.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testFormInputRequiredDetection() {
|
||||
$this->Form->create('Contact');
|
||||
|
||||
$result = $this->Form->input('Contact.non_existing');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactNonExisting'),
|
||||
'Non Existing',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][non_existing]',
|
||||
'id' => 'ContactNonExisting'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imrequired');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactImrequired'),
|
||||
'Imrequired',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imrequired]',
|
||||
'id' => 'ContactImrequired'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imalsorequired');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactImalsorequired'),
|
||||
'Imalsorequired',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imalsorequired]',
|
||||
'id' => 'ContactImalsorequired'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imrequiredtoo');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactImrequiredtoo'),
|
||||
'Imrequiredtoo',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imrequiredtoo]',
|
||||
'id' => 'ContactImrequiredtoo'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.required_one');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactRequiredOne'),
|
||||
'Required One',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][required_one]',
|
||||
'id' => 'ContactRequiredOne'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.string_required');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactStringRequired'),
|
||||
'String Required',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][string_required]',
|
||||
'id' => 'ContactStringRequired'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imnotrequired');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text'),
|
||||
'label' => array('for' => 'ContactImnotrequired'),
|
||||
'Imnotrequired',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imnotrequired]',
|
||||
'id' => 'ContactImnotrequired'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imalsonotrequired');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text'),
|
||||
'label' => array('for' => 'ContactImalsonotrequired'),
|
||||
'Imalsonotrequired',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imalsonotrequired]',
|
||||
'id' => 'ContactImalsonotrequired'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imnotrequiredeither');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text'),
|
||||
'label' => array('for' => 'ContactImnotrequiredeither'),
|
||||
'Imnotrequiredeither',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imnotrequiredeither]',
|
||||
'id' => 'ContactImnotrequiredeither'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
}
|
||||
|
||||
/**
|
||||
* testFormMagicInput method
|
||||
*
|
||||
|
@ -6671,117 +6807,6 @@ class FormHelperTest extends CakeTestCase {
|
|||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.non_existing');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactNonExisting'),
|
||||
'Non Existing',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][non_existing]',
|
||||
'id' => 'ContactNonExisting'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imrequired');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactImrequired'),
|
||||
'Imrequired',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imrequired]',
|
||||
'id' => 'ContactImrequired'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imalsorequired');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactImalsorequired'),
|
||||
'Imalsorequired',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imalsorequired]',
|
||||
'id' => 'ContactImalsorequired'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imrequiredtoo');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactImrequiredtoo'),
|
||||
'Imrequiredtoo',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imrequiredtoo]',
|
||||
'id' => 'ContactImrequiredtoo'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.required_one');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text required'),
|
||||
'label' => array('for' => 'ContactRequiredOne'),
|
||||
'Required One',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][required_one]',
|
||||
'id' => 'ContactRequiredOne'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imnotrequired');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text'),
|
||||
'label' => array('for' => 'ContactImnotrequired'),
|
||||
'Imnotrequired',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imnotrequired]',
|
||||
'id' => 'ContactImnotrequired'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imalsonotrequired');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text'),
|
||||
'label' => array('for' => 'ContactImalsonotrequired'),
|
||||
'Imalsonotrequired',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imalsonotrequired]',
|
||||
'id' => 'ContactImalsonotrequired'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Form->input('Contact.imnotrequiredeither');
|
||||
$expected = array(
|
||||
'div' => array('class' => 'input text'),
|
||||
'label' => array('for' => 'ContactImnotrequiredeither'),
|
||||
'Imnotrequiredeither',
|
||||
'/label',
|
||||
'input' => array(
|
||||
'type' => 'text', 'name' => 'data[Contact][imnotrequiredeither]',
|
||||
'id' => 'ContactImnotrequiredeither'
|
||||
),
|
||||
'/div'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
extract($this->dateRegex);
|
||||
$now = strtotime('now');
|
||||
|
@ -7479,7 +7504,7 @@ class FormHelperTest extends CakeTestCase {
|
|||
'input' => array('type' => 'text', 'name' => 'data[User][query]', 'id' => 'UserQuery', 'value' => 'test')
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
|
||||
$result = $this->Form->input('User.website', array('type' => 'url', 'value' => 'http://domain.tld', 'div' => false, 'label' => false));
|
||||
$expected = array(
|
||||
'input' => array('type' => 'url', 'name' => 'data[User][website]', 'id' => 'UserWebsite', 'value' => 'http://domain.tld')
|
||||
|
|
|
@ -798,7 +798,7 @@ class HtmlHelperTest extends CakeTestCase {
|
|||
*/
|
||||
public function testBreadcrumb() {
|
||||
$this->assertNull($this->Html->getCrumbs());
|
||||
|
||||
|
||||
$this->Html->addCrumb('First', '#first');
|
||||
$this->Html->addCrumb('Second', '#second');
|
||||
$this->Html->addCrumb('Third', '#third');
|
||||
|
|
|
@ -576,7 +576,7 @@ class RssHelperTest extends CakeTestCase {
|
|||
$File = new File($tmpFile, true, '0777');
|
||||
$this->assertTrue($File->write('123'), 'Could not write to ' . $tmpFile);
|
||||
clearstatcache(true, $tmpFile);
|
||||
|
||||
|
||||
$item = array(
|
||||
'title' => array(
|
||||
'value' => 'My Title',
|
||||
|
|
|
@ -403,8 +403,8 @@ class TimeHelperTest extends CakeTestCase {
|
|||
$yourTimezone = new DateTimeZone($timezone);
|
||||
$yourTime = new DateTime('now', $yourTimezone);
|
||||
$userOffset = $yourTimezone->getOffset($yourTime) / HOUR;
|
||||
$this->assertEqual($yourTime->format('r'), $this->Time->toRss(time(), $userOffset));
|
||||
}
|
||||
$this->assertEqual($yourTime->format('r'), $this->Time->toRss(time(), $userOffset));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -255,7 +255,7 @@ class HelperTest extends CakeTestCase {
|
|||
*/
|
||||
public function testSetEntityScoped() {
|
||||
$this->Helper->setEntity('HelperTestPost', true);
|
||||
$this->assertEquals(array('HelperTestPost'), $this->Helper->entity());
|
||||
$this->assertEquals(array('HelperTestPost'), $this->Helper->entity());
|
||||
|
||||
$this->Helper->setEntity('id');
|
||||
$expected = array('HelperTestPost', 'id');
|
||||
|
@ -310,6 +310,19 @@ class HelperTest extends CakeTestCase {
|
|||
$this->assertEquals('HelperTestComment', $this->Helper->model());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test creating saveMany() compatible entities
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testSetEntitySaveMany() {
|
||||
$this->Helper->setEntity('HelperTestPost', true);
|
||||
|
||||
$this->Helper->setEntity('0.HelperTestPost.id');
|
||||
$expected = array('0', 'HelperTestPost', 'id');
|
||||
$this->assertEquals($expected, $this->Helper->entity());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that setEntity doesn't make CamelCase fields that are not associations an
|
||||
* associated model.
|
||||
|
|
|
@ -11,7 +11,7 @@ class FixturizedTestCase extends CakeTestCase {
|
|||
|
||||
/**
|
||||
* Fixtures to use in this thes
|
||||
* @var array
|
||||
* @var array
|
||||
*/
|
||||
public $fixtures = array('core.category');
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
class TestAppCacheEngine extends CacheEngine {
|
||||
|
||||
public function write($key, $value, $duration) {
|
||||
public function write($key, $value, $duration) {
|
||||
if ($key == 'fail') {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -22,6 +22,6 @@ App::uses('CakeLogInterface', 'Log');
|
|||
class TestAppLog implements CakeLogInterface {
|
||||
|
||||
public function write($type, $message) {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ mon "<U0031><U6708>";"<U0032><U6708>";/
|
|||
"<U0039><U6708>";"<U0031><U0030><U6708>";/
|
||||
"<U0031><U0031><U6708>";"<U0031><U0032><U6708>"
|
||||
% Appropriate date and time representation (%c)
|
||||
%
|
||||
%
|
||||
d_t_fmt "<U0025><U0059><U5E74><U0025><U006D><U6708><U0025><U0064><U65E5><U0020><U0025><U0048><U6642><U0025><U004D><U5206><U0025><U0053><U79D2>"
|
||||
%
|
||||
% Appropriate date representation (%x)
|
||||
|
@ -31,18 +31,18 @@ d_t_fmt "<U0025><U0059><U5E74><U0025><U006D><U6708><U0025><U0064><U65E5><U0020><
|
|||
d_fmt "<U0025><U0059><U5E74><U0025><U006D><U6708><U0025><U0064><U65E5>"
|
||||
%
|
||||
% Appropriate time representation (%X)
|
||||
%
|
||||
%
|
||||
t_fmt "<U0025><U0048><U6642><U0025><U004D><U5206><U0025><U0053><U79D2>"
|
||||
%
|
||||
% Appropriate AM/PM time representation (%r)
|
||||
%
|
||||
%
|
||||
t_fmt_ampm "<U0025><U0070><U0025><U0049><U6642><U0025><U004D><U5206><U0025><U0053><U79D2>"
|
||||
%
|
||||
% Strings for AM/PM
|
||||
%
|
||||
am_pm "<U5348><U524D>";"<U5348><U5F8C>"
|
||||
%
|
||||
% Appropriate date representation (date(1))
|
||||
% Appropriate date representation (date(1))
|
||||
date_fmt "<U0025><U0059><U5E74><U0020><U0025><U0062><U0020><U0025>/
|
||||
<U0065><U65E5><U0020><U0025><U0041><U0020><U0025><U0048><U003A><U0025>/
|
||||
<U004D><U003A><U0025><U0053><U0020><U0025><U005A>"
|
||||
|
|
|
@ -10,22 +10,22 @@ class TestAppLibSession implements CakeSessionHandlerInterface {
|
|||
}
|
||||
|
||||
public function close() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function read($id) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function write($id, $data) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function destroy($id) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function gc($expires = null) {
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -17,5 +17,5 @@
|
|||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
||||
*/
|
||||
class OtherTaskTask extends Shell {
|
||||
|
||||
|
||||
}
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
class TestPluginController extends TestPluginAppController {
|
||||
public $uses = array();
|
||||
|
||||
|
||||
public function index() {
|
||||
$this->autoRender = false;
|
||||
}
|
||||
|
|
|
@ -29,5 +29,5 @@ class TestPluginCacheEngine extends CacheEngine {
|
|||
public function delete($key) { }
|
||||
|
||||
public function clear($check) { }
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -19,6 +19,6 @@
|
|||
class TestPluginLog implements CakeLogInterface {
|
||||
|
||||
public function write($type, $message) {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
/**
|
||||
* Test Suite TestPlugin Other Library
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
* CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing>
|
||||
* Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice
|
||||
*
|
||||
* @copyright Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
* @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests
|
||||
* @package Cake.Test.test_app.Plugin.TestPlugin.Lib
|
||||
* @since CakePHP(tm) v 2.0.1
|
||||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
||||
*/
|
||||
class TestPluginOtherLibrary {}
|
|
@ -9,22 +9,22 @@ class TestPluginSession implements CakeSessionHandlerInterface {
|
|||
}
|
||||
|
||||
public function close() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function read($id) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function write($id, $data) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function destroy($id) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function gc($expires = null) {
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
|
||||
class TestPluginAppHelper extends AppHelper {
|
||||
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
<?php
|
||||
<?php
|
||||
echo $html;
|
||||
echo $this->Html->link('Test link', '#');
|
||||
?>
|
|
@ -387,8 +387,8 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase {
|
|||
* @param string $message the text to display if the assertion is not correct
|
||||
* @return void
|
||||
*/
|
||||
protected function assertEqual($result, $expected, $message = '') {
|
||||
return $this->assertEquals($expected, $result, $message);
|
||||
protected static function assertEqual($result, $expected, $message = '') {
|
||||
return self::assertEquals($expected, $result, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -399,8 +399,8 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase {
|
|||
* @param string $message the text to display if the assertion is not correct
|
||||
* @return void
|
||||
*/
|
||||
protected function assertNotEqual($result, $expected, $message = '') {
|
||||
return $this->assertNotEquals($expected, $result, $message);
|
||||
protected static function assertNotEqual($result, $expected, $message = '') {
|
||||
return self::assertNotEquals($expected, $result, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -411,8 +411,8 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase {
|
|||
* @param string $message the text to display if the assertion is not correct
|
||||
* @return void
|
||||
*/
|
||||
protected function assertPattern($pattern, $string, $message = '') {
|
||||
return $this->assertRegExp($pattern, $string, $message);
|
||||
protected static function assertPattern($pattern, $string, $message = '') {
|
||||
return self::assertRegExp($pattern, $string, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -423,8 +423,8 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase {
|
|||
* @param string $message the text to display if the assertion is not correct
|
||||
* @return void
|
||||
*/
|
||||
protected function assertIdentical($actual, $expected, $message = '') {
|
||||
return $this->assertSame($expected, $actual, $message);
|
||||
protected static function assertIdentical($actual, $expected, $message = '') {
|
||||
return self::assertSame($expected, $actual, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -435,8 +435,8 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase {
|
|||
* @param string $message the text to display if the assertion is not correct
|
||||
* @return void
|
||||
*/
|
||||
protected function assertNotIdentical($actual, $expected, $message = '') {
|
||||
return $this->assertNotSame($expected, $actual, $message);
|
||||
protected static function assertNotIdentical($actual, $expected, $message = '') {
|
||||
return self::assertNotSame($expected, $actual, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -447,8 +447,8 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase {
|
|||
* @param string $message the text to display if the assertion is not correct
|
||||
* @return void
|
||||
*/
|
||||
protected function assertNoPattern($pattern, $string, $message = '') {
|
||||
return $this->assertNotRegExp($pattern, $string, $message);
|
||||
protected static function assertNoPattern($pattern, $string, $message = '') {
|
||||
return self::assertNotRegExp($pattern, $string, $message);
|
||||
}
|
||||
|
||||
protected function assertNoErrors() {
|
||||
|
@ -487,20 +487,20 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase {
|
|||
* @param string $message the text to display if the assertion is not correct
|
||||
* @return void
|
||||
*/
|
||||
protected function assertReference(&$first, &$second, $message = '') {
|
||||
return $this->assertSame($first, $second, $message);
|
||||
protected static function assertReference(&$first, &$second, $message = '') {
|
||||
return self::assertSame($first, $second, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compatibility wrapper for assertIsA
|
||||
*
|
||||
* @param string $object
|
||||
* @param string $type
|
||||
* @param string $message
|
||||
* @param string $object
|
||||
* @param string $type
|
||||
* @param string $message
|
||||
* @return void
|
||||
*/
|
||||
protected function assertIsA($object, $type, $message = '') {
|
||||
return $this->assertInstanceOf($type, $object, $message);
|
||||
protected static function assertIsA($object, $type, $message = '') {
|
||||
return self::assertInstanceOf($type, $object, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -512,10 +512,10 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase {
|
|||
* @param string $message the text to display if the assertion is not correct
|
||||
* @return void
|
||||
*/
|
||||
protected function assertWithinMargin($result, $expected, $margin, $message = '') {
|
||||
protected static function assertWithinMargin($result, $expected, $margin, $message = '') {
|
||||
$upper = $result + $margin;
|
||||
$lower = $result - $margin;
|
||||
$this->assertTrue((($expected <= $upper) && ($expected >= $lower)), $message);
|
||||
return self::assertTrue((($expected <= $upper) && ($expected >= $lower)), $message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -38,8 +38,8 @@ class CakeTestRunner extends PHPUnit_TextUI_TestRunner {
|
|||
/**
|
||||
* Actually run a suite of tests. Cake initializes fixtures here using the chosen fixture manager
|
||||
*
|
||||
* @param PHPUnit_Framework_Test $suite
|
||||
* @param array $arguments
|
||||
* @param PHPUnit_Framework_Test $suite
|
||||
* @param array $arguments
|
||||
* @return void
|
||||
*/
|
||||
public function doRun(PHPUnit_Framework_Test $suite, array $arguments = array()) {
|
||||
|
|
|
@ -59,12 +59,21 @@ class ControllerTestDispatcher extends Dispatcher {
|
|||
$this->testController->helpers = array_merge(array('InterceptContent'), $this->testController->helpers);
|
||||
$this->testController->setRequest($request);
|
||||
$this->testController->response = $this->response;
|
||||
foreach ($this->testController->Components->attached() as $component) {
|
||||
$object = $this->testController->Components->{$component};
|
||||
if (isset($object->response)) {
|
||||
$object->response = $response;
|
||||
}
|
||||
}
|
||||
if (isset($object->request)) {
|
||||
$object->request = $request;
|
||||
}
|
||||
return $this->testController;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads routes and resets if the test case dictates it should
|
||||
*
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function _loadRoutes() {
|
||||
|
@ -190,7 +199,7 @@ abstract class ControllerTestCase extends CakeTestCase {
|
|||
* - `vars` Get the set view variables.
|
||||
* - `view` Get the rendered view, without a layout.
|
||||
* - `contents` Get the rendered view including the layout.
|
||||
* - `result` Get the return value of the controller action. Useful
|
||||
* - `result` Get the return value of the controller action. Useful
|
||||
* for testing requestAction methods.
|
||||
*
|
||||
* @param string $url The url to test
|
||||
|
@ -260,7 +269,7 @@ abstract class ControllerTestCase extends CakeTestCase {
|
|||
* Generates a mocked controller and mocks any classes passed to `$mocks`. By
|
||||
* default, `_stop()` is stubbed as is sending the response headers, so to not
|
||||
* interfere with testing.
|
||||
*
|
||||
*
|
||||
* ### Mocks:
|
||||
*
|
||||
* - `methods` Methods to mock on the controller. `_stop()` is mocked by default
|
||||
|
@ -289,10 +298,10 @@ abstract class ControllerTestCase extends CakeTestCase {
|
|||
));
|
||||
}
|
||||
ClassRegistry::flush();
|
||||
|
||||
|
||||
$mocks = array_merge_recursive(array(
|
||||
'methods' => array('_stop'),
|
||||
'models' => array(),
|
||||
'models' => array(),
|
||||
'components' => array()
|
||||
), (array)$mocks);
|
||||
|
||||
|
|
|
@ -188,7 +188,7 @@ class CakeTestFixture {
|
|||
}
|
||||
$this->Schema->build(array($this->table => $this->fields));
|
||||
try {
|
||||
|
||||
|
||||
$db->execute($db->dropSchema($this->Schema), array('log' => false));
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
|
|
|
@ -61,7 +61,7 @@ class CakeTextReporter extends CakeBaseReporter {
|
|||
$context = $context[2];
|
||||
|
||||
printf(
|
||||
"FAIL on line %s\n%s in\n%s %s()\n\n",
|
||||
"FAIL on line %s\n%s in\n%s %s()\n\n",
|
||||
$context['line'], $message->toString(), $context['file'], $realContext['function']
|
||||
);
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ class CakeTextReporter extends CakeBaseReporter {
|
|||
echo "FAILURES!!!\n";
|
||||
}
|
||||
|
||||
echo "Test cases run: " . $result->count() .
|
||||
echo "Test cases run: " . $result->count() .
|
||||
"/" . ($result->count() - $result->skippedCount()) .
|
||||
', Passes: ' . $this->numAssertions .
|
||||
', Failures: ' . $result->failureCount() .
|
||||
|
|
|
@ -285,9 +285,9 @@ class Debugger {
|
|||
'args' => false,
|
||||
'start' => 0,
|
||||
'scope' => null,
|
||||
'exclude' => null
|
||||
'exclude' => array('call_user_func_array', 'trigger_error')
|
||||
);
|
||||
$options += $defaults;
|
||||
$options = Set::merge($defaults, $options);
|
||||
|
||||
$backtrace = debug_backtrace();
|
||||
$count = count($backtrace);
|
||||
|
@ -302,13 +302,15 @@ class Debugger {
|
|||
|
||||
for ($i = $options['start']; $i < $count && $i < $options['depth']; $i++) {
|
||||
$trace = array_merge(array('file' => '[internal]', 'line' => '??'), $backtrace[$i]);
|
||||
$signature = $reference = '[main]';
|
||||
|
||||
if (isset($backtrace[$i + 1])) {
|
||||
$next = array_merge($_trace, $backtrace[$i + 1]);
|
||||
$reference = $next['function'];
|
||||
$signature = $reference = $next['function'];
|
||||
|
||||
if (!empty($next['class'])) {
|
||||
$reference = $next['class'] . '::' . $reference . '(';
|
||||
$signature = $next['class'] . '::' . $next['function'];
|
||||
$reference = $signature . '(';
|
||||
if ($options['args'] && isset($next['args'])) {
|
||||
$args = array();
|
||||
foreach ($next['args'] as $arg) {
|
||||
|
@ -318,10 +320,8 @@ class Debugger {
|
|||
}
|
||||
$reference .= ')';
|
||||
}
|
||||
} else {
|
||||
$reference = '[main]';
|
||||
}
|
||||
if (in_array($reference, array('call_user_func_array', 'trigger_error'))) {
|
||||
if (in_array($signature, $options['exclude'])) {
|
||||
continue;
|
||||
}
|
||||
if ($options['format'] == 'points' && $trace['file'] != '[internal]') {
|
||||
|
@ -572,8 +572,8 @@ class Debugger {
|
|||
*
|
||||
* `Debugger::addFormat('custom', $data);`
|
||||
*
|
||||
* Where $data is an array of strings that use String::insert() variable
|
||||
* replacement. The template vars should be in a `{:id}` style.
|
||||
* Where $data is an array of strings that use String::insert() variable
|
||||
* replacement. The template vars should be in a `{:id}` style.
|
||||
* An error formatter can have the following keys:
|
||||
*
|
||||
* - 'error' - Used for the container for the error message. Gets the following template
|
||||
|
@ -582,11 +582,11 @@ class Debugger {
|
|||
* the contents of the other template keys.
|
||||
* - 'trace' - The container for a stack trace. Gets the following template
|
||||
* variables: `trace`
|
||||
* - 'context' - The container element for the context variables.
|
||||
* - 'context' - The container element for the context variables.
|
||||
* Gets the following templates: `id`, `context`
|
||||
* - 'links' - An array of HTML links that are used for creating links to other resources.
|
||||
* Typically this is used to create javascript links to open other sections.
|
||||
* Link keys, are: `code`, `context`, `help`. See the js output format for an
|
||||
* Link keys, are: `code`, `context`, `help`. See the js output format for an
|
||||
* example.
|
||||
* - 'traceLine' - Used for creating lines in the stacktrace. Gets the following
|
||||
* template variables: `reference`, `path`, `line`
|
||||
|
@ -624,14 +624,14 @@ class Debugger {
|
|||
}
|
||||
|
||||
/**
|
||||
* Switches output format, updates format strings.
|
||||
* Switches output format, updates format strings.
|
||||
* Can be used to switch the active output format:
|
||||
*
|
||||
* @param string $format Format to use, including 'js' for JavaScript-enhanced HTML, 'html' for
|
||||
* straight HTML output, or 'txt' for unformatted text.
|
||||
* @param array $strings Template strings to be used for the output format.
|
||||
* @return string
|
||||
* @deprecated Use Debugger::outputAs() and Debugger::addFormat(). Will be removed
|
||||
* @deprecated Use Debugger::outputAs() and Debugger::addFormat(). Will be removed
|
||||
* in 3.0
|
||||
*/
|
||||
public function output($format = null, $strings = array()) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* SQL Dump element. Dumps out SQL log information
|
||||
* SQL Dump element. Dumps out SQL log information
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
|
@ -53,7 +53,7 @@ if ($noLogs || isset($_forced_from_dbo_)):
|
|||
endforeach;
|
||||
?>
|
||||
</tbody></table>
|
||||
<?php
|
||||
<?php
|
||||
endforeach;
|
||||
else:
|
||||
echo '<p>Encountered unexpected $logs cannot generate SQL log</p>';
|
||||
|
|
|
@ -444,9 +444,9 @@ class Helper extends Object {
|
|||
$entity = $this->_modelScope . '.' . $entity;
|
||||
}
|
||||
|
||||
// 0.name, 0.created.month style inputs.
|
||||
// 0.name, 0.created.month style inputs. Excludes inputs with the modelScope in them.
|
||||
if (
|
||||
$count >= 2 && is_numeric($parts[0]) && !is_numeric($parts[1]) && $this->_modelScope
|
||||
$count >= 2 && is_numeric($parts[0]) && !is_numeric($parts[1]) && $this->_modelScope && strpos($entity, $this->_modelScope) === false
|
||||
) {
|
||||
$entity = $this->_modelScope . '.' . $entity;
|
||||
}
|
||||
|
|
|
@ -265,24 +265,26 @@ class CacheHelper extends AppHelper {
|
|||
$file = '<!--cachetime:' . $cacheTime . '--><?php';
|
||||
|
||||
if (empty($this->_View->plugin)) {
|
||||
$file .= '
|
||||
App::import(\'Controller\', \'' . $this->_View->name. '\');
|
||||
';
|
||||
$file .= "
|
||||
App::uses('{$this->_View->name}Controller', 'Controller');
|
||||
";
|
||||
} else {
|
||||
$file .= '
|
||||
App::import(\'Controller\', \'' . $this->_View->plugin . '.' . $this->_View->name. '\');
|
||||
';
|
||||
$file .= "
|
||||
App::uses('{$this->_View->name}Controller', '{$this->_View->plugin}.Controller');
|
||||
";
|
||||
}
|
||||
|
||||
$file .= '$controller = new ' . $this->_View->name . 'Controller();
|
||||
$file .= '
|
||||
$request = unserialize(\'' . str_replace("'", "\\'", serialize($this->request)) . '\');
|
||||
$response = new CakeResponse(array("charset" => Configure::read("App.encoding")));
|
||||
$controller = new ' . $this->_View->name . 'Controller($request, $response);
|
||||
$controller->plugin = $this->plugin = \'' . $this->_View->plugin . '\';
|
||||
$controller->helpers = $this->helpers = unserialize(\'' . serialize($this->_View->helpers) . '\');
|
||||
$controller->layout = $this->layout = \'' . $this->_View->layout. '\';
|
||||
$controller->request = $this->request = unserialize(\'' . str_replace("'", "\\'", serialize($this->request)) . '\');
|
||||
$controller->theme = $this->theme = \'' . $this->_View->theme . '\';
|
||||
$controller->viewVars = $this->viewVars = unserialize(base64_decode(\'' . base64_encode(serialize($this->_View->viewVars)) . '\'));
|
||||
Router::setRequestInfo($controller->request);';
|
||||
|
||||
Router::setRequestInfo($controller->request);
|
||||
$this->request = $request;';
|
||||
|
||||
if ($useCallbacks == true) {
|
||||
$file .= '
|
||||
|
|
|
@ -239,14 +239,16 @@ class FormHelper extends AppHelper {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns if a field is required to be filled based on validation properties from the validating object
|
||||
* Returns if a field is required to be filled based on validation properties from the validating object.
|
||||
*
|
||||
* @param array $validateProperties
|
||||
* @return boolean true if field is required to be filled, false otherwise
|
||||
*/
|
||||
protected function _isRequiredField($validateProperties) {
|
||||
$required = false;
|
||||
if (is_array($validateProperties)) {
|
||||
if (is_string($validateProperties)) {
|
||||
return true;
|
||||
} elseif (is_array($validateProperties)) {
|
||||
|
||||
$dims = Set::countDim($validateProperties);
|
||||
if ($dims == 1 || ($dims == 2 && isset($validateProperties['rule']))) {
|
||||
|
@ -271,7 +273,7 @@ class FormHelper extends AppHelper {
|
|||
* Returns false if given form field described by the current entity has no errors.
|
||||
* Otherwise it returns the validation message
|
||||
*
|
||||
* @return mixed Either false when there or no errors, or the error
|
||||
* @return mixed Either false when there or no errors, or the error
|
||||
* string. The error string could be ''.
|
||||
*/
|
||||
public function tagIsInvalid() {
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue