REST模块获取/设置cookie

时间:2016-03-31 12:59:59

标签: codeception

我正在使用代码REST模块编写一些测试。

我正在进行的项目尚处于早期阶段,我们尚未实施基于令牌的身份验证;所以现在身份验证是通过REST API完成的,但它使用$_SESSION来实现持久性。

要测试经过身份验证的请求,我需要保留PHPSESSID Cookie并将其与每个请求一起发送。在使用REST模块时,有没有办法读取/设置cookie?

1 个答案:

答案 0 :(得分:3)

好的,我得到了解决方案。我的套件名称为api,因此代码生成tests/_support/Helper/Api.php的文件。在此处进行更改之前,我必须编辑我的套件YAML文件api.suite.yml以启用帮助程序。我的YAML文件如下所示:

class_name: ApiTester
modules:
    enabled:
        - REST:
            depends: PhpBrowser
            url: https://website.com/api/
            part: Json
        - \Helper\Api

现在该文件已启用,请运行codecept build,以便更新生成的文件以阅读帮助程序。

Api助手类中,我添加了两种方法:

public function capturePHPSESSID()
{
  $cookie = $this->getClient()->getCookieJar()->get('PHPSESSID');
  echo "Cookie: ", $cookie;
}

/**
 * @return \Symfony\Component\HttpKernel\Client|\Symfony\Component\BrowserKit\Client $client
 */
protected function getClient()
{
  return $this->getModule('REST')->client;
}

这就是您阅读PHPSESSID cookie所需的全部内容!随意捕获它,以便您可以通过设置调用$this->getClient()->getCookieJar()->set(....)

来编写一种方法来重复使用它