Tôi đang cố gắng thử nghiệm API REST Laravel 4 của tôi bằng cách sử dụng Codeception, nhưng khi tôi cố gắng gửi thông qua tiêu đề Authorization (sử dụng hàm $ I-> amBearerAuthenticated() của REST mô-đun) nó không phải là làm cho nó thông qua các yêu cầu cuối cùng.Tiêu đề ủy quyền không thực hiện được thông qua kiểm tra API Codeception
Từ những gì tôi có thể thấy, mô-đun BrowserKit Symfony2 sửa đổi bất kỳ tiêu đề nào được thêm vào định dạng HTTP_XXX_XXX, vì vậy tiêu đề được gửi có vẻ là HTTP_AUTHORIZATION - khi tôi xuất các tiêu đề đã nhận trong ứng dụng của mình, tuy nhiên, không được cấp phép hoặc HTTP_AUTHORIZATION hiện tại.
Nếu nó giúp, đây là thử nghiệm Codeception tôi:
public function loginAndHitProtectedPage(ApiTester $I)
{
$I->wantTo('login and successfully get to a protected page');
$I->sendPOST('/auth/login', ['username' => 'user1', 'password' => 'pass']);
$I->seeResponseIsJson();
$token = $I->grabDataFromJsonResponse('token');
$I->amBearerAuthenticated($token);
$I->sendGET('/runs');
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->dontSeeResponseContains('error');
}
Headers gửi theo BrowserKit (đầu ra của $this->client->getInternalRequest()->getServer()
trong module REST):
HTTP_HOST : localhost
HTTP_USER_AGENT : Symfony2 BrowserKit
HTTP_AUTHORIZATION : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3RcL2F1dGhcL2xvZ2luIiwic3ViIjoxLCJpYXQiOjE0MjE3ODY0NDEsImV4cCI6MTQyMTg3Mjg0MX0.XxxxZMe8gwF9GS8CdKsh5coNQer1c6G6prK05QJEmDQ
HTTP_REFERER : http://localhost/auth/login
HTTPS : false
Headers nhận theo PHP:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Language: en-us,en;q=0.5
Content-Type: application/x-www-form-urlencoded
Host: localhost
Referer: http://localhost/auth/login
User-Agent: Symfony2 BrowserKit
Mã thông báo được nhận đúng, nhưng API của tôi (chính xác) trả về 401 trên yêu cầu GET vì nó không nhận được mã thông báo.
Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!
Tôi đã gỡ lỗi PHPStorm để thử nghiệm và tôi đã thực hiện một số tiến bộ về xác định vấn đề này, mặc dù tôi vẫn còn một chút khó khăn.Có vẻ như mô-đun JWTAuth tôi đang sử dụng cho Ủy quyền là một phần của vấn đề - bởi vì tôi đang thực hiện hai cuộc gọi REST trong cùng một thử nghiệm, mô-đun JWTAuth dường như chỉ được khởi tạo cho mô-đun đầu tiên và là một phần của quá trình khởi tạo yêu cầu được lưu trữ. Sau đó, khi cuộc gọi thứ hai được thực hiện, các tiêu đề từ yêu cầu đầu tiên được sử dụng và do đó tiêu đề Cấp phép không xuất hiện. Nếu tôi mã hóa mã thông báo và chỉ thực hiện GET thứ hai, nó hoạt động. Tiếp tục ... –