Commit 279f33c6 authored by webchick's avatar webchick

#339210 by klausi and dmenefee: Allow SimpleTest module to work on sites with HTTP authentication.

parent 25fad504
......@@ -120,6 +120,11 @@ class DrupalWebTestCase {
* Time limit for the test.
*/
protected $timeLimit = 180;
/**
* HTTP authentication credentials (<username>:<password>).
*/
protected $httpauth_credentials = NULL;
/**
......@@ -395,6 +400,10 @@ protected function error($message = '', $group = 'Other', array $caller = NULL)
* Run all tests in this class.
*/
public function run() {
// HTTP auth settings (<username>:<password>) for the simpletest browser
// when sending requests to the test site.
$this->httpauth_credentials = variable_get('simpletest_httpauth_credentials', NULL);
set_error_handler(array($this, 'errorHandler'));
$methods = array();
// Iterate through all the methods in this class.
......@@ -959,9 +968,10 @@ protected function tearDown() {
/**
* Initializes the cURL connection.
*
* This function will add authentication headers as specified in the
* simpletest_httpauth_username and simpletest_httpauth_pass variables. Also,
* see the description of $curl_options among the properties.
* If the simpletest_httpauth_credentials variable is set, this function will
* add HTTP authentication headers. This is necessary for testing sites that
* are protected by login credentials from public access.
* See the description of $curl_options for other options.
*/
protected function curlInitialize() {
global $base_url, $db_prefix;
......@@ -980,11 +990,8 @@ protected function curlInitialize() {
if (preg_match('/simpletest\d+/', $db_prefix, $matches)) {
$curl_options[CURLOPT_USERAGENT] = $matches[0];
}
if (!isset($curl_options[CURLOPT_USERPWD]) && ($auth = variable_get('simpletest_httpauth_username', ''))) {
if ($pass = variable_get('simpletest_httpauth_pass', '')) {
$auth .= ':' . $pass;
}
$curl_options[CURLOPT_USERPWD] = $auth;
if (isset($this->httpauth_credentials)) {
$curl_options[CURLOPT_USERPWD] = $this->httpauth_credentials;
}
curl_setopt_array($this->curlHandle, $this->additionalCurlOptions + $curl_options);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment