如何解决codeception rest api auth 标头
在测试 codeception rest api 时如何发送 auth 标头?
我现在拥有的:
- Yii2 项目
"codeception/module-yii2": "^1.0.0"
"codeception/module-rest": "^1.3"
- 通过命令
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 上还有一个关于授权的部分。
有一些内置的授权方法,例如 amBearerAuthenticated
、amAWSAuthenticated
,但我认为 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 举报,一经查实,本站将立刻删除。