phpmyadmin/test/classes/RoutingTest.php
Maurício Meneghini Fauth 0062ce6b01
Merge branch 'QA_5_2'
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2022-07-23 14:26:00 -03:00

72 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use FastRoute\Dispatcher;
use PhpMyAdmin\Controllers\HomeController;
use PhpMyAdmin\Routing;
use function copy;
use function method_exists;
use function unlink;
use const CACHE_DIR;
use const ROOT_PATH;
/**
* @covers \PhpMyAdmin\Routing
*/
class RoutingTest extends AbstractTestCase
{
/**
* Test for Routing::getDispatcher
*/
public function testGetDispatcher(): void
{
$expected = [Dispatcher::FOUND, HomeController::class, []];
$cacheFilename = CACHE_DIR . 'routes.cache.php';
$validCacheFilename = ROOT_PATH . 'test/test_data/routes/routes-valid.cache.txt';
$invalidCacheFilename = ROOT_PATH . 'test/test_data/routes/routes-invalid.cache.txt';
$GLOBALS['cfg']['environment'] = null;
$this->assertDirectoryIsWritable(CACHE_DIR);
// Valid cache file.
$this->assertTrue(copy($validCacheFilename, $cacheFilename));
$dispatcher = Routing::getDispatcher();
$this->assertInstanceOf(Dispatcher::class, $dispatcher);
$this->assertSame($expected, $dispatcher->dispatch('GET', '/'));
$this->assertFileEquals($validCacheFilename, $cacheFilename);
// Invalid cache file.
$this->assertTrue(copy($invalidCacheFilename, $cacheFilename));
$dispatcher = Routing::getDispatcher();
$this->assertInstanceOf(Dispatcher::class, $dispatcher);
$this->assertSame($expected, $dispatcher->dispatch('GET', '/'));
$this->assertFileNotEquals($invalidCacheFilename, $cacheFilename);
// Create new cache file.
$this->assertTrue(unlink($cacheFilename));
if (method_exists($this, 'assertFileDoesNotExist')) {
$this->assertFileDoesNotExist($cacheFilename);
} else {
/** @psalm-suppress DeprecatedMethod */
$this->assertFileNotExists($cacheFilename);
}
$dispatcher = Routing::getDispatcher();
$this->assertInstanceOf(Dispatcher::class, $dispatcher);
$this->assertSame($expected, $dispatcher->dispatch('GET', '/'));
$this->assertFileExists($cacheFilename);
// Without a cache file.
$GLOBALS['cfg']['environment'] = 'development';
$dispatcher = Routing::getDispatcher();
$this->assertInstanceOf(Dispatcher::class, $dispatcher);
$this->assertSame($expected, $dispatcher->dispatch('GET', '/'));
}
}