/src/Codeception/Util/Connector/ZF1.php

https://bitbucket.org/d1rk/codeception · PHP · 75 lines · 41 code · 20 blank · 14 comment · 0 complexity · ca691d517ebdce90762e473d5b68dfc4 MD5 · raw file

  1. <?php
  2. namespace Codeception\Util\Connector;
  3. use Symfony\Component\BrowserKit\Request;
  4. use Symfony\Component\BrowserKit\Response;
  5. class ZF1 extends \Symfony\Component\BrowserKit\Client
  6. {
  7. /**
  8. * @var \Zend_Controller_Front
  9. */
  10. protected $front;
  11. /**
  12. * @var \Zend_Application
  13. */
  14. protected $bootstrap;
  15. /**
  16. * @var \Zend_Controller_Request_HttpTestCase
  17. */
  18. protected $zendRequest;
  19. public function setBootstrap($bootstrap) {
  20. $this->bootstrap = $bootstrap;
  21. $this->front = $this->bootstrap->getBootstrap()->getResource('frontcontroller');
  22. $this->front
  23. ->throwExceptions(true)
  24. ->returnResponse(false);
  25. }
  26. public function doRequest($request) {
  27. // redirector should not exit
  28. $redirector = \Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
  29. $redirector->setExit(false);
  30. // json helper should not exit
  31. $json = \Zend_Controller_Action_HelperBroker::getStaticHelper('json');
  32. $json->suppressExit = true;
  33. $zendRequest = new \Zend_Controller_Request_HttpTestCase();
  34. $zendRequest->setMethod($request->getMethod());
  35. $zendRequest->setCookies($request->getCookies());
  36. $zendRequest->setParams($request->getParameters());
  37. $zendRequest->setRequestUri(str_replace('http://localhost','',$request->getUri()));
  38. $zendRequest->setHeaders($request->getServer());
  39. $_FILES = $request->getFiles();
  40. $zendResponse = new \Zend_Controller_Response_Http;
  41. $this->front->setRequest($zendRequest)->setResponse($zendResponse);
  42. ob_start();
  43. $this->bootstrap->run();
  44. ob_end_clean();
  45. $this->zendRequest = $zendRequest;
  46. $response = new Response($zendResponse->getBody(), $zendResponse->getHttpResponseCode(), $zendResponse->getHeaders());
  47. return $response;
  48. }
  49. /**
  50. * @return \Zend_Controller_Request_HttpTestCase
  51. */
  52. public function getZendRequest() {
  53. return $this->zendRequest;
  54. }
  55. }