public function _before(\Codeception\TestCase $test) { if (!$this->client) { if (!strpos($this->config['url'], '://')) { // not valid url foreach ($this->getModules() as $module) { if ($module instanceof \Codeception\Util\Framework) { $this->client = $module->client; $this->is_functional = true; break; } } } else { if (!$this->hasModule('PhpBrowser')) { throw new ModuleConfigException(__CLASS__, "For REST testing via HTTP please enable PhpBrowser module"); } $this->client = $this->getModule('PhpBrowser')->session->getDriver()->getClient(); } if (!$this->client) { throw new ModuleConfigException(__CLASS__, "Client for REST requests not initialized.\nProvide either PhpBrowser module, or a framework module which shares FrameworkInterface"); } } $this->headers = array(); $this->params = array(); $this->response = ""; $this->client->setServerParameters(array()); $timeout = $this->config['timeout']; if ($this->config['xdebug_remote'] && function_exists('xdebug_is_enabled') && xdebug_is_enabled() && ini_get('xdebug.remote_enable')) { $cookie = new Cookie('XDEBUG_SESSION', $this->config['xdebug_remote'], null, '/'); $this->client->getCookieJar()->set($cookie); // timeout is disabled, so we can debug gently :) $timeout = 0; } if (method_exists($this->client, 'getClient')) { $clientConfig = $this->client->getClient()->getConfig(); $curlOptions = $clientConfig->get('curl.options'); $curlOptions[CURLOPT_TIMEOUT] = $timeout; $clientConfig->set('curl.options', $curlOptions); } }