function drupal_valid_test_ua

Returns the test prefix if this is an internal request from SimpleTest.

Parameters

string $new_prefix: Internal use only. A new prefix to be stored. Passed in by tests that use the test runner from within a test.

Return value

Either the simpletest prefix (the string "simpletest" followed by any number of digits) or FALSE if the user agent does not contain a valid HMAC and timestamp.

14 calls to drupal_valid_test_ua()
BrokenSetUpTest::setUp in drupal/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrokenSetUpTest.php
Sets up a Drupal site for running functional and integration tests.
BrokenSetUpTest::tearDown in drupal/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrokenSetUpTest.php
Delete created files and temporary files directory, delete the tables created by setUp(), and reset the database prefix.
BrokenSetUpTest::testBreakSetUp in drupal/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrokenSetUpTest.php
Runs this test case from within the simpletest child site.
config_get_config_directory in drupal/core/includes/bootstrap.inc
Returns the path of a configuration directory.
DrupalKernel::getClassName in drupal/core/lib/Drupal/Core/DrupalKernel.php
Returns the classname based on environment, debug and testing prefix.

... See full list

File

drupal/core/includes/bootstrap.inc, line 2503
Functions that need to be loaded on every Drupal request.

Code

function drupal_valid_test_ua($new_prefix = NULL) {
  static $test_prefix;
  if (isset($new_prefix)) {
    $test_prefix = $new_prefix;
  }
  if (isset($test_prefix)) {
    return $test_prefix;
  }
  if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/^(simpletest\\d+);(.+);(.+);(.+)\$/", $_SERVER['HTTP_USER_AGENT'], $matches)) {
    list(, $prefix, $time, $salt, $hmac) = $matches;
    $check_string = $prefix . ';' . $time . ';' . $salt;

    // Use the salt from settings.php to create the HMAC key, since no services
    // are available yet. The file properties add more entropy not easily
    // accessible to others.
    $key = drupal_get_hash_salt() . filectime(__FILE__) . fileinode(__FILE__);
    $time_diff = REQUEST_TIME - $time;

    // Since we are making a local request a 5 second time window is allowed,
    // and the HMAC must match.
    if ($time_diff >= 0 && $time_diff <= 5 && $hmac == drupal_hmac_base64($check_string, $key)) {
      $test_prefix = $prefix;
      return $test_prefix;
    }
  }
  $test_prefix = FALSE;
  return $test_prefix;
}