You are here

class CDNUnitTestCase in CDN 7.2

@file Test CDN.

Hierarchy

Expanded class hierarchy of CDNUnitTestCase

File

tests/cdn.test, line 8
Test CDN.

View source
class CDNUnitTestCase extends DrupalUnitTestCase {
  function setUp() {
    parent::setUp();

    // Alter $_SERVER to include some relatively rarely set HTTP headers.
    $alt_server = array(
      'HTTP_ACCEPT_ENCODING',
      'HTTPS' => 'off',
      'HTTP_X_FORWARDED_PROTO' => 'http',
      'HTTP_USER_AGENT' => $this
        ->randomName(),
    );
    $alt_server = array_merge($alt_server, $_SERVER);
    $_SERVER = $alt_server;
    $this
      ->setRequestProtocol('http');

    // Enable the private:// stream wrapper.
    $this
      ->variableSet('file_private_path', conf_path() . '/files/private');

    // Pretend the CDN module is enabled; this ensures invocations of its own
    // hook implementations will work as expected.
    $cdn_module_file = drupal_get_path('module', 'cdn') . '/cdn.module';
    $module_list['system']['filename'] = 'modules/system/system.module';
    $module_list['cdn']['filename'] = $cdn_module_file;
    module_list(TRUE, FALSE, FALSE, $module_list);
    $implementations =& drupal_static('module_implements');
    $implementations = array();
    $this
      ->loadFile('cdn.constants.inc');
    $this
      ->loadFile('cdn.module');

    // Override $conf to be able to use variable_set() and variable_get() in
    // DrupalUnitTestCase. At the same time, make sure we can restore the
    // original values.
    global $conf;
    $this->originalConfig = $conf;
    $this
      ->variableSetDefaults();
  }
  function tearDown() {

    // Restore the original values that are used by variable_get().
    global $conf;
    $conf = $this->originalConfig;
    parent::tearDown();
  }
  function loadFile($file) {
    $cdn_path = DRUPAL_ROOT . '/' . drupal_get_path('module', 'cdn');
    require_once "{$cdn_path}/{$file}";
  }

  /**
   * Mock function for variable_set().
   */
  function variableSet($name, $value) {
    global $conf;
    $conf[$name] = $value;
  }

  /**
   * Set the default variable values for the CDN module.
   */
  function variableSetDefaults() {
    global $conf;
    $this->defaultConfig = array(
      CDN_STATUS_VARIABLE => CDN_ENABLED,
      CDN_MODE_VARIABLE => FALSE,
      CDN_HTTPS_SUPPORT_VARIABLE => FALSE,
      CDN_BASIC_MAPPING_VARIABLE => '',
      CDN_BASIC_MAPPING_HTTPS_VARIABLE => '',
      CDN_BASIC_FARFUTURE_VARIABLE => FALSE,
      CDN_SEO_REDIRECT_VARIABLE => TRUE,
    );
    $conf = array_merge($conf, $this->defaultConfig);
  }

  /**
   * Set the protocol of the current "request".
   *
   * @param $protocol
   *   'http' or 'https'.
   */
  function setRequestProtocol($protocol) {
    if ($protocol == 'http') {
      $_SERVER['HTTPS'] = 'off';
      $_SERVER['HTTP_X_FORWARDED_PROTO'] = 'http';
    }
    elseif ($protocol == 'https') {
      $_SERVER['HTTPS'] = 'on';
      $_SERVER['HTTP_X_FORWARDED_PROTO'] = 'https';
    }
  }

  /**
   * Set the User-Agent of the current "request".
   *
   * @param $ua
   *   A User-Agent, which can be almost any string.
   */
  function setUserAgent($ua) {
    $_SERVER['HTTP_USER_AGENT'] = $ua;
  }

  /**
   * Configure HTTPS-related settings.
   *
   * @param $supported
   *   Boolean that indicates whether HTTPS is supported by the current CDN
   *   or not.
   * @param $mapping
   *   The CDN mapping to use when the CDN supports HTTPS and the current
   *   request is happening over HTTPS.
   */
  function configureHTTPS($supported, $mapping = '') {
    $this
      ->variableSet(CDN_HTTPS_SUPPORT_VARIABLE, $supported);
    $this
      ->variableSet(CDN_BASIC_MAPPING_HTTPS_VARIABLE, $mapping);
  }

  /**
   * Given a file URI, get the expanded file path.
   *
   * @param $uri
   *   @see file_stream_wrapper_get_instance_by_uri()
   * @return
   *  A Drupal root-relative path.
   */
  function getExpandedFilePath($uri) {
    $wrapper = file_stream_wrapper_get_instance_by_uri($uri);
    return str_replace($GLOBALS['base_url'] . '/', '', $wrapper
      ->getExternalUrl());
  }

  /**
   * Given a file URI, get its path, create the file and ensure it exists.
   *
   * @param $uri
   *   @see getExpandedFilePath()
   */
  function touchFile($uri) {
    $path = $this
      ->getExpandedFilePath($uri);
    $this
      ->assertTrue(touch(rawurldecode($path)), 'Test file created.');
    return $path;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CDNUnitTestCase::configureHTTPS function Configure HTTPS-related settings.
CDNUnitTestCase::getExpandedFilePath function Given a file URI, get the expanded file path.
CDNUnitTestCase::loadFile function
CDNUnitTestCase::setRequestProtocol function Set the protocol of the current "request".
CDNUnitTestCase::setUp function Sets up unit test environment. Overrides DrupalUnitTestCase::setUp 3
CDNUnitTestCase::setUserAgent function Set the User-Agent of the current "request".
CDNUnitTestCase::tearDown function Overrides DrupalUnitTestCase::tearDown
CDNUnitTestCase::touchFile function Given a file URI, get its path, create the file and ensure it exists.
CDNUnitTestCase::variableSet function Mock function for variable_set().
CDNUnitTestCase::variableSetDefaults function Set the default variable values for the CDN module.
DrupalTestCase::$assertions protected property Assertions thrown in that test case.
DrupalTestCase::$databasePrefix protected property The database prefix of this test run.
DrupalTestCase::$originalFileDirectory protected property The original file directory, before it was changed for testing purposes.
DrupalTestCase::$results public property Current results of this test case.
DrupalTestCase::$setup protected property Flag to indicate whether the test has been set up.
DrupalTestCase::$setupDatabasePrefix protected property
DrupalTestCase::$setupEnvironment protected property
DrupalTestCase::$skipClasses protected property This class is skipped when looking for the source of an assertion.
DrupalTestCase::$testId protected property The test run ID.
DrupalTestCase::$timeLimit protected property Time limit for the test.
DrupalTestCase::$useSetupInstallationCache public property Whether to cache the installation part of the setUp() method.
DrupalTestCase::$useSetupModulesCache public property Whether to cache the modules installation part of the setUp() method.
DrupalTestCase::$verboseDirectoryUrl protected property URL to the verbose output file directory.
DrupalTestCase::assert protected function Internal helper: stores the assert.
DrupalTestCase::assertEqual protected function Check to see if two values are equal.
DrupalTestCase::assertFalse protected function Check to see if a value is false (an empty string, 0, NULL, or FALSE).
DrupalTestCase::assertIdentical protected function Check to see if two values are identical.
DrupalTestCase::assertNotEqual protected function Check to see if two values are not equal.
DrupalTestCase::assertNotIdentical protected function Check to see if two values are not identical.
DrupalTestCase::assertNotNull protected function Check to see if a value is not NULL.
DrupalTestCase::assertNull protected function Check to see if a value is NULL.
DrupalTestCase::assertTrue protected function Check to see if a value is not false (not an empty string, 0, NULL, or FALSE).
DrupalTestCase::deleteAssert public static function Delete an assertion record by message ID.
DrupalTestCase::error protected function Fire an error assertion. 1
DrupalTestCase::errorHandler public function Handle errors during test runs. 1
DrupalTestCase::exceptionHandler protected function Handle exceptions.
DrupalTestCase::fail protected function Fire an assertion that is always negative.
DrupalTestCase::generatePermutations public static function Converts a list of possible parameters into a stack of permutations.
DrupalTestCase::getAssertionCall protected function Cycles through backtrace until the first non-assertion method is found.
DrupalTestCase::getDatabaseConnection public static function Returns the database connection to the site running Simpletest.
DrupalTestCase::insertAssert public static function Store an assertion from outside the testing context.
DrupalTestCase::pass protected function Fire an assertion that is always positive.
DrupalTestCase::randomName public static function Generates a random string containing letters and numbers.
DrupalTestCase::randomString public static function Generates a random string of ASCII characters of codes 32 to 126.
DrupalTestCase::run public function Run all tests in this class.
DrupalTestCase::verbose protected function Logs a verbose message in a text file.
DrupalUnitTestCase::__construct function Constructor for DrupalUnitTestCase. Overrides DrupalTestCase::__construct