diff options
Diffstat (limited to 'site/app/tests/test_helper_web.php')
-rw-r--r-- | site/app/tests/test_helper_web.php | 32 |
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; + } +} ?> |