Sto tentando di testare l'API REST di Laravel 4 utilizzando Codeception, ma quando provo a inviare l'intestazione di autorizzazione (utilizzando la funzione $ I-> amBearerAuthenticated() del REST modulo) non sta arrivando fino all'eventuale richiesta.L'intestazione dell'autorizzazione non riesce a superare il test API Codeception
Da quello che posso vedere, il modulo Symfony2 BrowserKit modifica intestazioni aggiunte nel formato HTTP_XXX_XXX, in modo che il colpo di testa di essere inviato sembra essere HTTP_AUTHORIZATION - quando ho uscita le intestazioni ricevuti nella mia applicazione, tuttavia, né autorizzazione né HTTP_AUTHORIZATION sono presente.
Se aiuta, ecco la mia prova Codeception:
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');
}
intestazioni inviate in base al BrowserKit (uscita $this->client->getInternalRequest()->getServer()
nel modulo REST):
HTTP_HOST : localhost
HTTP_USER_AGENT : Symfony2 BrowserKit
HTTP_AUTHORIZATION : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3RcL2F1dGhcL2xvZ2luIiwic3ViIjoxLCJpYXQiOjE0MjE3ODY0NDEsImV4cCI6MTQyMTg3Mjg0MX0.XxxxZMe8gwF9GS8CdKsh5coNQer1c6G6prK05QJEmDQ
HTTP_REFERER : http://localhost/auth/login
HTTPS : false
intestazioni ricevuto secondo 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
Il token è stato ricevuto correttamente, ma la mia API (correttamente) restituisce un 401 nella richiesta GET perché non riceve il token.
Qualsiasi aiuto sarebbe molto apprezzato!
ho avuto PhpStorm debug a lavorare per i miei test e ho fatto qualche progresso al fine di identificare questo problema, anche se io sono ancora un po 'bloccato.Sembra che il modulo JWTAuth che sto usando per Autorizzazione sia parte del problema - perché sto facendo due chiamate REST nello stesso test, il modulo JWTAuth sembra essere inizializzato solo per il primo e come parte dell'inizializzazione la richiesta è archiviata. Quindi, quando viene effettuata la seconda chiamata, vengono utilizzate le intestazioni della prima richiesta e quindi l'intestazione Autorizzazione non è presente. Se ho hardcode il token e faccio solo il secondo GET, funziona. Continuando ... –