Merge pull request #561 from arabcoders/dev
Allow backends to be served from /subfolders
This commit is contained in:
58
composer.lock
generated
58
composer.lock
generated
@@ -68,16 +68,16 @@
|
||||
},
|
||||
{
|
||||
"name": "dragonmantank/cron-expression",
|
||||
"version": "v3.3.3",
|
||||
"version": "v3.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dragonmantank/cron-expression.git",
|
||||
"reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a"
|
||||
"reference": "8c784d071debd117328803d86b2097615b457500"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a",
|
||||
"reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a",
|
||||
"url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500",
|
||||
"reference": "8c784d071debd117328803d86b2097615b457500",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -90,10 +90,14 @@
|
||||
"require-dev": {
|
||||
"phpstan/extension-installer": "^1.0",
|
||||
"phpstan/phpstan": "^1.0",
|
||||
"phpstan/phpstan-webmozart-assert": "^1.0",
|
||||
"phpunit/phpunit": "^7.0|^8.0|^9.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Cron\\": "src/Cron/"
|
||||
@@ -117,7 +121,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/dragonmantank/cron-expression/issues",
|
||||
"source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3"
|
||||
"source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -125,7 +129,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-08-10T19:36:49+00:00"
|
||||
"time": "2024-10-09T13:47:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "halaxa/json-machine",
|
||||
@@ -3561,12 +3565,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
||||
"reference": "6f63660a573ec1e6d48d54ff7c44dfb1e303f30d"
|
||||
"reference": "c3c55a0f6643119fa8699577cc83ca6256d98ab5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/6f63660a573ec1e6d48d54ff7c44dfb1e303f30d",
|
||||
"reference": "6f63660a573ec1e6d48d54ff7c44dfb1e303f30d",
|
||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/c3c55a0f6643119fa8699577cc83ca6256d98ab5",
|
||||
"reference": "c3c55a0f6643119fa8699577cc83ca6256d98ab5",
|
||||
"shasum": ""
|
||||
},
|
||||
"conflict": {
|
||||
@@ -3667,7 +3671,7 @@
|
||||
"concrete5/core": "<8.5.8|>=9,<9.1",
|
||||
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
|
||||
"contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4",
|
||||
"contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4",
|
||||
"contao/contao": "<=5.4.1",
|
||||
"contao/core": "<3.5.39",
|
||||
"contao/core-bundle": "<4.13.49|>=5,<5.3.15|>=5.4,<5.4.3",
|
||||
"contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8",
|
||||
@@ -3690,6 +3694,7 @@
|
||||
"derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3",
|
||||
"derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4",
|
||||
"desperado/xml-bundle": "<=0.1.7",
|
||||
"dev-lancer/minecraft-motd-parser": "<=1.0.5",
|
||||
"devgroup/dotplant": "<2020.09.14-dev",
|
||||
"directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2",
|
||||
"doctrine/annotations": "<1.2.7",
|
||||
@@ -3704,9 +3709,9 @@
|
||||
"dolibarr/dolibarr": "<19.0.2",
|
||||
"dompdf/dompdf": "<2.0.4",
|
||||
"doublethreedigital/guest-entries": "<3.1.2",
|
||||
"drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<=11.0.4",
|
||||
"drupal/core-recommended": ">=8,<=11.0.4",
|
||||
"drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<=11.0.4",
|
||||
"drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.2.9|>=10.3,<10.3.6|>=11,<11.0.5",
|
||||
"drupal/core-recommended": ">=8,<10.2.9|>=10.3,<10.3.6|>=11,<11.0.5",
|
||||
"drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<10.2.9|>=10.3,<10.3.6|>=11,<11.0.5",
|
||||
"duncanmcclean/guest-entries": "<3.1.2",
|
||||
"dweeves/magmi": "<=0.7.24",
|
||||
"ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2",
|
||||
@@ -3872,13 +3877,15 @@
|
||||
"klaviyo/magento2-extension": ">=1,<3",
|
||||
"knplabs/knp-snappy": "<=1.4.2",
|
||||
"kohana/core": "<3.3.3",
|
||||
"krayin/laravel-crm": "<1.2.2",
|
||||
"krayin/laravel-crm": "<=1.3",
|
||||
"kreait/firebase-php": ">=3.2,<3.8.1",
|
||||
"kumbiaphp/kumbiapp": "<=1.1.1",
|
||||
"la-haute-societe/tcpdf": "<6.2.22",
|
||||
"laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2",
|
||||
"laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1",
|
||||
"laminas/laminas-http": "<2.14.2",
|
||||
"lara-zeus/artemis": ">=1,<=1.0.6",
|
||||
"lara-zeus/dynamic-dashboard": ">=3,<=3.0.1",
|
||||
"laravel/fortify": "<1.11.1",
|
||||
"laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75",
|
||||
"laravel/laravel": ">=5.4,<5.4.22",
|
||||
@@ -3894,13 +3901,13 @@
|
||||
"librenms/librenms": "<2017.08.18",
|
||||
"liftkit/database": "<2.13.2",
|
||||
"lightsaml/lightsaml": "<1.3.5",
|
||||
"limesurvey/limesurvey": "<3.27.19",
|
||||
"limesurvey/limesurvey": "<6.5.12",
|
||||
"livehelperchat/livehelperchat": "<=3.91",
|
||||
"livewire/livewire": ">2.2.4,<2.2.6|>=3.3.5,<3.4.9",
|
||||
"livewire/livewire": "<2.12.7|>=3.0.0.0-beta1,<3.5.2",
|
||||
"lms/routes": "<2.1.1",
|
||||
"localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2",
|
||||
"luyadev/yii-helpers": "<1.2.1",
|
||||
"magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch9|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch7|==2.4.7|>=2.4.7.0-patch1,<2.4.7.0-patch2",
|
||||
"magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch10|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch8|>=2.4.7.0-beta1,<2.4.7.0-patch3",
|
||||
"magento/core": "<=1.9.4.5",
|
||||
"magento/magento1ce": "<1.9.4.3-dev",
|
||||
"magento/magento1ee": ">=1,<1.14.4.3-dev",
|
||||
@@ -3914,6 +3921,7 @@
|
||||
"mautic/core": "<4.4.13|>=5,<5.1.1",
|
||||
"mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1",
|
||||
"mdanter/ecc": "<2",
|
||||
"mediawiki/cargo": "<3.6.1",
|
||||
"mediawiki/core": "<1.36.2",
|
||||
"mediawiki/matomo": "<2.4.3",
|
||||
"mediawiki/semantic-media-wiki": "<4.0.2",
|
||||
@@ -3970,7 +3978,7 @@
|
||||
"nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
|
||||
"october/backend": "<1.1.2",
|
||||
"october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1",
|
||||
"october/october": "<=3.4.4",
|
||||
"october/october": "<=3.6.4",
|
||||
"october/rain": "<1.0.472|>=1.1,<1.1.2",
|
||||
"october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.15",
|
||||
"omeka/omeka-s": "<4.0.3",
|
||||
@@ -4022,7 +4030,7 @@
|
||||
"phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5",
|
||||
"phpoffice/common": "<0.2.9",
|
||||
"phpoffice/phpexcel": "<1.8",
|
||||
"phpoffice/phpspreadsheet": "<1.29.1|>=2,<2.1.1|>=2.2,<2.2.1",
|
||||
"phpoffice/phpspreadsheet": "<1.29.2|>=2,<2.1.1|>=2.2,<2.3",
|
||||
"phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36",
|
||||
"phpservermon/phpservermon": "<3.6",
|
||||
"phpsysinfo/phpsysinfo": "<3.4.3",
|
||||
@@ -4132,7 +4140,7 @@
|
||||
"slim/slim": "<2.6",
|
||||
"slub/slub-events": "<3.0.3",
|
||||
"smarty/smarty": "<4.5.3|>=5,<5.1.1",
|
||||
"snipe/snipe-it": "<6.4.2",
|
||||
"snipe/snipe-it": "<7.0.10",
|
||||
"socalnick/scn-social-auth": "<1.15.2",
|
||||
"socialiteproviders/steam": "<1.1",
|
||||
"spatie/browsershot": "<3.57.4",
|
||||
@@ -4150,7 +4158,7 @@
|
||||
"subhh/libconnect": "<7.0.8|>=8,<8.1",
|
||||
"sukohi/surpass": "<1",
|
||||
"sulu/form-bundle": ">=2,<2.5.3",
|
||||
"sulu/sulu": "<1.6.44|>=2,<2.4.17|>=2.5,<2.5.13",
|
||||
"sulu/sulu": "<1.6.44|>=2,<2.6.5",
|
||||
"sumocoders/framework-user-bundle": "<1.4",
|
||||
"superbig/craft-audit": "<3.0.2",
|
||||
"swag/paypal": "<5.4.4",
|
||||
@@ -4222,13 +4230,13 @@
|
||||
"topthink/thinkphp": "<=3.2.3",
|
||||
"torrentpier/torrentpier": "<=2.4.3",
|
||||
"tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2",
|
||||
"tribalsystems/zenario": "<9.5.60602",
|
||||
"tribalsystems/zenario": "<=9.7.61188",
|
||||
"truckersmp/phpwhois": "<=4.3.1",
|
||||
"ttskch/pagination-service-provider": "<1",
|
||||
"twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2",
|
||||
"twig/twig": "<1.44.8|>=2,<2.16.1|>=3,<3.11.1|>=3.12,<3.14",
|
||||
"typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
|
||||
"typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
|
||||
"typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<12.4.21|>=13,<13.3.1",
|
||||
"typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1",
|
||||
"typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
|
||||
"typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1",
|
||||
@@ -4381,7 +4389,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-30T18:06:02+00:00"
|
||||
"time": "2024-10-11T18:06:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/cli-parser",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -172,7 +172,9 @@ final class Update
|
||||
|
||||
private function fromRequest(array $config, iRequest $request, iClient $client): array
|
||||
{
|
||||
$data = DataUtil::fromArray($request->getParsedBody());
|
||||
$data = DataUtil::fromArray(
|
||||
array_map(fn($v) => false === is_string($v) ? $v : trim($v), $request->getParsedBody())
|
||||
);
|
||||
|
||||
$newData = [
|
||||
'url' => $data->get('url'),
|
||||
|
||||
@@ -122,7 +122,9 @@ final class Add
|
||||
|
||||
private function fromRequest(string $type, iRequest $request, iClient $client): array
|
||||
{
|
||||
$data = DataUtil::fromArray($request->getParsedBody());
|
||||
$data = DataUtil::fromArray(
|
||||
array_map(fn($v) => false === is_string($v) ? $v : trim($v), $request->getParsedBody())
|
||||
);
|
||||
|
||||
$config = [
|
||||
'type' => $type,
|
||||
|
||||
@@ -12,27 +12,6 @@ class TestCase extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
protected TestHandler|null $handler = null;
|
||||
|
||||
/**
|
||||
* Prints logs to the standard output.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function printLogs(): void
|
||||
{
|
||||
if (null === $this->handler) {
|
||||
return;
|
||||
}
|
||||
|
||||
$d = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[0];
|
||||
$getScript = ag($d, 'file');
|
||||
$line = ag($d, 'line');
|
||||
|
||||
dump(
|
||||
$getScript . ':' . $line,
|
||||
array_map(fn($v) => $v['formatted'] ?? $v['message'], $this->handler->getRecords())
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the given closure throws an exception.
|
||||
*
|
||||
|
||||
@@ -88,7 +88,13 @@ final class Uri implements UriInterface, Stringable
|
||||
|
||||
public function __toString(): string
|
||||
{
|
||||
return self::createUriString($this->scheme, $this->getAuthority(), $this->path, $this->query, $this->fragment);
|
||||
return self::createUriString(
|
||||
$this->getScheme(),
|
||||
$this->getAuthority(),
|
||||
$this->getPath(),
|
||||
$this->getQuery(),
|
||||
$this->getFragment()
|
||||
);
|
||||
}
|
||||
|
||||
public function getScheme(): string
|
||||
|
||||
@@ -17,27 +17,27 @@ class UriTest extends TestCase
|
||||
'/',
|
||||
];
|
||||
|
||||
private UriInterface|null $uri = null;
|
||||
|
||||
protected function setUp(): void
|
||||
protected function getUri(): UriInterface
|
||||
{
|
||||
parent::setUp();
|
||||
$this->uri = new Uri('http://user:pass@host:81/path?query=string#fragment');
|
||||
return new Uri('http://user:pass@host:81/path?query=string#fragment');
|
||||
}
|
||||
|
||||
public function test_scheme()
|
||||
{
|
||||
$this->assertSame('http', $this->uri->getScheme(), 'The protocol should be http');
|
||||
$url2 = $this->uri->withScheme('https');
|
||||
$this->assertSame('http', $this->getUri()->getScheme(), 'The protocol should be http');
|
||||
$url2 = $this->getUri()->withScheme('https');
|
||||
$this->assertSame('https', $url2->getScheme(), 'The protocol should be https');
|
||||
|
||||
$obj = $this->getUri();
|
||||
|
||||
$this->assertSame(
|
||||
spl_object_id($this->uri),
|
||||
spl_object_id($this->uri->withScheme('HTTP')),
|
||||
spl_object_id($obj),
|
||||
spl_object_id($obj->withScheme('HTTP')),
|
||||
'The object should be the same if the scheme is the same'
|
||||
);
|
||||
|
||||
$this->checkException(
|
||||
closure: fn() => $this->uri->withScheme(false),
|
||||
closure: fn() => $this->getUri()->withScheme(false),
|
||||
reason: 'Exception should be thrown if the scheme is not a string',
|
||||
exception: InvalidArgumentException::class,
|
||||
exceptionMessage: 'Scheme must be a string'
|
||||
@@ -46,12 +46,13 @@ class UriTest extends TestCase
|
||||
|
||||
public function test_host()
|
||||
{
|
||||
$this->assertSame('host', $this->uri->getHost(), 'The host should be host');
|
||||
$url2 = $this->uri->withHost('host2');
|
||||
$this->assertSame('host', $this->getUri()->getHost(), 'The host should be host');
|
||||
$url2 = $this->getUri()->withHost('host2');
|
||||
$this->assertSame('host2', $url2->getHost(), 'The host should be host2');
|
||||
$obj = $this->getUri();
|
||||
$this->assertSame(
|
||||
spl_object_id($this->uri),
|
||||
spl_object_id($this->uri->withHost($this->uri->getHost())),
|
||||
spl_object_id($obj),
|
||||
spl_object_id($obj->withHost($this->getUri()->getHost())),
|
||||
'The object should be the same if the host is the same'
|
||||
);
|
||||
|
||||
@@ -63,7 +64,7 @@ class UriTest extends TestCase
|
||||
);
|
||||
|
||||
$this->checkException(
|
||||
closure: fn() => $this->uri->withHost(false),
|
||||
closure: fn() => $this->getUri()->withHost(false),
|
||||
reason: 'Exception should be thrown if the host is not a string',
|
||||
exception: InvalidArgumentException::class,
|
||||
exceptionMessage: 'Host must be a string'
|
||||
@@ -72,17 +73,18 @@ class UriTest extends TestCase
|
||||
|
||||
public function test_userInfo()
|
||||
{
|
||||
$this->assertSame('user:pass', $this->uri->getUserInfo(), 'The user info should be user:pass');
|
||||
$this->assertSame('user:pass', $this->getUri()->getUserInfo(), 'The user info should be user:pass');
|
||||
$obj = $this->getUri();
|
||||
$this->assertSame(
|
||||
spl_object_id($this->uri),
|
||||
spl_object_id($this->uri->withUserInfo('user', 'pass')),
|
||||
spl_object_id($obj),
|
||||
spl_object_id($obj->withUserInfo('user', 'pass')),
|
||||
'The object should be the same if the user info is the same'
|
||||
);
|
||||
|
||||
$url2 = $this->uri->withUserInfo('user2', 'pass2');
|
||||
$url2 = $this->getUri()->withUserInfo('user2', 'pass2');
|
||||
$this->assertSame('user2:pass2', $url2->getUserInfo(), 'The user info should be user2:pass2');
|
||||
|
||||
$url3 = $this->uri->withUserInfo('user3');
|
||||
$url3 = $this->getUri()->withUserInfo('user3');
|
||||
$this->assertSame('user3', $url3->getUserInfo(), 'The user info should be user3');
|
||||
|
||||
$this->checkException(
|
||||
@@ -93,14 +95,14 @@ class UriTest extends TestCase
|
||||
);
|
||||
|
||||
$this->checkException(
|
||||
closure: fn() => $this->uri->withUserInfo('foo', false),
|
||||
closure: fn() => $this->getUri()->withUserInfo('foo', false),
|
||||
reason: 'Exception should be thrown if the user info is not a string',
|
||||
exception: InvalidArgumentException::class,
|
||||
exceptionMessage: 'must be a string'
|
||||
);
|
||||
|
||||
$this->checkException(
|
||||
closure: fn() => $this->uri->withUserInfo(false, 'foo'),
|
||||
closure: fn() => $this->getUri()->withUserInfo(false, 'foo'),
|
||||
reason: 'Exception should be thrown if the user info is not a string',
|
||||
exception: InvalidArgumentException::class,
|
||||
exceptionMessage: 'must be a string'
|
||||
@@ -109,16 +111,17 @@ class UriTest extends TestCase
|
||||
|
||||
public function test_port()
|
||||
{
|
||||
$this->assertSame(81, $this->uri->getPort(), 'The port should be 80');
|
||||
$this->assertSame(81, $this->getUri()->getPort(), 'The port should be 80');
|
||||
$obj = $this->getUri();
|
||||
$this->assertSame(
|
||||
spl_object_id($this->uri),
|
||||
spl_object_id($this->uri->withPort(81)),
|
||||
spl_object_id($obj),
|
||||
spl_object_id($obj->withPort(81)),
|
||||
'The object should be the same if the port is the same'
|
||||
);
|
||||
$this->assertSame(8080, $this->uri->withPort(8080)->getPort(), 'The port should be 8080');
|
||||
$this->assertNull($this->uri->withPort(null)->getPort(), 'The port should be null');
|
||||
$this->assertSame(8080, $this->getUri()->withPort(8080)->getPort(), 'The port should be 8080');
|
||||
$this->assertNull($this->getUri()->withPort(null)->getPort(), 'The port should be null');
|
||||
$this->checkException(
|
||||
closure: fn() => $this->uri->withPort(65536),
|
||||
closure: fn() => $this->getUri()->withPort(65536),
|
||||
reason: 'Exception should be thrown if the port is invalid',
|
||||
exception: InvalidArgumentException::class,
|
||||
);
|
||||
@@ -133,10 +136,14 @@ class UriTest extends TestCase
|
||||
|
||||
public function test_authority()
|
||||
{
|
||||
$this->assertSame('user:pass@host:81', $this->uri->getAuthority(), 'The authority should be user:pass@host:81');
|
||||
$this->assertSame(
|
||||
'user:pass@host:81',
|
||||
$this->getUri()->getAuthority(),
|
||||
'The authority should be user:pass@host:81'
|
||||
);
|
||||
$this->assertSame(
|
||||
'',
|
||||
$this->uri->withHost('')->getAuthority(),
|
||||
$this->getUri()->withHost('')->getAuthority(),
|
||||
'The authority should be empty if the host is empty'
|
||||
);
|
||||
}
|
||||
@@ -156,36 +163,48 @@ class UriTest extends TestCase
|
||||
$this->assertSame('/path/', $uri->withPath('/path/')->getPath(), 'The path should be /path');
|
||||
$this->assertSame(
|
||||
'/path/bar',
|
||||
$this->uri->withPath('/bar')->getPath(),
|
||||
$this->getUri()->withPath('/bar')->getPath(),
|
||||
'The path should be /path/bar due to basePath'
|
||||
);
|
||||
$this->checkException(
|
||||
closure: fn() => $this->uri->withPath(false),
|
||||
closure: fn() => $this->getUri()->withPath(false),
|
||||
reason: 'Exception should be thrown if the path is not a string',
|
||||
exception: InvalidArgumentException::class,
|
||||
exceptionMessage: 'must be a string'
|
||||
);
|
||||
$this->assertSame('/path/foo/', $this->uri->withHost('')->withPath('///foo/')->getPath());
|
||||
$this->assertSame('/path/foo/', $this->getUri()->withHost('')->withPath('///foo/')->getPath());
|
||||
$this->assertSame('/foo/', $uri->withPath('foo/')->getPath());
|
||||
$this->assertSame(
|
||||
'/path/foo/',
|
||||
$this->getUri()->withPath('/foo/')->getPath(),
|
||||
'withPath should consider the base path if it was given in constructor.'
|
||||
);
|
||||
|
||||
$this->assertSame(
|
||||
'http://user:pass@host:81/path/foo/?query=string#fragment',
|
||||
(string)$this->getUri()->withPath('/foo/'),
|
||||
'uri string should consider the base path if it was given in constructor.'
|
||||
);
|
||||
}
|
||||
|
||||
public function test_query()
|
||||
{
|
||||
$this->assertSame('query=string', $this->uri->getQuery(), 'The query should be query=string');
|
||||
$this->assertSame('query=string', $this->getUri()->getQuery(), 'The query should be query=string');
|
||||
$obj = $this->getUri();
|
||||
$this->assertSame(
|
||||
spl_object_id($this->uri),
|
||||
spl_object_id($this->uri->withQuery('query=string')),
|
||||
spl_object_id($obj),
|
||||
spl_object_id($obj->withQuery('query=string')),
|
||||
'The object should be the same if the query is the same'
|
||||
);
|
||||
$this->assertSame(
|
||||
'query=string2',
|
||||
$this->uri->withQuery('query=string2')->getQuery(),
|
||||
$this->getUri()->withQuery('query=string2')->getQuery(),
|
||||
'The query should be query=string2'
|
||||
);
|
||||
$this->assertSame('', $this->uri->withQuery('')->getQuery(), 'The query should be empty');
|
||||
$this->assertSame('', $this->getUri()->withQuery('')->getQuery(), 'The query should be empty');
|
||||
|
||||
$this->checkException(
|
||||
closure: fn() => $this->uri->withQuery(false),
|
||||
closure: fn() => $this->getUri()->withQuery(false),
|
||||
reason: 'parse_url returns false if the port is invalid',
|
||||
exception: InvalidArgumentException::class,
|
||||
exceptionMessage: 'must be a string'
|
||||
@@ -194,21 +213,22 @@ class UriTest extends TestCase
|
||||
|
||||
public function test_fragment()
|
||||
{
|
||||
$this->assertSame('fragment', $this->uri->getFragment(), 'The fragment should be fragment');
|
||||
$this->assertSame('fragment', $this->getUri()->getFragment(), 'The fragment should be fragment');
|
||||
$obj = $this->getUri();
|
||||
$this->assertSame(
|
||||
spl_object_id($this->uri),
|
||||
spl_object_id($this->uri->withFragment('fragment')),
|
||||
spl_object_id($obj),
|
||||
spl_object_id($obj->withFragment('fragment')),
|
||||
'The object should be the same if the fragment is the same'
|
||||
);
|
||||
$this->assertSame(
|
||||
'fragment2',
|
||||
$this->uri->withFragment('fragment2')->getFragment(),
|
||||
$this->getUri()->withFragment('fragment2')->getFragment(),
|
||||
'The fragment should be fragment2'
|
||||
);
|
||||
$this->assertSame('', $this->uri->withFragment('')->getFragment(), 'The fragment should be empty');
|
||||
$this->assertSame('', $this->getUri()->withFragment('')->getFragment(), 'The fragment should be empty');
|
||||
|
||||
$this->checkException(
|
||||
closure: fn() => $this->uri->withFragment(false),
|
||||
closure: fn() => $this->getUri()->withFragment(false),
|
||||
reason: 'Exception should be thrown if the fragment is not a string',
|
||||
exception: InvalidArgumentException::class,
|
||||
exceptionMessage: 'must be a string'
|
||||
@@ -219,7 +239,7 @@ class UriTest extends TestCase
|
||||
{
|
||||
$this->assertSame(
|
||||
'http://user:pass@host:81/path?query=string#fragment',
|
||||
$this->uri->__toString(),
|
||||
$this->getUri()->__toString(),
|
||||
'The string should be http://user:pass@host:81/path?query=string#fragment'
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user