- Patch #295564 by boombatower, Damien Tournoud: fixed drupal_http_request error and cleaned up some simpletest stuff. We should have a much more funky 'all tests passed' screen. Having all tests pass shouldn't be this boring. Let's be a bit more creative and injest some fun ... ;-)
parent
bb153976b1
commit
c639b5135f
|
@ -434,7 +434,7 @@ function drupal_http_request($url, $headers = array(), $method = 'GET', $data =
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse the URL and make sure we can handle the schema.
|
// Parse the URL and make sure we can handle the schema.
|
||||||
$uri = parse_url($url);
|
$uri = @parse_url($url);
|
||||||
|
|
||||||
if ($uri == FALSE) {
|
if ($uri == FALSE) {
|
||||||
$result->error = 'unable to parse URL';
|
$result->error = 'unable to parse URL';
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
class DrupalWebTestCase {
|
class DrupalWebTestCase {
|
||||||
protected $_logged_in = FALSE;
|
protected $_logged_in = FALSE;
|
||||||
protected $_content;
|
protected $_content;
|
||||||
|
protected $_url;
|
||||||
protected $plain_text;
|
protected $plain_text;
|
||||||
protected $ch;
|
protected $ch;
|
||||||
protected $elements;
|
protected $elements;
|
||||||
|
@ -756,11 +757,9 @@ class DrupalWebTestCase {
|
||||||
$this->curlConnect();
|
$this->curlConnect();
|
||||||
$url = empty($curl_options[CURLOPT_URL]) ? curl_getinfo($this->ch, CURLINFO_EFFECTIVE_URL) : $curl_options[CURLOPT_URL];
|
$url = empty($curl_options[CURLOPT_URL]) ? curl_getinfo($this->ch, CURLINFO_EFFECTIVE_URL) : $curl_options[CURLOPT_URL];
|
||||||
curl_setopt_array($this->ch, $this->curl_options + $curl_options);
|
curl_setopt_array($this->ch, $this->curl_options + $curl_options);
|
||||||
$this->_content = curl_exec($this->ch);
|
$this->drupalSetContent(curl_exec($this->ch), curl_getinfo($this->ch, CURLINFO_EFFECTIVE_URL));
|
||||||
$this->plain_text = FALSE;
|
|
||||||
$this->elements = FALSE;
|
|
||||||
$this->assertTrue($this->_content !== FALSE, t('!method to !url, response is !length bytes.', array('!method' => !empty($curl_options[CURLOPT_NOBODY]) ? 'HEAD' : (empty($curl_options[CURLOPT_POSTFIELDS]) ? 'GET' : 'POST'), '!url' => $url, '!length' => strlen($this->_content))), t('Browser'));
|
$this->assertTrue($this->_content !== FALSE, t('!method to !url, response is !length bytes.', array('!method' => !empty($curl_options[CURLOPT_NOBODY]) ? 'HEAD' : (empty($curl_options[CURLOPT_POSTFIELDS]) ? 'GET' : 'POST'), '!url' => $url, '!length' => strlen($this->_content))), t('Browser'));
|
||||||
return $this->_content;
|
return $this->drupalGetContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1124,7 +1123,7 @@ class DrupalWebTestCase {
|
||||||
* The current url.
|
* The current url.
|
||||||
*/
|
*/
|
||||||
function getUrl() {
|
function getUrl() {
|
||||||
return curl_getinfo($this->ch, CURLINFO_EFFECTIVE_URL);
|
return $this->_url;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1134,6 +1133,22 @@ class DrupalWebTestCase {
|
||||||
return $this->_content;
|
return $this->_content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the raw HTML content. This can be useful when a page has been fetched
|
||||||
|
* outside of the internal browser and assertions need to be made on the
|
||||||
|
* returned page.
|
||||||
|
*
|
||||||
|
* A good example would be when testing drupal_http_request(). After fetching
|
||||||
|
* the page the content can be set and page elements can be checked to ensure
|
||||||
|
* that the function worked properly.
|
||||||
|
*/
|
||||||
|
function drupalSetContent($content, $url = 'internal:') {
|
||||||
|
$this->_content = $content;
|
||||||
|
$this->_url = $url;
|
||||||
|
$this->plain_text = FALSE;
|
||||||
|
$this->elements = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pass if the raw text IS found on the loaded page, fail otherwise. Raw text
|
* Pass if the raw text IS found on the loaded page, fail otherwise. Raw text
|
||||||
* refers to the raw HTML that the page generated.
|
* refers to the raw HTML that the page generated.
|
||||||
|
|
|
@ -130,10 +130,17 @@ class DrupalHTTPRequestTestCase extends DrupalWebTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
function testDrupalHTTPRequest() {
|
function testDrupalHTTPRequest() {
|
||||||
|
// Parse URL schema.
|
||||||
$missing_scheme = drupal_http_request('example.com/path');
|
$missing_scheme = drupal_http_request('example.com/path');
|
||||||
$this->assertEqual($missing_scheme->error, 'missing schema', t('Returned with missing scheme error.'));
|
$this->assertEqual($missing_scheme->error, 'missing schema', t('Returned with missing scheme error.'));
|
||||||
|
|
||||||
$unable_to_parse = drupal_http_request('http:///path');
|
$unable_to_parse = drupal_http_request('http:///path');
|
||||||
$this->assertEqual($unable_to_parse->error, 'unable to parse URL', t('Returned with unable to parse URL error.'));
|
$this->assertEqual($unable_to_parse->error, 'unable to parse URL', t('Returned with unable to parse URL error.'));
|
||||||
|
|
||||||
|
// Fetch page.
|
||||||
|
$result = drupal_http_request(url('node', array('absolute' => TRUE)));
|
||||||
|
$this->assertEqual($result->code, 200, t('Fetched page successfully.'));
|
||||||
|
$this->drupalSetContent($result->data);
|
||||||
|
$this->assertTitle(variable_get('site_name', 'Drupal'), t('Site title matches.'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue