shlink/module/Core/test/Config/BasePathPrefixerTest.php
2019-09-13 20:17:30 +02:00

85 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
namespace ShlinkioTest\Shlink\Core\Config;
use PHPUnit\Framework\TestCase;
use Shlinkio\Shlink\Core\Config\BasePathPrefixer;
class BasePathPrefixerTest extends TestCase
{
/** @var BasePathPrefixer */
private $prefixer;
public function setUp(): void
{
$this->prefixer = new BasePathPrefixer();
}
/**
* @test
* @dataProvider provideConfig
*/
public function parsesConfigAsExpected(
array $originalConfig,
array $expectedRoutes,
array $expectedMiddlewares,
string $expectedHostname
): void {
[
'routes' => $routes,
'middleware_pipeline' => $middlewares,
'url_shortener' => $urlShortener,
] = ($this->prefixer)($originalConfig);
$this->assertEquals($expectedRoutes, $routes);
$this->assertEquals($expectedMiddlewares, $middlewares);
$this->assertEquals([
'domain' => [
'hostname' => $expectedHostname,
],
], $urlShortener);
}
public function provideConfig(): iterable
{
yield 'without anything' => [[], [], [], ''];
yield 'with empty options' => [
[
'routes' => [],
'middleware_pipeline' => [],
'url_shortener' => [],
],
[],
[],
'',
];
yield 'with non-empty options' => [
[
'routes' => [
['path' => '/something'],
['path' => '/something-else'],
],
'middleware_pipeline' => [
['with' => 'no_path'],
['path' => '/rest', 'middleware' => []],
],
'url_shortener' => [
'domain' => [
'hostname' => 'doma.in',
],
],
'router' => ['base_path' => '/foo/bar'],
],
[
['path' => '/foo/bar/something'],
['path' => '/foo/bar/something-else'],
],
[
['with' => 'no_path'],
['path' => '/foo/bar/rest', 'middleware' => []],
],
'doma.in/foo/bar',
];
}
}