fix Config::get_self_url() invoked from plugin context, better deal with multiple trailing slashes in URL, update phpunit image path

This commit is contained in:
Andrew Dolgov
2024-09-14 10:53:40 +03:00
parent 3619ee97c5
commit 78c903cb7f
3 changed files with 15 additions and 7 deletions

View File

@@ -490,13 +490,9 @@ class Config {
$proto = self::is_server_https() ? 'https' : 'http';
$self_url_path = $proto . '://' . $_SERVER["HTTP_HOST"] . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
$self_url_path = preg_replace("/(\/api\/{1,})?(\w+\.php)?(\?.*$)?$/", "", $self_url_path);
$self_url_path = preg_replace("/(\/api\/{1,}|\/plugins(.local)?\/.{1,}\/{1,})?(\w+\.php)?(\?.*$)?$/", "", $self_url_path);
if (substr($self_url_path, -1) === "/") {
return substr($self_url_path, 0, -1);
} else {
return $self_url_path;
}
return rtrim($self_url_path, "/");
}
}
/* sanity check stuff */

View File

@@ -104,6 +104,18 @@ final class SelfUrlPathTest extends TestCase {
);
}
public function test_self_url_i(): void {
$_SERVER = [];
$_SERVER["HTTP_HOST"] = "example.com";
$_SERVER["REQUEST_URI"] = "/tt-rss////plugins.local/example///api/long path/test.php";
$this->assertEquals(
'http://example.com/tt-rss',
Config::get_self_url(true)
);
}
public function test_get_self_dir(): void {
$this->assertEquals(
dirname(__DIR__), # we're in (app)/tests/

View File

@@ -1,5 +1,5 @@
#!/bin/sh
docker run --rm -v $(pwd):/app \
--workdir /app registry.fakecake.org/infra/php8.3-alpine:3.19 \
--workdir /app registry.fakecake.org/infra/php-fpm8.3-alpine3.19:latest \
php83 -d memory_limit=-1 ./vendor/bin/phpunit --exclude integration