test dei filtri in laravel 4

Sono nuovo di laravel. Sto provando a verificare che l'authentication funzioni per il mio sito Web e voglio testare il process di authentication in un caso di test. Creo un database SQLite in memory, creo un nuovo utente e utilizzo il metodo ->save() di eloquente per archiviarlo nel database. Ho installato un filter di authentication che controlla il nome utente nel database e, a seconda di ciò, consente all'utente di accedere o restituire "credenziali non valide"

// il mio file UserTest.php:

 class UserTest extends TestCase { public function testUsernameIsNotRequired() { // Create a new User $user = new User; $user->username = "[email protected]"; $user->password = "123456"; //$user->password_confirmation = "password"; // User should save $this->assertTrue($user->save()); // Save the errors $password = $user->getAuthPassword(); // There should be 0 error $this->assertEquals("123456",$password); $this->seed(); $this->be($user); $this->assertTrue(Redirect::route('authFilter')); } } 

solo per farti sapere che il db in memory viene perso una volta che il test è completo, poiché tutte le connessioni sono andate perse, quindi voglio verificare che l'utente che ho salvato nel mio db sia inserito correttamente e in secondo luogo voglio controllare se Posso accedere al mio sito web usando le informazioni di questo nuovo utente.

// il mio file filters.php:

 Route::filter('auth', function() { if (Auth::guest()) return Redirect::guest('login'); }); Route::filter('auth.basic', function() { return Auth::basic('username'); }); Route::filter('guest', function() { if (Auth::check()) return Redirect::to('/'); }); Route::filter('csrf', function() { if (Session::token() != Input::get('_token')) { throw new Illuminate\Session\TokenMismatchException; } }); 

Stavo cercando di colbind un filter a un path in modo da poter redirect al path durante il mio test e che chiama il filter auth.basic in modo da poter testare il mio filter, so che sto facendo un sacco di cose sbagliate quindi sentiti libero di correggere eventuali errori che si verificano

il mio file routes.php:>

 Route::get('/', function() { return View::make('hello'); }); Route::get('/authtest', arrays('as'=>'/authtest','before' => 'auth.basic', function() { return View::make('hello'); })); Route::group(arrays('prefix' => 'api/v1', 'before' => 'auth.basic'), function() { Route::resource('url', 'UrlController'); }); Route::get('authFilter', arrays('as'=>'authFilter','before' => 'auth.basic', function() { return Auth::basic('username'); })); 

Ho anche un controller uri che ha tutte le pagine per il mio sito web

questo è quello che ho seguito per creare il mio controller uri per il momento

Ho bisogno di un caso di test che crea un utente che lo memorizza nel database in memory e quindi autentica utilizzando le informazioni di quell'utente. Se qualcuno conosce i test di laravel per i filtri, per favore fathemes sapere che ho cercato la documentazione per testare i filtri, ma suppongo che non sia ben documentata.

grazie

I filtri sono disabilitati nei test su Laravel 4.

È ansible utilizzare Route::enableFilters() nel test per forzare i filtri.

Puoi leggere le varie discussioni sul perché / perché non testare i filtri;

Puoi tenere la maggior parte di questo nel test dell'unità.

 public function testMyFilter() { // Set up route with filter. Route::get('testFilter', ['before' => 'myfilter', function() { return 'Hello World'; }]); // Enable filters. Route::enableFilters(); // Be a user. $this->be($this->user); // Make a request that will use the filter. $response = $this->client->request('GET', 'testFilter'); // Check the response. $this->assertResponseOk(); }