सारांशLaravel testcase प्राधिकरण नहीं भेज हेडर (जेडब्ल्यूटी टोकन)
हम इकाई परीक्षण लिख रहे हैं निर्माण और जेडब्ल्यूटी टोकन के अमान्यकरण परीक्षण करने के लिए और एक प्राप्त "टोकन अनुरोध से पार्स नहीं किया जा सका" त्रुटि वापस JWTException से हर बार जब हम JWTAuth :: टोकन को अमान्य करते हैं।
विवरण
हमारे नियंत्रक के अंदर, एक उपयोगकर्ता टोकन बनाने के लिए, हम उपयोगकर्ता ईमेल पते के माध्यम से गुजर रहे हैं और फिर जेडब्ल्यूटी टोकन लौटने।
बाद में, हम अवैधकरण टोकन विधि का उपयोग करके इसे अमान्य करके टोकन को नष्ट कर रहे हैं और प्राधिकरण शीर्षलेख भेजकर टोकन से गुज़र रहे हैं।
public function invalidateToken()
{
try {
JWTAuth::invalidate(JWTAuth::getToken());
return Response::json(['status' => 'success'], 200);
} catch (JWTException $e) {
return Response::json(['status' => 'error', 'message' => $e->getMessage()], 401);
}
}
यह पोस्टमैन के साथ-साथ PHPStorms आराम क्लाइंट का उपयोग करके पूरी तरह से काम करता है।
जब हम इस विधि के लिए एक परीक्षण लिखने का प्रयास करते हैं, तो हमें एक त्रुटि प्रतिक्रिया का सामना करना पड़ता है और "टोकन अनुरोध से पार्स नहीं किया जा सका" त्रुटि संदेश।
हमारे परीक्षण के रूप में अनुवर्ती है:
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');
}
हम Laravel 5.1
PHP संस्करण (जो सर्वर पैरामीटर से पहले एक पैरामीटर के रूप कुकी होने पर) का उपयोग कर रहे 5.6.10
PHPUnit 3.7 .28
* संपादित करें * PHPUnit 4.7.6 पर अपडेट किया गया और अभी भी विफल रहा है ओ प्राधिकरण शीर्षलेख के माध्यम से भेजें।
* समाधान *
मेरी नियंत्रक __construct विधि में, मैं कोड के इन कुछ पंक्तियों चलाने वाले है और मेरी समस्या हल।
if ((\App::environment() == 'testing') && array_key_exists("HTTP_Authorization", Request::server())) {
JWTAuth::setRequest(\Route::getCurrentRequest());
}
मैं आपका कोड आज़मा रहा हूं लेकिन \ Route :: getCurrentRequest() शून्य देता है। कोई विचार क्यों हो सकता है? धन्यवाद –