Ich bin neu in Laravel. Ich versuche zu testen, dass die Authentifizierung für meine Website funktioniert, und ich möchte den Authentifizierungsprozess in einem Testfall testen. Ich erstelle eine SQL-In-Memory-Datenbank, ich erstelle einen neuen Benutzer und verwenden Sie ->save()
Methode eloquent, um es in der Datenbank zu speichern. Ich habe Setup einen Authentifizierungsfilter, der für den Benutzernamen in der Datenbank prüft und je nach, dass es entweder kann der Benutzer sich einloggen oder gibt „ungültige Anmeldeinformationen“testen Filter in Laravel 4
// my UserTest.php Datei:
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'));
}
}
nur um Sie wissen zu lassen, dass die In-Memory-Datenbank verloren ist, sobald der Test abgeschlossen ist, da alle Verbindungen verloren gegangen sind. Ich möchte überprüfen, ob der Benutzer, den ich in meiner Datenbank gespeichert habe, korrekt eingefügt wurde Ich kann mich mit den Informationen dieses neuen Benutzers auf meiner Website anmelden.
// my filters.php Datei:
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;
}
});
Ich habe versucht, einen Filter auf eine Route zu befestigen, so dass ich auf die Strecke während meines Tests umleiten kann, und das ruft den auth.basic Filter so I testen kann mein Filter, ich weiß, Im eine Menge Dinge falsch machen, so wenden Sie sich bitte keine Fehler zu korrigieren, die Sie kommen über
meine routes.php-Datei:>
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/authtest', array('as'=>'/authtest','before' => 'auth.basic', function()
{
return View::make('hello');
}));
Route::group(array('prefix' => 'api/v1', 'before' => 'auth.basic'), function()
{
Route::resource('url', 'UrlController');
});
Route::get('authFilter', array('as'=>'authFilter','before' => 'auth.basic', function()
{
return Auth::basic('username');
}));
ich habe auch au ri-Controller, der alle Seiten für meine Website hat
this ist, was ich folgte meine uri-Controller für den Moment
ich einen Testfall erstellen muß, die es in die In-Memory-Datenbank eines Benutzer speichern erstellt und dann authentifiziert anhand dieser Benutzerinformationen. Wenn jemand Laravel-Tests für Filter kennt, lassen Sie es mich bitte wissen, dass ich die Dokumentation zum Testen der Filter nachgeschlagen habe, aber ich denke, es ist nicht gut dokumentiert.
danke
Welche Fehler bekommen Sie? –
F Zeit: 0 Sekunden, Speicher: 13.00Mb war es ein Fehlschlag: 1) Usertest :: testUsernameIsNotRequired konnte nicht behaupten, dass Illuminate \ Http \ RedirectResponse Object ( 'request' => Illuminate \ Http \ Request-Objekt ( ........ FEHLER! Tests: 1, Behauptungen: 3, Fehler: 1. – tanzeelrana