ZusammenfassungLaravel Testcase nicht zu senden Authorization Header (JWT Token)
Wir Unit-Tests schreiben, die Erstellung und die Entwertung von JWT Token zu testen und ein Empfangsfehler zurück „das Token nicht von der Anforderung analysiert werden konnte“ von einer JWTException jedes Mal, wenn wir versuchen, JWTAuth :: das Token ungültig zu machen.
Beschreibung
In unserem Controller, ein Benutzer-Token zu erstellen, wir durch die Benutzer E-Mail-Adresse sind vorbei und dann die JWT Token zurück.
Danach zerstören wir das Token, indem wir es mit der invalidateToken-Methode ungültig machen und das Token durch Senden eines Authorization-Headers übergeben.
Dies funktioniert perfekt mit Postman sowie PHPStorms Restful Client.
Wenn wir versuchen, einen Test für diese Methode zu schreiben, sehen wir uns mit einer Fehlerantwort und einer Fehlermeldung "Der Token konnte nicht von der Anfrage analysiert werden" konfrontiert.
Unser Test ist wie folgt:
public function testInvalidateToken()
{
$createUserToken = $this->call('POST', '/token/create', ['email' => '[email protected]']);
$user = $this->parseJson($createUserToken);
$response = $this->call('POST', '/token/invalidate',
[/* params */], [/* cookies */], [/* files */], ['HTTP_Authorization' => 'Bearer '.$user->token]);
// var_dump($user->token);
// die();
$data = $this->parseJson($response);
$this->assertEquals($data->status, 'success');
$this->assertEquals($data->status, '200');
}
Wir verwenden Laravel 5.1 (die die Cookies als Parameter vor dem Server-Parameter hat)
PHP Version 5.6.10
PHPUnit 3.7 .28
* EDIT * Auf PHPUnit 4.7.6 aktualisiert und immer noch fehlgeschlagen t o Senden über Autorisierungsheader.
* SOLUTION *
In meinem Controller __construct Methode, ich habe diese wenigen Zeilen Code, der ausgeführt wird und sortiert mein Problem aus.
if ((\App::environment() == 'testing') && array_key_exists("HTTP_Authorization", Request::server())) {
JWTAuth::setRequest(\Route::getCurrentRequest());
}
Ich versuche Ihren Code aber \ Route :: getCurrentRequest() gibt null zurück. Irgendeine Idee warum das sein könnte? Danke –