微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

codeception rest api auth 标头

如何解决codeception rest api auth 标头

在测试 codeception rest api 时如何发送 auth 标头?

我现在拥有的:

  1. Yii2 项目
  2. "codeception/module-yii2": "^1.0.0"
  3. "codeception/module-rest": "^1.3"
  4. 通过命令 codecept generate:cest api TestName 生成的测试类

我的课堂测试

 class CreateWorkspaceCest
 {
    public function _before(ApiTester $I)
    {

    }

    public function successCreate(ApiTester $I)
    {
        $title = 'create test';
        $description = 'test description';

        $I->sendPost('/workspace/create',[
            'title' => $title,'description' => $description,]);

        $I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK); // 200
        $I->seeResponseIsJson();

        $I->seeResponseContainsJson([
            'title' => $title,'status' => 'active',]);
    }
}

现在它以 403 代码失败,因为后端需要标头 JWT-Key: <TOKEN>

我如何在 sendPost 中发送身份验证标头 在编写测试期间,最好将身份验证令牌存储在一个地方以避免代码重复?

解决方法

Codeception 有一个名为 haveHttpHeader 的方法,您可以使用它添加任何标题。

这在 https://docs.mongodb.com/manual/reference/command/insert/ 的中途有记录。 this page 上还有一个关于授权的部分。

有一些内置的授权方法,例如 amBearerAuthenticatedamAWSAuthenticated,但我认为 JWT 没有特定的方法。

 class CreateWorkspaceCest
 {
    public function _before(ApiTester $I)
    {

    }

    public function successCreate(ApiTester $I)
    {
        $title = 'create test';
        $description = 'test description';

        // You can add any header like this:
        $I->haveHttpHeader('Content-Type','application/json');
        $I->haveHttpHeader('Authorization','Bearer user-one-access-token');

        // To add the header that you show in the question,you can use:
        $I->haveHttpHeader('JWT-Key','<TOKEN>');

        $I->sendPost('/workspace/create',[
            'title' => $title,'description' => $description,]);

        $I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK); // 200
        $I->seeResponseIsJson();

        $I->seeResponseContainsJson([
            'title' => $title,'status' => 'active',]);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?