[BUGFIX] Fixed group not matching domain with no parameters (issue: #468).

- Added unit-tests
This commit is contained in:
Simon Sessingø
2021-03-26 01:32:01 +01:00
parent 39ee1bb7cd
commit 073479f9dd
2 changed files with 42 additions and 3 deletions
+6 -3
View File
@@ -26,12 +26,15 @@ class RouteGroup extends Route implements IGroupRoute
foreach ($this->domains as $domain) { foreach ($this->domains as $domain) {
// If domain has no parameters but matches
if ($domain === $request->getHost()) {
return true;
}
$parameters = $this->parseParameters($domain, $request->getHost(), '.*'); $parameters = $this->parseParameters($domain, $request->getHost(), '.*');
if ($parameters !== null && \count($parameters) !== 0) { if ($parameters !== null && \count($parameters) !== 0) {
$this->parameters = $parameters; $this->parameters = $parameters;
return true; return true;
} }
} }
@@ -56,7 +59,7 @@ class RouteGroup extends Route implements IGroupRoute
$prefix = $this->prefix; $prefix = $this->prefix;
foreach($this->getParameters() as $parameter => $value) { foreach ($this->getParameters() as $parameter => $value) {
$prefix = str_ireplace('{' . $parameter . '}', $value, $prefix); $prefix = str_ireplace('{' . $parameter . '}', $value, $prefix);
} }
@@ -107,6 +107,42 @@ class RouterRouteTest extends \PHPUnit\Framework\TestCase
$this->assertEquals('it, system', $response); $this->assertEquals('it, system', $response);
} }
public function testFixedDomain()
{
$result = false;
TestRouter::request()->setHost('admin.world.com');
TestRouter::group(['domain' => 'admin.world.com'], function () use (&$result) {
TestRouter::get('/test', function ($subdomain = null) use (&$result) {
$result = true;
});
});
TestRouter::debug('/test', 'get');
$this->assertTrue($result);
}
public function testFixedNotAllowedDomain()
{
$result = false;
TestRouter::request()->setHost('other.world.com');
TestRouter::group(['domain' => 'admin.world.com'], function () use (&$result) {
TestRouter::get('/', function ($subdomain = null) use (&$result) {
$result = true;
});
});
try {
TestRouter::debug('/', 'get');
} catch(\Exception $e) {
}
$this->assertFalse($result);
}
public function testDomainAllowedRoute() public function testDomainAllowedRoute()
{ {
$result = false; $result = false;