diff options
author | Tobias Sarnowski <sarnowski@cosmocode.de> | 2012-04-18 12:08:28 +0200 |
---|---|---|
committer | Tobias Sarnowski <sarnowski@cosmocode.de> | 2012-04-18 12:08:28 +0200 |
commit | f8369d7d6e37248d6523fdac6e1d760fca4f1b52 (patch) | |
tree | 0848c213ffc191a23b55f07bd2ec55e777ea79ca /_test/core/TestRequest.php | |
parent | d59108b91e9bf9fd56dc2e697cf31f9bbc7f9cd4 (diff) | |
download | rpg-f8369d7d6e37248d6523fdac6e1d760fca4f1b52.tar.gz rpg-f8369d7d6e37248d6523fdac6e1d760fca4f1b52.tar.bz2 |
moved _testing to _test
Diffstat (limited to '_test/core/TestRequest.php')
-rw-r--r-- | _test/core/TestRequest.php | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/_test/core/TestRequest.php b/_test/core/TestRequest.php new file mode 100644 index 000000000..fa3ddec90 --- /dev/null +++ b/_test/core/TestRequest.php @@ -0,0 +1,82 @@ +<?php +/** + * Simulates a full DokuWiki HTTP Request and allows + * runtime inspection. + */ + +// output buffering +$output_buffer = ''; + +function ob_start_callback($buffer) { + global $output_buffer; + $output_buffer .= $buffer; +} + + +/** + * Helper class to execute a fake request + */ +class TestRequest { + + private $server = array(); + private $session = array(); + private $get = array(); + private $post = array(); + + public function getServer($key) { return $this->server[$key]; } + public function getSession($key) { return $this->session[$key]; } + public function getGet($key) { return $this->get[$key]; } + public function getPost($key) { return $this->post[$key]; } + + public function setServer($key, $value) { $this->server[$key] = $value; } + public function setSession($key, $value) { $this->session[$key] = $value; } + public function setGet($key, $value) { $this->get[$key] = $value; } + public function setPost($key, $value) { $this->post[$key] = $value; } + + /** + * Executes the request + * + * @return TestResponse the resulting output of the request + */ + public function execute() { + // save old environment + $server = $_SERVER; + $session = $_SESSION; + $get = $_GET; + $post = $_POST; + $request = $_REQUEST; + + // fake environment + global $default_server_vars; + $_SERVER = array_merge($default_server_vars, $this->server); + $_SESSION = $this->session; + $_GET = $this->get; + $_POST = $this->post; + $_REQUEST = array_merge($_GET, $_POST); + + // reset output buffer + global $output_buffer; + $output_buffer = ''; + + // now execute dokuwiki and grep the output + header_remove(); + ob_start('ob_start_callback'); + include(DOKU_INC.'doku.php'); + ob_end_flush(); + + // create the response object + $response = new TestResponse( + $output_buffer, + headers_list() + ); + + // reset environment + $_SERVER = $server; + $_SESSION = $session; + $_GET = $get; + $_POST = $post; + $_REQUEST = $request; + + return $response; + } +} |