2015-05-05 18 views
11

Właśnie dodałem tymondesigns/jwt-auth do obsługi uwierzytelniania tokenu, w wyniku czego moje przypadki testowe zawodzą, ponieważ nie ma tokena w parametrach nagłówków. Jak mogę sfałszować (używając Mockery) komponent, aby ominąć to?Jak wyśmiać tymondesigns/jwt-auth w Laravel 5?

Uwaga:$this->be() nie działa

+0

Znalazłeś rozwiązanie dla tego? –

+0

Przeczytałem cały kod źródłowy i wyśmiałem każde wywołanie metody z jwtauth. Ale wygląda na to, że Laravel 5.1 ma cechę, która ominęła middleware, możesz to sprawdzić –

+0

Jestem również bardzo zainteresowany rozwiązaniem tego problemu. Próbowałem wyłączyć oprogramowanie pośrednie, ale nie mogę go uruchomić. Rozwiązałeś to? @ ChristopherFrancisco – Mattias

Odpowiedz

8

An alternatywnego jest do uwierzytelnienia żądania podczas wykonywania testu przechodzącą konkretnego użytkownika. To jak to zrobił:

# tests/TestCase.php 

/** 
* Return request headers needed to interact with the API. 
* 
* @return Array array of headers. 
*/ 
protected function headers($user = null) 
{ 
    $headers = ['Accept' => 'application/json']; 

    if (!is_null($user)) { 
     $token = JWTAuth::fromUser($user); 
     JWTAuth::setToken($token); 
     $headers['Authorization'] = 'Bearer '.$token; 
    } 

    return $headers; 
} 

Następnie w moich testów używam go tak:

# tests/StuffTest.php 

/** 
* Test: GET /api/stuff. 
*/ 
public function testIndex() 
{ 
    $url = '/api/stuff'; 

    // Test unauthenticated access. 
    $this->get($url, $this->headers()) 
     ->assertResponseStatus(400); 

    // Test authenticated access. 
    $this->get($url, $this->headers(User::first())) 
     ->seeJson() 
     ->assertResponseOk(); 
} 

Nadzieja to pomóc wszystkim. Szczęśliwe kodowanie!