Removed Tests from GIT.

Signed-off-by: Rick Hays <rhays@haysgang.com>
This commit is contained in:
2019-12-02 15:00:07 -06:00
parent 10412ab7f6
commit ee4cbce119
90 changed files with 0 additions and 2798 deletions

View File

@@ -1,5 +0,0 @@
<?php
class UnnamespacedClass
{
}

View File

@@ -1,8 +0,0 @@
<?php
use CodeIgniter\Test;
class CIDatabaseTestCase extends Test\CIDatabaseTestCase
{
}

View File

@@ -1,8 +0,0 @@
<?php
use CodeIgniter\Test;
class CIUnitTestCase extends Test\CIUnitTestCase
{
}

View File

@@ -1,198 +0,0 @@
<?php namespace Tests\Support\Cache\Handlers;
use CodeIgniter\Cache\CacheInterface;
class MockHandler implements CacheInterface
{
/**
* Prefixed to all cache names.
*
* @var string
*/
protected $prefix;
/**
* Mock cache storage.
*
* @var array
*/
protected $cache = [];
//--------------------------------------------------------------------
/**
* Takes care of any handler-specific setup that must be done.
*/
public function initialize()
{
// Not to see here...
}
//--------------------------------------------------------------------
/**
* Attempts to fetch an item from the cache store.
*
* @param string $key Cache item name
*
* @return mixed
*/
public function get(string $key)
{
$key = $this->prefix . $key;
return array_key_exists($key, $this->cache)
? $this->cache[$key]
: null;
}
//--------------------------------------------------------------------
/**
* Saves an item to the cache store.
*
* The $raw parameter is only utilized by Mamcache in order to
* allow usage of increment() and decrement().
*
* @param string $key Cache item name
* @param $value the data to save
* @param null $ttl Time To Live, in seconds (default 60)
* @param boolean $raw Whether to store the raw value.
*
* @return mixed
*/
public function save(string $key, $value, int $ttl = 60, bool $raw = false)
{
$key = $this->prefix . $key;
$this->cache[$key] = $value;
return true;
}
//--------------------------------------------------------------------
/**
* Deletes a specific item from the cache store.
*
* @param string $key Cache item name
*
* @return mixed
*/
public function delete(string $key)
{
unset($this->cache[$key]);
}
//--------------------------------------------------------------------
/**
* Performs atomic incrementation of a raw stored value.
*
* @param string $key Cache ID
* @param integer $offset Step/value to increase by
*
* @return mixed
*/
public function increment(string $key, int $offset = 1)
{
$key = $this->prefix . $key;
$data = $this->cache[$key] ?: null;
if (empty($data))
{
$data = 0;
}
elseif (! is_int($data))
{
return false;
}
return $this->save($key, $data + $offset);
}
//--------------------------------------------------------------------
/**
* Performs atomic decrementation of a raw stored value.
*
* @param string $key Cache ID
* @param integer $offset Step/value to increase by
*
* @return mixed
*/
public function decrement(string $key, int $offset = 1)
{
$key = $this->prefix . $key;
$data = $this->cache[$key] ?: null;
if (empty($data))
{
$data = 0;
}
elseif (! is_int($data))
{
return false;
}
return $this->save($key, $data - $offset);
}
//--------------------------------------------------------------------
/**
* Will delete all items in the entire cache.
*
* @return mixed
*/
public function clean()
{
$this->cache = [];
}
//--------------------------------------------------------------------
/**
* Returns information on the entire cache.
*
* The information returned and the structure of the data
* varies depending on the handler.
*
* @return mixed
*/
public function getCacheInfo()
{
return [];
}
//--------------------------------------------------------------------
/**
* Returns detailed information about the specific item in the cache.
*
* @param string $key Cache item name.
*
* @return mixed
*/
public function getMetaData(string $key)
{
return false;
}
//--------------------------------------------------------------------
/**
* Determines if the driver is supported on this system.
*
* @return boolean
*/
public function isSupported(): bool
{
return true;
}
//--------------------------------------------------------------------
}

View File

@@ -1,13 +0,0 @@
<?php
namespace Tests\Support\Commands;
use CodeIgniter\CLI\BaseCommand;
abstract class AbstractInfo extends BaseCommand
{
protected $group = 'demo';
protected $name = 'app:pablo';
protected $description = 'Displays basic application information.';
}

View File

@@ -1,36 +0,0 @@
<?php
namespace Tests\Support\Commands;
use CodeIgniter\CLI\BaseCommand;
use CodeIgniter\CLI\CLI;
use CodeIgniter\CodeIgniter;
class AppInfo extends BaseCommand
{
protected $group = 'demo';
protected $name = 'app:info';
protected $description = 'Displays basic application information.';
public function run(array $params)
{
CLI::write('CI Version: ' . CLI::color(CodeIgniter::CI_VERSION, 'red'));
}
public function bomb()
{
try
{
CLI::color('test', 'white', 'Background');
}
catch (\RuntimeException $oops)
{
$this->showError($oops);
}
}
public function helpme()
{
$this->call('help');
}
}

View File

@@ -1,18 +0,0 @@
<?php namespace CodeIgniter\Commands;
class CommandsTestStreamFilter extends \php_user_filter
{
public static $buffer = '';
public function filter($in, $out, &$consumed, $closing)
{
while ($bucket = stream_bucket_make_writeable($in))
{
self::$buffer .= $bucket->data;
$consumed += $bucket->datalen;
}
return PSFS_PASS_ON;
}
}
stream_filter_register('CommandsTestStreamFilter', 'CodeIgniter\Commands\CommandsTestStreamFilter');

View File

@@ -1,18 +0,0 @@
<?php namespace Tests\Support\Config;
/**
* Class BadRegistrar
*
* Doesn't provides a basic registrar class for testing BaseConfig registration functions,
* because it doesn't return an associative array
*/
class BadRegistrar
{
public static function RegistrarConfig()
{
return 'I am not worthy';
}
}

View File

@@ -1,34 +0,0 @@
<?php namespace Tests\Support\Config;
class MockAppConfig
{
public $baseURL = 'http://example.com';
public $uriProtocol = 'REQUEST_URI';
public $cookiePrefix = '';
public $cookieDomain = '';
public $cookiePath = '/';
public $cookieSecure = false;
public $cookieHTTPOnly = false;
public $proxyIPs = '';
public $CSRFProtection = false;
public $CSRFTokenName = 'csrf_test_name';
public $CSRFHeaderName = 'X-CSRF-TOKEN';
public $CSRFCookieName = 'csrf_cookie_name';
public $CSRFExpire = 7200;
public $CSRFRegenerate = true;
public $CSRFExcludeURIs = ['http://example.com'];
public $CSRFRedirect = false;
public $CSPEnabled = false;
public $defaultLocale = 'en';
public $negotiateLocale = false;
public $supportedLocales = [
'en',
'es',
];
}

View File

@@ -1,21 +0,0 @@
<?php namespace Tests\Support\Config;
use Config\Autoload;
class MockAutoload extends Autoload
{
public $psr4 = [];
public $classmap = [];
//--------------------------------------------------------------------
public function __construct()
{
// Don't call the parent since we don't want the default mappings.
// parent::__construct();
}
//--------------------------------------------------------------------
}

View File

@@ -1,32 +0,0 @@
<?php namespace Tests\Support\Config;
class MockCLIConfig extends \Config\App
{
public $baseURL = 'http://example.com';
public $uriProtocol = 'REQUEST_URI';
public $cookiePrefix = '';
public $cookieDomain = '';
public $cookiePath = '/';
public $cookieSecure = false;
public $cookieHTTPOnly = false;
public $proxyIPs = '';
public $CSRFProtection = false;
public $CSRFTokenName = 'csrf_test_name';
public $CSRFCookieName = 'csrf_cookie_name';
public $CSRFExpire = 7200;
public $CSRFRegenerate = true;
public $CSRFExcludeURIs = ['http://example.com'];
public $CSPEnabled = false;
public $defaultLocale = 'en';
public $negotiateLocale = false;
public $supportedLocales = [
'en',
'es',
];
}

View File

@@ -1,103 +0,0 @@
<?php namespace Tests\Support\Config;
class MockLogger
{
/*
|--------------------------------------------------------------------------
| Error Logging Threshold
|--------------------------------------------------------------------------
|
| You can enable error logging by setting a threshold over zero. The
| threshold determines what gets logged. Any values below or equal to the
| threshold will be logged. Threshold options are:
|
| 0 = Disables logging, Error logging TURNED OFF
| 1 = Emergency Messages - System is unusable
| 2 = Alert Messages - Action Must Be Taken Immediately
| 3 = Critical Messages - Application component unavailable, unexpected exception.
| 4 = Runtime Errors - Don't need immediate action, but should be monitored.
| 5 = Warnings - Exceptional occurrences that are not errors.
| 6 = Notices - Normal but significant events.
| 7 = Info - Interesting events, like user logging in, etc.
| 8 = Debug - Detailed debug information.
| 9 = All Messages
|
| You can also pass an array with threshold levels to show individual error types
|
| array(1, 2, 3, 8) = Emergency, Alert, Critical, and Debug messages
|
| For a live site you'll usually enable Critical or higher (3) to be logged otherwise
| your log files will fill up very fast.
|
*/
public $threshold = 9;
/*
|--------------------------------------------------------------------------
| Error Logging Directory Path
|--------------------------------------------------------------------------
|
|
|
*/
public $path = '';
/*
|--------------------------------------------------------------------------
| Date Format for Logs
|--------------------------------------------------------------------------
|
| Each item that is logged has an associated date. You can use PHP date
| codes to set your own date formatting
|
*/
public $dateFormat = 'Y-m-d';
/*
|--------------------------------------------------------------------------
| Log Handlers
|--------------------------------------------------------------------------
|
| The logging system supports multiple actions to be taken when something
| is logged. This is done by allowing for multiple Handlers, special classes
| designed to write the log to their chosen destinations, whether that is
| a file on the getServer, a cloud-based service, or even taking actions such
| as emailing the dev team.
|
| Each handler is defined by the class name used for that handler, and it
| MUST implement the CodeIgniter\Log\Handlers\HandlerInterface interface.
|
| The value of each key is an array of configuration items that are sent
| to the constructor of each handler. The only required configuration item
| is the 'handles' element, which must be an array of integer log levels.
| This is most easily handled by using the constants defined in the
| Psr\Log\LogLevel class.
|
| Handlers are executed in the order defined in this array, starting with
| the handler on top and continuing down.
|
*/
public $handlers = [
//--------------------------------------------------------------------
// File Handler
//--------------------------------------------------------------------
'Tests\Support\Log\Handlers\TestHandler' => [
/*
* The log levels that this handler will handle.
*/
'handles' => [
'critical',
'alert',
'emergency',
'debug',
'error',
'info',
'notice',
'warning',
],
],
];
}

View File

@@ -1,28 +0,0 @@
<?php
namespace Tests\Support\Config;
use \CodeIgniter\Config\BaseService;
class MockServices extends BaseService
{
public $psr4 = [
'Tests/Support' => TESTPATH . '_support/',
];
public $classmap = [];
//--------------------------------------------------------------------
public function __construct()
{
// Don't call the parent since we don't want the default mappings.
// parent::__construct();
}
//--------------------------------------------------------------------
public static function locator(bool $getShared = true)
{
return new \CodeIgniter\Autoloader\FileLocator(static::autoloader());
}
}

View File

@@ -1,27 +0,0 @@
<?php namespace Tests\Support\Config;
/**
* Class Registrar
*
* Provides a basic registrar class for testing BaseConfig registration functions.
*/
class Registrar
{
public static function RegistrarConfig()
{
return [
'bar' => [
'first',
'second',
],
'format' => 'nice',
'fruit' => [
'apple',
'banana',
],
];
}
}

View File

@@ -1,7 +0,0 @@
<?php
/**
* This is a simple file to include for testing the RouteCollection class.
*/
$routes->add('testing', 'TestController::index');

View File

@@ -1,77 +0,0 @@
<?php
namespace Tests\Support\Controllers;
use CodeIgniter\API\ResponseTrait;
use CodeIgniter\Controller;
use CodeIgniter\HTTP\Exceptions\HTTPException;
/**
* This is a testing only controller, intended to blow up in multiple
* ways to make sure we catch them.
*/
class Popcorn extends Controller
{
use ResponseTrait;
public function index()
{
return 'Hi there';
}
public function pop()
{
$this->respond('Oops', 567, 'Surprise');
}
public function popper()
{
throw new \RuntimeException('Surprise', 500);
}
public function weasel()
{
$this->respond('', 200);
}
public function oops()
{
$this->failUnauthorized();
}
public function goaway()
{
return redirect()->to('/');
}
// @see https://github.com/codeigniter4/CodeIgniter4/issues/1834
public function index3()
{
$response = $this->response->setJSON([
'lang' => $this->request->getLocale(),
]);
// echo var_dump($this->response->getBody());
return $response;
}
public function canyon()
{
echo 'Hello-o-o';
}
public function cat()
{
}
public function json()
{
$this->responsd(['answer' => 42]);
}
public function xml()
{
$this->respond('<my><pet>cat</pet></my>');
}
}

View File

@@ -1,148 +0,0 @@
<?php namespace Tests\Support\Database\Migrations;
class Migration_Create_test_tables extends \CodeIgniter\Database\Migration
{
public function up()
{
// SQLite3 uses auto increment different
$unique_or_auto = $this->db->DBDriver === 'SQLite3' ? 'unique' : 'auto_increment';
// User Table
$this->forge->addField([
'id' => [
'type' => 'INTEGER',
'constraint' => 3,
$unique_or_auto => true,
],
'name' => [
'type' => 'VARCHAR',
'constraint' => 80,
],
'email' => [
'type' => 'VARCHAR',
'constraint' => 100,
],
'country' => [
'type' => 'VARCHAR',
'constraint' => 40,
],
'created_at' => [
'type' => 'DATETIME',
'null' => true,
],
'updated_at' => [
'type' => 'DATETIME',
'null' => true,
],
'deleted_at' => [
'type' => 'DATETIME',
'null' => true,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('user', true);
// Job Table
$this->forge->addField([
'id' => [
'type' => 'INTEGER',
'constraint' => 3,
$unique_or_auto => true,
],
'name' => [
'type' => 'VARCHAR',
'constraint' => 40,
],
'description' => [
'type' => 'TEXT',
'null' => true,
],
'created_at' => [
'type' => 'INTEGER',
'constraint' => 11,
'null' => true,
],
'updated_at' => [
'type' => 'INTEGER',
'constraint' => 11,
'null' => true,
],
'deleted_at' => [
'type' => 'INTEGER',
'constraint' => 11,
'null' => true,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('job', true);
// Misc Table
$this->forge->addField([
'id' => [
'type' => 'INTEGER',
'constraint' => 3,
$unique_or_auto => true,
],
'key' => [
'type' => 'VARCHAR',
'constraint' => 40,
],
'value' => ['type' => 'TEXT'],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('misc', true);
// Empty Table
$this->forge->addField([
'id' => [
'type' => 'INTEGER',
'constraint' => 3,
$unique_or_auto => true,
],
'name' => [
'type' => 'VARCHAR',
'constraint' => 40,
],
'created_at' => [
'type' => 'DATE',
'null' => true,
],
'updated_at' => [
'type' => 'DATE',
'null' => true,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('empty', true);
// Secondary Table
$this->forge->addField([
'id' => [
'type' => 'INTEGER',
'constraint' => 3,
$unique_or_auto => true,
],
'key' => [
'type' => 'VARCHAR',
'constraint' => 40,
],
'value' => ['type' => 'TEXT'],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('secondary', true);
}
//--------------------------------------------------------------------
public function down()
{
$this->forge->dropTable('user', true);
$this->forge->dropTable('job', true);
$this->forge->dropTable('misc', true);
$this->forge->dropTable('empty', true);
$this->forge->dropTable('secondary', true);
}
//--------------------------------------------------------------------
}

View File

@@ -1,15 +0,0 @@
<?php namespace Tests\Support\Database;
use CodeIgniter\Database\BaseBuilder;
use CodeIgniter\Database\ConnectionInterface;
class MockBuilder extends BaseBuilder {
public function __construct($tableName, ConnectionInterface &$db, array $options = null)
{
parent::__construct($tableName, $db, $options);
}
//--------------------------------------------------------------------
}

View File

@@ -1,298 +0,0 @@
<?php namespace Tests\Support\Database;
use CodeIgniter\CodeIgniter;
use CodeIgniter\Database\BaseConnection;
class MockConnection extends BaseConnection
{
protected $returnValues = [];
public $database;
public $lastQuery;
//--------------------------------------------------------------------
public function shouldReturn(string $method, $return)
{
$this->returnValues[$method] = $return;
return $this;
}
//--------------------------------------------------------------------
/**
* Orchestrates a query against the database. Queries must use
* Database\Statement objects to store the query and build it.
* This method works with the cache.
*
* Should automatically handle different connections for read/write
* queries if needed.
*
* @param string $sql
* @param mixed ...$binds
* @param boolean $setEscapeFlags
* @param string $queryClass
*
* @return \CodeIgniter\Database\BaseResult|\CodeIgniter\Database\Query|false
*/
public function query(string $sql, $binds = null, bool $setEscapeFlags = true, string $queryClass = 'CodeIgniter\\Database\\Query')
{
$queryClass = str_replace('Connection', 'Query', get_class($this));
$query = new $queryClass($this);
$query->setQuery($sql, $binds, $setEscapeFlags);
if (! empty($this->swapPre) && ! empty($this->DBPrefix))
{
$query->swapPrefix($this->DBPrefix, $this->swapPre);
}
$startTime = microtime(true);
$this->lastQuery = $query;
// Run the query
if (false === ($this->resultID = $this->simpleQuery($query->getQuery())))
{
$query->setDuration($startTime, $startTime);
// @todo deal with errors
return false;
}
$query->setDuration($startTime);
$resultClass = str_replace('Connection', 'Result', get_class($this));
return new $resultClass($this->connID, $this->resultID);
}
//--------------------------------------------------------------------
/**
* Connect to the database.
*
* @param boolean $persistent
*
* @return mixed
*/
public function connect(bool $persistent = false)
{
$return = $this->returnValues['connect'] ?? true;
if (is_array($return))
{
// By removing the top item here, we can
// get a different value for, say, testing failover connections.
$return = array_shift($this->returnValues['connect']);
}
return $return;
}
//--------------------------------------------------------------------
/**
* Keep or establish the connection if no queries have been sent for
* a length of time exceeding the server's idle timeout.
*
* @return boolean
*/
public function reconnect(): bool
{
return true;
}
//--------------------------------------------------------------------
/**
* Select a specific database table to use.
*
* @param string $databaseName
*
* @return mixed
*/
public function setDatabase(string $databaseName)
{
$this->database = $databaseName;
return $this;
}
//--------------------------------------------------------------------
/**
* Returns a string containing the version of the database being used.
*
* @return string
*/
public function getVersion(): string
{
return CodeIgniter::CI_VERSION;
}
//--------------------------------------------------------------------
/**
* Executes the query against the database.
*
* @param string $sql
*
* @return mixed
*/
protected function execute(string $sql)
{
return $this->returnValues['execute'];
}
//--------------------------------------------------------------------
/**
* Returns the total number of rows affected by this query.
*
* @return integer
*/
public function affectedRows(): int
{
return 1;
}
//--------------------------------------------------------------------
/**
* Returns the last error code and message.
*
* Must return an array with keys 'code' and 'message':
*
* return ['code' => null, 'message' => null);
*
* @return array
*/
public function error(): array
{
return [
'code' => null,
'message' => null,
];
}
//--------------------------------------------------------------------
/**
* Insert ID
*
* @return integer
*/
public function insertID(): int
{
return $this->connID->insert_id;
}
//--------------------------------------------------------------------
/**
* Generates the SQL for listing tables in a platform-dependent manner.
*
* @param boolean $constrainByPrefix
*
* @return string
*/
protected function _listTables(bool $constrainByPrefix = false): string
{
return '';
}
//--------------------------------------------------------------------
/**
* Generates a platform-specific query string so that the column names can be fetched.
*
* @param string $table
*
* @return string
*/
protected function _listColumns(string $table = ''): string
{
return '';
}
/**
* @param string $table
* @return array
*/
protected function _fieldData(string $table): array
{
return [];
}
/**
* @param string $table
* @return array
*/
protected function _indexData(string $table): array
{
return [];
}
/**
* @param string $table
* @return array
*/
protected function _foreignKeyData(string $table): array
{
return [];
}
//--------------------------------------------------------------------
/**
* Close the connection.
*/
protected function _close()
{
return;
}
//--------------------------------------------------------------------
/**
* Begin Transaction
*
* @return boolean
*/
protected function _transBegin(): bool
{
return true;
}
//--------------------------------------------------------------------
/**
* Commit Transaction
*
* @return boolean
*/
protected function _transCommit(): bool
{
return true;
}
//--------------------------------------------------------------------
/**
* Rollback Transaction
*
* @return boolean
*/
protected function _transRollback(): bool
{
return true;
}
//--------------------------------------------------------------------
}

View File

@@ -1,8 +0,0 @@
<?php namespace Tests\Support\Database;
use CodeIgniter\Database\Query;
class MockQuery extends Query
{
}

View File

@@ -1,93 +0,0 @@
<?php namespace Tests\Support\Database;
use CodeIgniter\Database\BaseResult;
class MockResult extends BaseResult
{
/**
* Gets the number of fields in the result set.
*
* @return integer
*/
public function getFieldCount(): int
{
}
//--------------------------------------------------------------------
/**
* Generates an array of column names in the result set.
*
* @return array
*/
public function getFieldNames(): array
{
}
//--------------------------------------------------------------------
/**
* Generates an array of objects representing field meta-data.
*
* @return array
*/
public function getFieldData(): array
{
}
//--------------------------------------------------------------------
/**
* Frees the current result.
*
* @return mixed
*/
public function freeResult()
{
}
//--------------------------------------------------------------------
/**
* Moves the internal pointer to the desired offset. This is called
* internally before fetching results to make sure the result set
* starts at zero.
*
* @param integer $n
*
* @return mixed
*/
public function dataSeek($n = 0)
{
}
//--------------------------------------------------------------------
/**
* Returns the result set as an array.
*
* Overridden by driver classes.
*
* @return mixed
*/
protected function fetchAssoc()
{
}
//--------------------------------------------------------------------
/**
* Returns the result set as an object.
*
* Overridden by child classes.
*
* @param string $className
*
* @return object
*/
protected function fetchObject($className = 'stdClass')
{
}
//--------------------------------------------------------------------
}

View File

@@ -1,7 +0,0 @@
<?php
namespace Tests\Support\Database;
class MockTestClass
{
}

View File

@@ -1,78 +0,0 @@
<?php namespace Tests\Support\Database\Seeds;
class CITestSeeder extends \CodeIgniter\Database\Seeder
{
public function run()
{
// Job Data
$data = [
'user' => [
[
'name' => 'Derek Jones',
'email' => 'derek@world.com',
'country' => 'US',
],
[
'name' => 'Ahmadinejad',
'email' => 'ahmadinejad@world.com',
'country' => 'Iran',
],
[
'name' => 'Richard A Causey',
'email' => 'richard@world.com',
'country' => 'US',
],
[
'name' => 'Chris Martin',
'email' => 'chris@world.com',
'country' => 'UK',
],
],
'job' => [
[
'name' => 'Developer',
'description' => 'Awesome job, but sometimes makes you bored',
],
[
'name' => 'Politician',
'description' => 'This is not really a job',
],
[
'name' => 'Accountant',
'description' => 'Boring job, but you will get free snack at lunch',
],
[
'name' => 'Musician',
'description' => 'Only Coldplay can actually called Musician',
],
],
'misc' => [
[
'key' => '\\xxxfoo456',
'value' => 'Entry with \\xxx',
],
[
'key' => '\\%foo456',
'value' => 'Entry with \\%',
],
[
'key' => 'spaces and tabs',
'value' => ' One two three tab',
],
],
];
foreach ($data as $table => $dummy_data)
{
$this->db->table($table)->truncate();
foreach ($dummy_data as $single_dummy_data)
{
$this->db->table($table)->insert($single_dummy_data);
}
}
}
//--------------------------------------------------------------------
}

View File

@@ -1,24 +0,0 @@
<?php namespace App\Database\Migrations;
class Migration_some_migration extends \CodeIgniter\Database\Migration
{
public function up()
{
$this->forge->addField([
'key' => [
'type' => 'VARCHAR',
'constraint' => 255,
],
]);
$this->forge->createTable('foo', true);
$this->db->table('foo')->insert([
'key' => 'foobar',
]);
}
public function down()
{
$this->forge->dropTable('foo', true);
}
}

View File

@@ -1,148 +0,0 @@
<?php namespace Tests\Support\DatabaseTestMigrations\Database\Migrations;
class Migration_Create_test_tables extends \CodeIgniter\Database\Migration
{
public function up()
{
// SQLite3 uses auto increment different
$unique_or_auto = $this->db->DBDriver === 'SQLite3' ? 'unique' : 'auto_increment';
// User Table
$this->forge->addField([
'id' => [
'type' => 'INTEGER',
'constraint' => 3,
$unique_or_auto => true,
],
'name' => [
'type' => 'VARCHAR',
'constraint' => 80,
],
'email' => [
'type' => 'VARCHAR',
'constraint' => 100,
],
'country' => [
'type' => 'VARCHAR',
'constraint' => 40,
],
'created_at' => [
'type' => 'DATETIME',
'null' => true,
],
'updated_at' => [
'type' => 'DATETIME',
'null' => true,
],
'deleted_at' => [
'type' => 'DATETIME',
'null' => true,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('user', true);
// Job Table
$this->forge->addField([
'id' => [
'type' => 'INTEGER',
'constraint' => 3,
$unique_or_auto => true,
],
'name' => [
'type' => 'VARCHAR',
'constraint' => 40,
],
'description' => [
'type' => 'TEXT',
'null' => true,
],
'created_at' => [
'type' => 'INTEGER',
'constraint' => 11,
'null' => true,
],
'updated_at' => [
'type' => 'INTEGER',
'constraint' => 11,
'null' => true,
],
'deleted_at' => [
'type' => 'INTEGER',
'constraint' => 11,
'null' => true,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('job', true);
// Misc Table
$this->forge->addField([
'id' => [
'type' => 'INTEGER',
'constraint' => 3,
$unique_or_auto => true,
],
'key' => [
'type' => 'VARCHAR',
'constraint' => 40,
],
'value' => ['type' => 'TEXT'],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('misc', true);
// Empty Table
$this->forge->addField([
'id' => [
'type' => 'INTEGER',
'constraint' => 3,
$unique_or_auto => true,
],
'name' => [
'type' => 'VARCHAR',
'constraint' => 40,
],
'created_at' => [
'type' => 'DATE',
'null' => true,
],
'updated_at' => [
'type' => 'DATE',
'null' => true,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('empty', true);
// Secondary Table
$this->forge->addField([
'id' => [
'type' => 'INTEGER',
'constraint' => 3,
$unique_or_auto => true,
],
'key' => [
'type' => 'VARCHAR',
'constraint' => 40,
],
'value' => ['type' => 'TEXT'],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('secondary', true);
}
//--------------------------------------------------------------------
public function down()
{
$this->forge->dropTable('user', true);
$this->forge->dropTable('job', true);
$this->forge->dropTable('misc', true);
$this->forge->dropTable('empty', true);
$this->forge->dropTable('secondary', true);
}
//--------------------------------------------------------------------
}

View File

@@ -1,66 +0,0 @@
<?php namespace Tests\Support\Events;
/**
* CodeIgniter
*
* An open source application development framework for PHP
*
* This content is released under the MIT License (MIT)
*
* Copyright (c) 2014-2018 British Columbia Institute of Technology
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* @package CodeIgniter
* @author CodeIgniter Dev Team
* @copyright 2014-2018 British Columbia Institute of Technology (https://bcit.ca/)
* @license https://opensource.org/licenses/MIT MIT License
* @link https://codeigniter.com
* @since Version 4.0.0
* @filesource
*/
use CodeIgniter\Events\Events;
/**
* Events
*/
class MockEvents extends Events
{
public function getListeners()
{
return self::$listeners;
}
public function getEventsFile()
{
return self::$eventsFile;
}
public function getSimulate()
{
return self::$simulate;
}
public function unInitialize()
{
static::$initialized = false;
}
}

View File

@@ -1,6 +0,0 @@
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

View File

@@ -1,6 +0,0 @@
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

View File

@@ -1,6 +0,0 @@
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

View File

@@ -1,6 +0,0 @@
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

View File

@@ -1 +0,0 @@

View File

@@ -1 +0,0 @@

View File

@@ -1 +0,0 @@

View File

@@ -1,52 +0,0 @@
<?php
namespace Tests\Support\HTTP;
use CodeIgniter\HTTP\CURLRequest;
/**
* Class MockCURLRequest
*
* Simply allows us to not actually call cURL during the
* test runs. Instead, we can set the desired output
* and get back the set options.
*/
class MockCURLRequest extends CURLRequest
{
public $curl_options;
protected $output = '';
//--------------------------------------------------------------------
public function setOutput($output)
{
$this->output = $output;
return $this;
}
//--------------------------------------------------------------------
protected function sendRequest(array $curl_options = []): string
{
// Save so we can access later.
$this->curl_options = $curl_options;
return $this->output;
}
//--------------------------------------------------------------------
// for testing purposes only
public function getBaseURI()
{
return $this->baseURI;
}
// for testing purposes only
public function getDelay()
{
return $this->delay;
}
}

View File

@@ -1,17 +0,0 @@
<?php namespace Tests\Support\HTTP;
use CodeIgniter\HTTP\IncomingRequest;
class MockIncomingRequest extends IncomingRequest
{
// public function populateHeaders()
// {
// // Don't do anything... force the tester to manually set the headers they want.
// }
public function detectURI($protocol, $baseURL)
{
// Do nothing...
}
}

View File

@@ -1,31 +0,0 @@
<?php
namespace Tests\Support\HTTP;
use CodeIgniter\HTTP\Response;
/**
* Class MockResponse
*/
class MockResponse extends Response
{
/**
* If true, will not write output. Useful during testing.
*
* @var boolean
*/
protected $pretend = true;
// for testing
public function getPretend()
{
return $this->pretend;
}
// artificial error for testing
public function misbehave()
{
$this->statusCode = 0;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -1,61 +0,0 @@
<?php namespace Tests\Support\Language;
use CodeIgniter\Language\Language;
class MockLanguage extends Language
{
/**
* Stores the data that should be
* returned by the 'requireFile()' method.
*
* @var mixed
*/
protected $data;
//--------------------------------------------------------------------
/**
* Sets the data that should be returned by the
* 'requireFile()' method to allow easy overrides
* during testing.
*
* @param array $data
* @param string $file
* @param string|null $locale
*
* @return $this
*/
public function setData(string $file, array $data, string $locale = null)
{
$this->language[$locale ?? $this->locale][$file] = $data;
return $this;
}
//--------------------------------------------------------------------
/**
* Provides an override that allows us to set custom
* data to be returned easily during testing.
*
* @param string $path
*
* @return array|mixed
*/
protected function requireFile(string $path): array
{
return $this->data ?? [];
}
//--------------------------------------------------------------------
/**
* Arbitrarily turnoff internationalization support for testing
*/
public function disableIntlSupport()
{
$this->intlSupport = false;
}
}

View File

@@ -1,27 +0,0 @@
<?php namespace Tests\Support\Language;
use CodeIgniter\Language\Language;
class SecondMockLanguage extends Language
{
//--------------------------------------------------------------------
/**
* Expose the protected *load* method
*/
public function loadem(string $file, string $locale = 'en', bool $return = false)
{
return $this->load($file, $locale, $return);
}
//--------------------------------------------------------------------
/**
* Expose the loaded language files
*/
public function loaded(string $locale = 'en')
{
return $this->loadedFiles[$locale];
}
}

View File

@@ -1,8 +0,0 @@
<?php
// seven wonders of the ancient world
return [
'one' => 'Pyramid of Giza',
'tre' => 'Colossus of Rhodes',
'fiv' => 'Temple of Artemis',
'sev' => 'Hanging Gardens of Babylon',
];

View File

@@ -1,8 +0,0 @@
<?php
// seven deadly sins
return [
'two' => 'gluttony',
'tre' => 'greed',
'six' => 'envy',
'sev' => 'pride',
];

View File

@@ -1,6 +0,0 @@
<?php
return [
'strongForce' => 'These are not the droids you are looking for',
'notaMoon' => "It's made of cheese",
'wisdom' => 'There is no try',
];

View File

@@ -1,8 +0,0 @@
<?php
// 12 days of Christmas
return [
'for' => 'four calling birds',
'fiv' => 'five golden rings',
'six' => 'six geese a laying',
'sev' => 'seven swans a swimming',
];

View File

@@ -1,20 +0,0 @@
<?php
/**
* Core language strings.
*
* @package CodeIgniter
* @author CodeIgniter Dev Team
* @copyright 2014-2018 British Columbia Institute of Technology (https://bcit.ca/)
* @license https://opensource.org/licenses/MIT MIT License
* @link https://codeigniter.com
* @since Version 4.0.0
* @filesource
*
* @codeCoverageIgnore
*/
// looking for a system message not likely to be part of unit testing
return [
'missingExtension' => '{0} extension could not be found.',
'bazillion' => 'billions and billions', // adds a new setting
];

View File

@@ -1,7 +0,0 @@
<?php
return [
'strongForce' => 'These are not the droids you are looking for',
'notaMoon' => "That's no moon... it's a space station",
'cannotMove' => 'I have a very bad feeling about this',
];

View File

@@ -1,5 +0,0 @@
<?php
return [
'languageGetLineInvalidArgumentException' => 'Whatever this would be, translated',
];

View File

@@ -1,25 +0,0 @@
<?php namespace Tests\Support\Log\Handlers;
/**
* Class MockHandler
*
* Extends ChromeLoggerHandler, exposing some inner workings
*/
class MockChromeHandler extends \CodeIgniter\Log\Handlers\ChromeLoggerHandler
{
//--------------------------------------------------------------------
public function __construct(array $config)
{
parent::__construct($config);
}
// retrieve the message from the JSON response
public function peekaboo()
{
return $this->json['rows'][0];
}
}

View File

@@ -1,25 +0,0 @@
<?php namespace Tests\Support\Log\Handlers;
/**
* Class MockHandler
*
* Extends FileHandler, exposing some inner workings
*/
class MockFileHandler extends \CodeIgniter\Log\Handlers\FileHandler
{
/**
* Where would the log be written?
*/
public $destination;
//--------------------------------------------------------------------
public function __construct(array $config)
{
parent::__construct($config);
$this->handles = $config['handles'] ?? [];
$this->destination = $this->path . 'log-' . date('Y-m-d') . '.' . $this->fileExtension;
}
}

View File

@@ -1,64 +0,0 @@
<?php namespace Tests\Support\Log\Handlers;
/**
* Class TestHandler
*
* A simple LogHandler that stores the logs in memory.
* Only used for testing purposes.
*/
class TestHandler extends \CodeIgniter\Log\Handlers\FileHandler
{
/**
* Local storage for logs.
*
* @var array
*/
protected static $logs = [];
/**
* Where would the log be written?
*/
//--------------------------------------------------------------------
public function __construct(array $config)
{
parent::__construct($config);
$this->handles = $config['handles'] ?? [];
$this->destination = $this->path . 'log-' . date('Y-m-d') . '.' . $this->fileExtension;
self::$logs = [];
}
//--------------------------------------------------------------------
/**
* Handles logging the message.
* If the handler returns false, then execution of handlers
* will stop. Any handlers that have not run, yet, will not
* be run.
*
* @param $level
* @param $message
*
* @return boolean
*/
public function handle($level, $message): bool
{
$date = date($this->dateFormat);
self::$logs[] = strtoupper($level) . ' - ' . $date . ' --> ' . $message;
return true;
}
//--------------------------------------------------------------------
public static function getLogs()
{
return self::$logs;
}
//--------------------------------------------------------------------
}

View File

@@ -1,82 +0,0 @@
<?php namespace Tests\Support\Log;
use CodeIgniter\Log\Logger;
class TestLogger extends Logger
{
protected static $op_logs = [];
//--------------------------------------------------------------------
/**
* The log method is overridden so that we can store log history during
* the tests to allow us to check ->assertLogged() methods.
*
* @param string $level
* @param string $message
* @param array $context
*
* @return boolean
*/
public function log($level, $message, array $context = []): bool
{
// While this requires duplicate work, we want to ensure
// we have the final message to test against.
$log_message = $this->interpolate($message, $context);
// Determine the file and line by finding the first
// backtrace that is not part of our logging system.
$trace = debug_backtrace();
$file = null;
foreach ($trace as $row)
{
if (! in_array($row['function'], ['log', 'log_message']))
{
$file = basename($row['file'] ?? '');
break;
}
}
self::$op_logs[] = [
'level' => $level,
'message' => $log_message,
'file' => $file,
];
// Let the parent do it's thing.
return parent::log($level, $message, $context);
}
//--------------------------------------------------------------------
/**
* Used by CIUnitTestCase class to provide ->assertLogged() methods.
*
* @param string $level
* @param string $message
*
* @return boolean
*/
public static function didLog(string $level, $message)
{
foreach (self::$op_logs as $log)
{
if (strtolower($log['level']) === strtolower($level) && $message === $log['message'])
{
return true;
}
}
return false;
}
//--------------------------------------------------------------------
// Expose cleanFileNames()
public function cleanup($file)
{
return $this->cleanFileNames($file);
}
}

View File

@@ -1,24 +0,0 @@
<?php namespace Tests\Support\MigrationTestMigrations\Database\Migrations;
class Migration_another_migration extends \CodeIgniter\Database\Migration
{
public function up()
{
$this->forge->addField([
'key' => [
'type' => 'VARCHAR',
'constraint' => 255,
],
]);
$this->forge->createTable('foo', true);
$this->db->table('foo')->insert([
'key' => 'foobar',
]);
}
public function down()
{
$this->forge->dropTable('foo', true);
}
}

View File

@@ -1,24 +0,0 @@
<?php namespace Tests\Support\MigrationTestMigrations\Database\Migrations;
class Migration_some_migration extends \CodeIgniter\Database\Migration
{
public function up()
{
$this->forge->addField([
'key' => [
'type' => 'VARCHAR',
'constraint' => 255,
],
]);
$this->forge->createTable('foo', true);
$this->db->table('foo')->insert([
'key' => 'foobar',
]);
}
public function down()
{
$this->forge->dropTable('foo', true);
}
}

View File

@@ -1,28 +0,0 @@
<?php namespace Tests\Support\MigrationTestMigrations\Database\Migrations;
class Migration_another_migration extends \CodeIgniter\Database\Migration
{
public function up()
{
$fields = [
'value' => [
'type' => 'VARCHAR',
'constraint' => 255,
],
];
$this->forge->addColumn('foo', $fields);
$this->db->table('foo')->insert([
'key' => 'foobar',
'value' => 'raboof',
]);
}
public function down()
{
if ($this->db->tableExists('foo'))
{
$this->forge->dropColumn('foo', 'value');
}
}
}

View File

@@ -1,11 +0,0 @@
<?php namespace Tests\Support;
use CodeIgniter\CodeIgniter;
class MockCodeIgniter extends CodeIgniter
{
protected function callExit($code)
{
// Do not call exit() in testing.
}
}

View File

@@ -1,37 +0,0 @@
<?php
/**
* Common Functions for testing
*
* Several application-wide utility methods.
*
* @package CodeIgniter
* @category Common Functions
*/
if (! function_exists('is_cli'))
{
/**
* Is CLI?
*
* Test to see if a request was made from the command line.
* You can set the return value for testing.
*
* @param boolean $new_return return value to set
* @return boolean
*/
function is_cli(bool $new_return = null): bool
{
// PHPUnit always runs via CLI.
static $return_value = true;
if ($new_return !== null)
{
$return_value = $new_return;
}
return $return_value;
}
}
//--------------------------------------------------------------------

View File

@@ -1,22 +0,0 @@
<?php namespace Tests\Support\Models;
use CodeIgniter\Model;
class EntityModel extends Model
{
protected $table = 'job';
protected $returnType = '\Tests\Support\Models\SimpleEntity';
protected $useSoftDeletes = false;
protected $dateFormat = 'int';
protected $deletedField = 'deleted_at';
protected $allowedFields = [
'name',
'description',
'created_at',
];
}

View File

@@ -1,79 +0,0 @@
<?php namespace Tests\Support\Models;
use CodeIgniter\Model;
class EventModel extends Model
{
protected $table = 'user';
protected $returnType = 'array';
protected $useSoftDeletes = false;
protected $dateFormat = 'datetime';
protected $allowedFields = [
'name',
'email',
'country',
'deleted_at',
];
protected $beforeInsert = ['beforeInsertMethod'];
protected $afterInsert = ['afterInsertMethod'];
protected $beforeUpdate = ['beforeUpdateMethod'];
protected $afterUpdate = ['afterUpdateMethod'];
protected $afterFind = ['afterFindMethod'];
protected $afterDelete = ['afterDeleteMethod'];
// Holds stuff for testing events
protected $tokens = [];
protected function beforeInsertMethod(array $data)
{
$this->tokens[] = 'beforeInsert';
return $data;
}
protected function afterInsertMethod(array $data)
{
$this->tokens[] = 'afterInsert';
return $data;
}
protected function beforeUpdateMethod(array $data)
{
$this->tokens[] = 'beforeUpdate';
return $data;
}
protected function afterUpdateMethod(array $data)
{
$this->tokens[] = 'afterUpdate';
return $data;
}
protected function afterFindMethod(array $data)
{
$this->tokens[] = 'afterFind';
return $data;
}
protected function afterDeleteMethod(array $data)
{
$this->tokens[] = 'afterDelete';
return $data;
}
public function hasToken(string $token)
{
return in_array($token, $this->tokens);
}
}

View File

@@ -1,23 +0,0 @@
<?php namespace Tests\Support\Models;
use CodeIgniter\Model;
class JobModel extends Model
{
protected $table = 'job';
protected $returnType = 'object';
protected $useSoftDeletes = false;
protected $dateFormat = 'int';
protected $allowedFields = [
'name',
'description',
];
public $name = '';
public $description = '';
}

View File

@@ -1,21 +0,0 @@
<?php namespace Tests\Support\Models;
use CodeIgniter\Model;
class SecondaryModel extends Model
{
protected $table = 'secondary';
protected $primaryKey = 'id';
protected $returnType = 'object';
protected $useSoftDeletes = false;
protected $dateFormat = 'int';
protected $allowedFields = [
'key',
'value',
];
}

View File

@@ -1,16 +0,0 @@
<?php namespace Tests\Support\Models;
use CodeIgniter\Entity;
/**
* Class SimpleEntity
*
* Simple Entity-type class for testing creating and saving entities
* in the model so we can support Entity/Repository type patterns.
*
* @package Tests\Support\Models
*/
class SimpleEntity extends Entity
{
}

View File

@@ -1,27 +0,0 @@
<?php namespace Tests\Support\Models;
use CodeIgniter\Model;
class UserModel extends Model
{
protected $table = 'user';
protected $allowedFields = [
'name',
'email',
'country',
'deleted_at',
];
protected $returnType = 'object';
protected $useSoftDeletes = true;
protected $dateFormat = 'datetime';
public $name = '';
public $email = '';
public $country = '';
}

View File

@@ -1,30 +0,0 @@
<?php namespace Tests\Support\Models;
use CodeIgniter\Model;
class ValidErrorsModel extends Model
{
protected $table = 'job';
protected $returnType = 'object';
protected $useSoftDeletes = false;
protected $dateFormat = 'int';
protected $allowedFields = [
'name',
'description',
];
protected $validationRules = [
'name' => [
'required',
'min_length[10]',
'errors' => [
'min_length' => 'Minimum Length Error',
]
],
'token' => 'in_list[{id}]',
];
}

View File

@@ -1,34 +0,0 @@
<?php namespace Tests\Support\Models;
use CodeIgniter\Model;
class ValidModel extends Model
{
protected $table = 'job';
protected $returnType = 'object';
protected $useSoftDeletes = false;
protected $dateFormat = 'int';
protected $allowedFields = [
'name',
'description',
];
protected $validationRules = [
'name' => [
'required',
'min_length[3]',
],
'token' => 'in_list[{id}]',
];
protected $validationMessages = [
'name' => [
'required' => 'You forgot to name the baby.',
'min_length' => 'Too short, man!',
],
];
}

View File

@@ -1,24 +0,0 @@
<?php
namespace Tests\Support\RESTful;
use CodeIgniter\RESTful\ResourceController;
class MockResourceController extends ResourceController
{
public function getModel()
{
return $this->model;
}
public function getModelName()
{
return $this->modelName;
}
public function getFormat()
{
return $this->format;
}
}

View File

@@ -1,24 +0,0 @@
<?php
namespace Tests\Support\RESTful;
use CodeIgniter\RESTful\ResourcePresenter;
class MockResourcePresenter extends ResourcePresenter
{
public function getModel()
{
return $this->model;
}
public function getModelName()
{
return $this->modelName;
}
public function getFormat()
{
return $this->format;
}
}

View File

@@ -1,11 +0,0 @@
<?php
namespace Tests\Support\RESTful;
use CodeIgniter\RESTful\ResourceController;
/**
* An extendable controller to provide a RESTful API for a resource.
*/
class Worker extends ResourceController
{
}

View File

@@ -1,12 +0,0 @@
<?php
namespace Tests\Support\RESTful;
use CodeIgniter\RESTful\ResourcePresenter;
/**
* An extendable controller to provide a RESTful API for a resource.
*/
class Worker2 extends ResourcePresenter
{
}

View File

@@ -1,17 +0,0 @@
<?php namespace Tests\Support\Security;
use CodeIgniter\Security\Security;
use CodeIgniter\HTTP\RequestInterface;
class MockSecurity extends Security
{
public function CSRFSetCookie(RequestInterface $request)
{
$_COOKIE['csrf_cookie_name'] = $this->CSRFHash;
return $this;
}
//--------------------------------------------------------------------
}

View File

@@ -1,70 +0,0 @@
<?php namespace CodeIgniter;
use CIUnitTestCase;
use Config\Services as ConfigServices;
/**
* Services class for testing.
*/
class Services
{
/**
* Mock objects for testing which are returned if exist.
*
* @var array
*/
static protected $mocks = [];
//--------------------------------------------------------------------
/**
* Reset shared instances and mocks for testing.
*/
public static function reset()
{
static::$mocks = [];
CIUnitTestCase::setPrivateProperty(ConfigServices::class, 'instances', []);
}
//--------------------------------------------------------------------
/**
* Inject mock object for testing.
*
* @param string $name
* @param $mock
*/
public static function injectMock(string $name, $mock)
{
$name = strtolower($name);
static::$mocks[$name] = $mock;
}
//--------------------------------------------------------------------
/**
* Returns a service
*
* @param string $name
* @param array $arguments
*/
public static function __callStatic(string $name, array $arguments)
{
$name = strtolower($name);
// Returns mock if exists
if (isset(static::$mocks[$name]))
{
return static::$mocks[$name];
}
if (method_exists(ConfigServices::class, $name))
{
return ConfigServices::$name(...$arguments);
}
}
//--------------------------------------------------------------------
}

View File

@@ -1,72 +0,0 @@
<?php namespace Tests\Support\Session;
use CodeIgniter\Session\Session;
/**
* Class MockSession
*
* Provides a safe way to test the Session class itself,
* that doesn't interact with the session or cookies at all.
*/
class MockSession extends Session
{
/**
* Holds our "cookie" data.
*
* @var array
*/
public $cookies = [];
public $didRegenerate = false;
//--------------------------------------------------------------------
/**
* Sets the driver as the session handler in PHP.
* Extracted for easier testing.
*/
protected function setSaveHandler()
{
// session_set_save_handler($this->driver, true);
}
//--------------------------------------------------------------------
/**
* Starts the session.
* Extracted for testing reasons.
*/
protected function startSession()
{
// session_start();
}
//--------------------------------------------------------------------
/**
* Takes care of setting the cookie on the client side.
* Extracted for testing reasons.
*/
protected function setCookie()
{
$this->cookies[] = [
$this->sessionCookieName,
session_id(),
(empty($this->sessionExpiration) ? 0 : time() + $this->sessionExpiration),
$this->cookiePath,
$this->cookieDomain,
$this->cookieSecure,
true,
];
}
//--------------------------------------------------------------------
public function regenerate(bool $destroy = false)
{
$this->didRegenerate = true;
$_SESSION['__ci_last_regenerate'] = time();
}
//--------------------------------------------------------------------
}

View File

@@ -1,14 +0,0 @@
<?php
namespace Tests\Support;
use CodeIgniter\Entity;
class SomeEntity extends Entity
{
protected $attributes = [
'foo' => null,
'bar' => null,
];
}

View File

@@ -1,14 +0,0 @@
<?php namespace Tests\Support\Validation;
class TestRules {
public function customError(string $str, string &$error = null)
{
$error = 'My lovely error';
return false;
}
//--------------------------------------------------------------------
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -1,17 +0,0 @@
<?php
namespace Tests\Support\View;
class MockTable extends \CodeIgniter\View\Table {
// Override inaccessible protected method
public function __call($method, $params)
{
if (is_callable([$this, '_' . $method]))
{
return call_user_func_array([$this, '_' . $method], $params);
}
throw new BadMethodCallException('Method ' . $method . ' was not found');
}
}

View File

@@ -1,52 +0,0 @@
<?php namespace Tests\Support\View;
/**
* Class SampleClass
*
* This class is only used to provide a reference point
* during tests to make sure that things work as expected.
*/
class SampleClass {
public function index()
{
return 'Hello World';
}
public function hello()
{
return 'Hello';
}
//--------------------------------------------------------------------
public function echobox($params)
{
if (is_array($params))
{
$params = implode(',', $params);
}
return $params;
}
//--------------------------------------------------------------------
public static function staticEcho($params)
{
if (is_array($params))
{
$params = implode(',', $params);
}
return $params;
}
//--------------------------------------------------------------------
public function work($p1, $p2, $p4)
{
return 'Right on';
}
}

View File

@@ -1 +0,0 @@
<h1><?= $testString ?></h1>

View File

@@ -1 +0,0 @@
<h1>{testString}</h1>

View File

@@ -1,32 +0,0 @@
<?php
ini_set('error_reporting', E_ALL);
;
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
// Make sure it recognizes that we're testing.
$_SERVER['CI_ENVIRONMENT'] = 'testing';
define('ENVIRONMENT', 'testing');
// Load our paths config file
require __DIR__ . '/../../app/Config/Paths.php';
// path to the directory that holds the front controller (index.php)
define('FCPATH', realpath(__DIR__ . '/../../') . '/public' . DIRECTORY_SEPARATOR);
// The path to the "tests" directory
define('TESTPATH', realpath(__DIR__ . '/../') . DIRECTORY_SEPARATOR);
define('SUPPORTPATH', realpath(TESTPATH . '_support/') . DIRECTORY_SEPARATOR);
// Set environment values that would otherwise stop the framework from functioning during tests.
if (! isset($_SERVER['app.baseURL']))
{
$_SERVER['app.baseURL'] = 'http://example.com';
}
//--------------------------------------------------------------------
// Load our TestCase
//--------------------------------------------------------------------
require __DIR__ . '/CIUnitTestCase.php';

View File

@@ -1,70 +0,0 @@
Code Coverage Report:
2016-03-31 06:36:22
Summary:
Classes: 29.51% (18/61)
Methods: 42.91% (227/529)
Lines: 53.58% (1967/3671)
\CodeIgniter::CodeIgniter
Methods: 28.57% ( 4/14) Lines: 69.11% ( 85/123)
\CodeIgniter::Controller
Methods: 0.00% ( 0/ 2) Lines: 66.67% ( 6/ 9)
\CodeIgniter\Autoloader::Autoloader
Methods: 42.86% ( 3/ 7) Lines: 89.36% ( 42/ 47)
\CodeIgniter\Autoloader::FileLocator
Methods: 100.00% ( 3/ 3) Lines: 100.00% ( 39/ 39)
\CodeIgniter\CLI::CLI
Methods: 6.25% ( 1/16) Lines: 2.54% ( 3/118)
\CodeIgniter\Config::AutoloadConfig
Methods: 100.00% ( 1/ 1) Lines: 100.00% ( 52/ 52)
\CodeIgniter\Config::BaseConfig
Methods: 50.00% ( 1/ 2) Lines: 83.33% ( 15/ 18)
\CodeIgniter\Config::DotEnv
Methods: 62.50% ( 5/ 8) Lines: 89.29% ( 50/ 56)
\CodeIgniter\Database::BaseBuilder
Methods: 43.33% (39/90) Lines: 62.25% (460/739)
\CodeIgniter\Database::BaseConnection
Methods: 0.00% ( 0/17) Lines: 3.33% ( 2/ 60)
\CodeIgniter\Database::BaseQuery
Methods: 64.71% (11/17) Lines: 74.44% ( 67/ 90)
\CodeIgniter\Debug::Exceptions
Methods: 10.00% ( 1/10) Lines: 2.91% ( 3/103)
\CodeIgniter\Debug::Timer
Methods: 75.00% ( 3/ 4) Lines: 95.24% ( 20/ 21)
\CodeIgniter\HTTP::CLIRequest
Methods: 33.33% ( 2/ 6) Lines: 40.00% ( 14/ 35)
\CodeIgniter\HTTP::CURLRequest
Methods: 62.50% (10/16) Lines: 68.49% (100/146)
\CodeIgniter\HTTP::Header
Methods: 88.89% ( 8/ 9) Lines: 96.88% ( 31/ 32)
\CodeIgniter\HTTP::IncomingRequest
Methods: 60.00% ( 6/10) Lines: 54.05% ( 40/ 74)
\CodeIgniter\HTTP::Message
Methods: 78.57% (11/14) Lines: 86.21% ( 50/ 58)
\CodeIgniter\HTTP::Negotiate
Methods: 75.00% ( 9/12) Lines: 87.65% ( 71/ 81)
\CodeIgniter\HTTP::Request
Methods: 57.14% ( 4/ 7) Lines: 45.79% ( 49/107)
\CodeIgniter\HTTP::Response
Methods: 53.85% ( 7/13) Lines: 79.01% ( 64/ 81)
\CodeIgniter\HTTP::URI
Methods: 81.82% (27/33) Lines: 93.44% (171/183)
\CodeIgniter\HTTP\Files::FileCollection
Methods: 66.67% ( 4/ 6) Lines: 96.49% ( 55/ 57)
\CodeIgniter\HTTP\Files::UploadedFile
Methods: 42.86% ( 6/14) Lines: 39.22% ( 20/ 51)
\CodeIgniter\Hooks::Hooks
Methods: 66.67% ( 4/ 6) Lines: 92.31% ( 36/ 39)
\CodeIgniter\Log::Logger
Methods: 76.92% (10/13) Lines: 92.05% ( 81/ 88)
\CodeIgniter\Router::RouteCollection
Methods: 74.36% (29/39) Lines: 79.64% (133/167)
\CodeIgniter\Router::Router
Methods: 37.50% ( 6/16) Lines: 78.57% ( 77/ 98)
\CodeIgniter\Security::Security
Methods: 100.00% ( 6/ 6) Lines: 100.00% ( 50/ 50)
\CodeIgniter\View::View
Methods: 85.71% ( 6/ 7) Lines: 97.14% ( 34/ 35)