protected function WebTestBase::prepareRequestForGenerator

Creates a mock request and sets it on the generator.

This is used to manipulate how the generator generates paths during tests. It also ensures that calls to $this->drupalGet() will work when running from run-tests.sh because the url generator no longer looks at the global variables that are set there but relies on getting this information from a request object.

Parameters

bool $clean_urls: Whether to mock the request using clean urls.

$override_server_vars: An array of server variables to override.

Return value

$request The mocked request object.

5 calls to WebTestBase::prepareRequestForGenerator()
DownloadTest::testFileCreateUrl in drupal/core/modules/file/lib/Drupal/file/Tests/DownloadTest.php
Test file_create_url().
ImageStylesPathAndUrlTest::_testImageStyleUrlAndPath in drupal/core/modules/image/lib/Drupal/image/Tests/ImageStylesPathAndUrlTest.php
Tests image_style_url().
LanguageUrlRewritingTest::testDomainNameNegotiationPort in drupal/core/modules/language/lib/Drupal/language/Tests/LanguageUrlRewritingTest.php
Check URL rewriting when using a domain name and a non-standard port.
LanguageUrlRewritingTest::testUrlRewritingEdgeCases in drupal/core/modules/language/lib/Drupal/language/Tests/LanguageUrlRewritingTest.php
Check that non-installed languages are not considered.
WebTestBase::rebuildContainer in drupal/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
Overrides Drupal\simpletest\TestBase::rebuildContainer().

File

drupal/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php, line 3307
Definition of Drupal\simpletest\WebTestBase.

Class

WebTestBase
Test case for typical Drupal tests.

Namespace

Drupal\simpletest

Code

protected function prepareRequestForGenerator($clean_urls = TRUE, $override_server_vars = array()) {
  $generator = $this->container
    ->get('url_generator');
  $request = Request::createFromGlobals();
  $server = $request->server
    ->all();
  if (basename($server['SCRIPT_FILENAME']) != basename($server['SCRIPT_NAME'])) {

    // We need this for when the test is executed by run-tests.sh.
    // @todo Remove this once run-tests.sh has been converted to use a Request
    //   object.
    $cwd = getcwd();
    $server['SCRIPT_FILENAME'] = $cwd . '/' . basename($server['SCRIPT_NAME']);
    $base_path = rtrim($server['REQUEST_URI'], '/');
  }
  else {
    $base_path = $request
      ->getBasePath();
  }
  if ($clean_urls) {
    $request_path = $base_path ? $base_path . '/user' : 'user';
  }
  else {
    $request_path = $base_path ? $base_path . '/index.php/user' : '/index.php/user';
  }
  $server = array_merge($server, $override_server_vars);
  $request = Request::create($request_path, 'GET', array(), array(), array(), $server);
  $generator
    ->setRequest($request);
  return $request;
}