Ensured base path is not prefixed more than it should

This commit is contained in:
Alejandro Celaya 2022-03-14 19:26:02 +01:00
parent 01bae358f9
commit 613bdd82b0
4 changed files with 4 additions and 37 deletions

View File

@ -51,7 +51,7 @@
"shlinkio/shlink-config": "^1.6", "shlinkio/shlink-config": "^1.6",
"shlinkio/shlink-event-dispatcher": "^2.3", "shlinkio/shlink-event-dispatcher": "^2.3",
"shlinkio/shlink-importer": "^2.5", "shlinkio/shlink-importer": "^2.5",
"shlinkio/shlink-installer": "dev-develop#ea5e967 as 7.1", "shlinkio/shlink-installer": "dev-develop#d02f256 as 7.1",
"shlinkio/shlink-ip-geolocation": "^2.2", "shlinkio/shlink-ip-geolocation": "^2.2",
"symfony/console": "^6.0", "symfony/console": "^6.0",
"symfony/filesystem": "^6.0", "symfony/filesystem": "^6.0",

View File

@ -209,7 +209,7 @@ class ListShortUrlsCommand extends AbstractWithDateRangeCommand
} }
if ($input->getOption('show-api-key')) { if ($input->getOption('show-api-key')) {
$columnsMap['API Key'] = static fn (array $_, ShortUrl $shortUrl): string => $columnsMap['API Key'] = static fn (array $_, ShortUrl $shortUrl): string =>
(string) $shortUrl->authorApiKey(); $shortUrl->authorApiKey()?->__toString() ?? '';
} }
if ($input->getOption('show-api-key-name')) { if ($input->getOption('show-api-key-name')) {
$columnsMap['API Key Name'] = static fn (array $_, ShortUrl $shortUrl): ?string => $columnsMap['API Key Name'] = static fn (array $_, ShortUrl $shortUrl): ?string =>

View File

@ -13,7 +13,6 @@ class BasePathPrefixer
public function __invoke(array $config): array public function __invoke(array $config): array
{ {
$basePath = $config['router']['base_path'] ?? ''; $basePath = $config['router']['base_path'] ?? '';
$config['url_shortener']['domain']['hostname'] .= $basePath;
foreach (self::ELEMENTS_WITH_PATH as $configKey) { foreach (self::ELEMENTS_WITH_PATH as $configKey) {
$config[$configKey] = $this->prefixPathsWithBasePath($configKey, $config, $basePath); $config[$configKey] = $this->prefixPathsWithBasePath($configKey, $config, $basePath);

View File

@ -24,42 +24,16 @@ class BasePathPrefixerTest extends TestCase
array $originalConfig, array $originalConfig,
array $expectedRoutes, array $expectedRoutes,
array $expectedMiddlewares, array $expectedMiddlewares,
string $expectedHostname,
): void { ): void {
[ ['routes' => $routes, 'middleware_pipeline' => $middlewares] = ($this->prefixer)($originalConfig);
'routes' => $routes,
'middleware_pipeline' => $middlewares,
'url_shortener' => $urlShortener,
] = ($this->prefixer)($originalConfig);
self::assertEquals($expectedRoutes, $routes); self::assertEquals($expectedRoutes, $routes);
self::assertEquals($expectedMiddlewares, $middlewares); self::assertEquals($expectedMiddlewares, $middlewares);
self::assertEquals([
'domain' => [
'hostname' => $expectedHostname,
],
], $urlShortener);
} }
public function provideConfig(): iterable public function provideConfig(): iterable
{ {
$urlShortener = [ yield 'with empty options' => [['routes' => []], [], []];
'domain' => [
'hostname' => null,
],
];
yield 'without anything' => [['url_shortener' => $urlShortener], [], [], ''];
yield 'with empty options' => [
[
'routes' => [],
'middleware_pipeline' => [],
'url_shortener' => $urlShortener,
],
[],
[],
'',
];
yield 'with non-empty options' => [ yield 'with non-empty options' => [
[ [
'routes' => [ 'routes' => [
@ -70,11 +44,6 @@ class BasePathPrefixerTest extends TestCase
['with' => 'no_path'], ['with' => 'no_path'],
['path' => '/rest', 'middleware' => []], ['path' => '/rest', 'middleware' => []],
], ],
'url_shortener' => [
'domain' => [
'hostname' => 'doma.in',
],
],
'router' => ['base_path' => '/foo/bar'], 'router' => ['base_path' => '/foo/bar'],
], ],
[ [
@ -85,7 +54,6 @@ class BasePathPrefixerTest extends TestCase
['with' => 'no_path'], ['with' => 'no_path'],
['path' => '/foo/bar/rest', 'middleware' => []], ['path' => '/foo/bar/rest', 'middleware' => []],
], ],
'doma.in/foo/bar',
]; ];
} }
} }