亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

API平臺測試授權

API平臺測試授權

PHP
蕭十郎 2022-07-16 11:04:01
我正在使用 Symfony 4.4 和api-platform/api-pack v1.2.1我創建了一個支持帶前綴的字符串的自定義選民PERM_我將端點 ( /api/roles) 設置為security: 'is_granted("PERM_READ_USER")'我創建了一個如下所示的測試:    /**     * @depends testLoginRegularUser     * @param $token     * @return string JWT Token     */    public function testRegularUserReadRole($token)    {        $this->expectException(AccessDeniedHttpException::class);        $this->expectExceptionCode(403);        $response = static ::createClient()->request('GET', '/api/roles',[            'json' => [                'page' => 1            ],            'headers' => [                'Authorization' => 'Bearer ' . $token,            ]        ]);        return $token;    }而且我總是收到錯誤消息:Testing App\Tests\Functional\GroupRoleTest.2020-01-06T00:49:48+00:00 [error] Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException: "Access Denied." at /home/vagrant/Code/wikaunting/vendor/symfony/security-http/Firewall/ExceptionListener.php line 137FS                                                                 3 / 3 (100%)Time: 14.27 seconds, Memory: 44.50 MBThere was 1 failure:1) App\Tests\Functional\GroupRoleTest::testRegularUserReadRoleFailed asserting that exception of type "Symfony\Component\HttpClient\Exception\AccessDeniedHttpException" is thrown.當我使用休息客戶端(失眠癥)進行測試時,它返回
查看完整描述

2 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

您將功能與單元測試混合在一起。 $this->expectException用于單元測試,當您的代碼拋出異常時。

在這種情況下,您正在向客戶端發出 HTTP 請求,該請求將返回響應并且不會引發異常。您應該檢查響應狀態代碼是否為 403。


查看完整回答
反對 回復 2022-07-16
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

請記住,該異常不會在您的測試中引發。當您的請求被拒絕時,它會被拋出“服務器端”。因此,您不應斷言拋出異常,而應在測試中檢查該請求的狀態碼和響應。API 平臺為此提供了輔助方法。


查看:


self::assertResponseStatusCodeSame

self::assertJsonContains


查看完整回答
反對 回復 2022-07-16
  • 2 回答
  • 0 關注
  • 131 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號