/** * Tests path-based URL generation. */ public function testPathBasedURLGeneration() { $base_path = '/subdir'; $base_url = 'http://www.example.com' . $base_path; $this->generator->setBasePath($base_path . '/'); $this->generator->setBaseUrl($base_url . '/'); foreach (array('', 'index.php/') as $script_path) { $this->generator->setScriptPath($script_path); foreach (array(FALSE, TRUE) as $absolute) { // Get the expected start of the path string. $base = ($absolute ? $base_url . '/' : $base_path . '/') . $script_path; $url = $base . 'node/123'; $result = $this->generator->generateFromPath('node/123', array('absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $url = $base . 'node/123#foo'; $result = $this->generator->generateFromPath('node/123', array('fragment' => 'foo', 'absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $url = $base . 'node/123?foo'; $result = $this->generator->generateFromPath('node/123', array('query' => array('foo' => NULL), 'absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $url = $base . 'node/123?foo=bar&bar=baz'; $result = $this->generator->generateFromPath('node/123', array('query' => array('foo' => 'bar', 'bar' => 'baz'), 'absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $url = $base . 'node/123?foo#bar'; $result = $this->generator->generateFromPath('node/123', array('query' => array('foo' => NULL), 'fragment' => 'bar', 'absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $url = $base; $result = $this->generator->generateFromPath('<front>', array('absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); } } }
/** * Tests path-based URL generation. */ public function testPathBasedURLGeneration() { $base_path = '/subdir'; $base_url = 'http://www.example.com' . $base_path; foreach (array('', 'index.php/') as $script_path) { foreach (array(FALSE, TRUE) as $absolute) { // Setup a fake request which looks like a Drupal installed under the // subdir "subdir" on the domain www.example.com. // To reproduce the values install Drupal like that and use a debugger. $server = ['SCRIPT_NAME' => '/subdir/index.php', 'SCRIPT_FILENAME' => $this->root . '/index.php', 'SERVER_NAME' => 'http://www.example.com']; $request = Request::create('/subdir/' . $script_path, 'GET', [], [], [], $server); $request->headers->set('host', ['www.example.com']); $this->requestStack->push($request); // Determine the expected cacheability. $expected_cacheability = (new CacheableMetadata())->setCacheContexts($absolute ? ['url.site'] : [])->setCacheMaxAge(Cache::PERMANENT); // Get the expected start of the path string. $base = ($absolute ? $base_url . '/' : $base_path . '/') . $script_path; $url = $base . 'node/123'; $result = $this->generator->generateFromPath('node/123', array('absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $generated_url = $this->generator->generateFromPath('node/123', array('absolute' => $absolute), TRUE); $this->assertEquals($url, $generated_url->getGeneratedUrl(), "{$url} == {$result}"); $this->assertEquals($expected_cacheability, CacheableMetadata::createFromObject($generated_url)); $url = $base . 'node/123#foo'; $result = $this->generator->generateFromPath('node/123', array('fragment' => 'foo', 'absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $generated_url = $this->generator->generateFromPath('node/123', array('fragment' => 'foo', 'absolute' => $absolute), TRUE); $this->assertEquals($url, $generated_url->getGeneratedUrl(), "{$url} == {$result}"); $this->assertEquals($expected_cacheability, CacheableMetadata::createFromObject($generated_url)); $url = $base . 'node/123?foo'; $result = $this->generator->generateFromPath('node/123', array('query' => array('foo' => NULL), 'absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $generated_url = $this->generator->generateFromPath('node/123', array('query' => array('foo' => NULL), 'absolute' => $absolute), TRUE); $this->assertEquals($url, $generated_url->getGeneratedUrl(), "{$url} == {$result}"); $this->assertEquals($expected_cacheability, CacheableMetadata::createFromObject($generated_url)); $url = $base . 'node/123?foo=bar&bar=baz'; $result = $this->generator->generateFromPath('node/123', array('query' => array('foo' => 'bar', 'bar' => 'baz'), 'absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $generated_url = $this->generator->generateFromPath('node/123', array('query' => array('foo' => 'bar', 'bar' => 'baz'), 'absolute' => $absolute), TRUE); $this->assertEquals($url, $generated_url->getGeneratedUrl(), "{$url} == {$result}"); $this->assertEquals($expected_cacheability, CacheableMetadata::createFromObject($generated_url)); $url = $base . 'node/123?foo#bar'; $result = $this->generator->generateFromPath('node/123', array('query' => array('foo' => NULL), 'fragment' => 'bar', 'absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $generated_url = $this->generator->generateFromPath('node/123', array('query' => array('foo' => NULL), 'fragment' => 'bar', 'absolute' => $absolute), TRUE); $this->assertEquals($url, $generated_url->getGeneratedUrl(), "{$url} == {$result}"); $this->assertEquals($expected_cacheability, CacheableMetadata::createFromObject($generated_url)); $url = $base; $result = $this->generator->generateFromPath('<front>', array('absolute' => $absolute)); $this->assertEquals($url, $result, "{$url} == {$result}"); $generated_url = $this->generator->generateFromPath('<front>', array('absolute' => $absolute), TRUE); $this->assertEquals($url, $generated_url->getGeneratedUrl(), "{$url} == {$result}"); $this->assertEquals($expected_cacheability, CacheableMetadata::createFromObject($generated_url)); } } }