178 lines
4.4 KiB
PHP
178 lines
4.4 KiB
PHP
<?php
|
|
namespace Consolidation\SiteAlias;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class SiteSpecParserTest extends TestCase
|
|
{
|
|
use FixtureFactory;
|
|
|
|
/**
|
|
* @dataProvider parserTestValues
|
|
*/
|
|
public function testSiteSpecParser(
|
|
$spec,
|
|
$expected)
|
|
{
|
|
$root = $this->siteDir();
|
|
$fixtureSite = '/' . basename($root);
|
|
$parser = new SiteSpecParser();
|
|
|
|
// If the test spec begins with '/fixtures', substitute the
|
|
// actual path to our fixture site.
|
|
$spec = preg_replace('%^/fixtures%', $root, $spec);
|
|
|
|
// Make sure that our spec is valid
|
|
$this->assertTrue($parser->validSiteSpec($spec));
|
|
|
|
// Parse it!
|
|
$result = $parser->parse($spec, $root);
|
|
|
|
// If the result contains the path to our fixtures site, replace
|
|
// it with the simple string '/fixtures'.
|
|
if (isset($result['root'])) {
|
|
$result['root'] = preg_replace("%.*$fixtureSite%", '/fixtures', $result['root']);
|
|
}
|
|
|
|
// Compare the altered result with the expected value.
|
|
$this->assertEquals($expected, $result);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider validSiteSpecs
|
|
*/
|
|
public function testValidSiteSpecs($spec)
|
|
{
|
|
$this->isSpecValid($spec, true);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider invalidSiteSpecs
|
|
*/
|
|
public function testInvalidSiteSpecs($spec)
|
|
{
|
|
$this->isSpecValid($spec, false);
|
|
}
|
|
|
|
protected function isSpecValid($spec, $expected)
|
|
{
|
|
$parser = new SiteSpecParser();
|
|
|
|
$result = $parser->validSiteSpec($spec);
|
|
$this->assertEquals($expected, $result);
|
|
}
|
|
|
|
public static function validSiteSpecs()
|
|
{
|
|
return [
|
|
[ '/path/to/drupal#uri' ],
|
|
[ 'user@server/path/to/drupal#uri' ],
|
|
[ 'user.name@example.com/path/to/drupal#uri' ],
|
|
[ 'user@server/path/to/drupal' ],
|
|
[ 'user@example.com/path/to/drupal' ],
|
|
[ 'user@server#uri' ],
|
|
[ 'user@example.com#uri' ],
|
|
[ '#uri' ],
|
|
];
|
|
}
|
|
|
|
public static function invalidSiteSpecs()
|
|
{
|
|
return [
|
|
[ 'uri' ],
|
|
[ '@/#' ],
|
|
[ 'user@#uri' ],
|
|
[ '@server/path/to/drupal#uri' ],
|
|
[ 'user@server/path/to/drupal#' ],
|
|
[ 'user@server/path/to/drupal#uri!' ],
|
|
[ 'user@server/path/to/drupal##uri' ],
|
|
[ 'user#server/path/to/drupal#uri' ],
|
|
];
|
|
}
|
|
|
|
public static function parserTestValues()
|
|
{
|
|
return [
|
|
[
|
|
'user@server/path#somemultisite',
|
|
[
|
|
'user' => 'user',
|
|
'host' => 'server',
|
|
'root' => '/path',
|
|
'uri' => 'somemultisite',
|
|
],
|
|
],
|
|
|
|
[
|
|
'user.name@example.com/path#somemultisite',
|
|
[
|
|
'user' => 'user.name',
|
|
'host' => 'example.com',
|
|
'root' => '/path',
|
|
'uri' => 'somemultisite',
|
|
],
|
|
],
|
|
|
|
[
|
|
'user@server/path',
|
|
[
|
|
'user' => 'user',
|
|
'host' => 'server',
|
|
'root' => '/path',
|
|
'uri' => 'default',
|
|
],
|
|
],
|
|
|
|
[
|
|
'user.name@example.com/path',
|
|
[
|
|
'user' => 'user.name',
|
|
'host' => 'example.com',
|
|
'root' => '/path',
|
|
'uri' => 'default',
|
|
],
|
|
],
|
|
|
|
[
|
|
'/fixtures#mymultisite',
|
|
[
|
|
'root' => '/fixtures',
|
|
'uri' => 'mymultisite',
|
|
],
|
|
],
|
|
|
|
[
|
|
'#mymultisite',
|
|
[
|
|
'root' => '/fixtures',
|
|
'uri' => 'mymultisite',
|
|
],
|
|
],
|
|
|
|
[
|
|
'/fixtures#somemultisite',
|
|
[
|
|
],
|
|
],
|
|
|
|
[
|
|
'/path#somemultisite',
|
|
[
|
|
],
|
|
],
|
|
|
|
[
|
|
'/path#mymultisite',
|
|
[
|
|
],
|
|
],
|
|
|
|
[
|
|
'#somemultisite',
|
|
[
|
|
],
|
|
],
|
|
];
|
|
}
|
|
}
|