Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/site/app/tests/test_helper_web.php
diff options
context:
space:
mode:
Diffstat (limited to 'site/app/tests/test_helper_web.php')
-rw-r--r--site/app/tests/test_helper_web.php32
1 files changed, 32 insertions, 0 deletions
diff --git a/site/app/tests/test_helper_web.php b/site/app/tests/test_helper_web.php
index 9b2211e..9791a71 100644
--- a/site/app/tests/test_helper_web.php
+++ b/site/app/tests/test_helper_web.php
@@ -1,6 +1,13 @@
<?php
class WebTestHelper extends WebTestCase {
+
+ function before($method) {
+ // The test browser is created in parent::before.
+ parent::before($method);
+ $this->addHeader('X-Amo-Test: damn right');
+ }
+
/* Compute protocol and hostname prefix, no trailing slash. */
function hostPrefix() {
$http = (!empty($_SERVER["HTTP_MOZ_REQ_METHOD"]) && $_SERVER["HTTP_MOZ_REQ_METHOD"] == 'HTTPS') ? 'https://' : 'http://';
@@ -8,6 +15,15 @@ class WebTestHelper extends WebTestCase {
return $uriBase;
}
+ /**
+ * The default SimpleBrowser tries to parse all responses, even when
+ * they're not HTML. That fails. We need a better browser.
+ */
+ function &createBrowser() {
+ $browser =& new BetterBrowser();
+ return $browser;
+ }
+
/* Compute the URI for the given action, accounting for us possibly not
* being at the root of the web space.
*/
@@ -84,4 +100,20 @@ class WebTestHelper extends WebTestCase {
}
}
+class BetterBrowser extends SimpleBrowser {
+
+ /**
+ * Overrides _buildPage to only parse responses when the Content Type
+ * looks like HTML.
+ */
+ function &_buildPage($response) {
+ $headers = $response->getHeaders()->getRaw();
+ if (preg_match('#^Content-Type: (text/html|application/xhtml+xml)#m', $headers)) {
+ $page =& parent::_buildPage($response);
+ } else {
+ $page =& new SimplePage($response);
+ }
+ return $page;
+ }
+}
?>