Laravel 5.7 редирект на после успешного входа в систему, проблема с тестом - PullRequest
0 голосов
/ 07 февраля 2019

Я проверяю, что пользователь после входа перенаправляется на /dashboard url.

Это мой LoginController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/dashboard';
    [...]

И это мой тест:

/**
     * Test that a logged user cannot view login
     *
     * @return void
     */
    public function test_logged_user_cannot_view_login_form()
    {
        $user = factory(User::class)->make();
        $response = $this->actingAs($user)->get('/');
        $response->assertRedirect('/dashboard');

    }

Сбой, phpunit жалуется с

Failed asserting that two strings are equal.
Expected :'http://localhost/dashboard'
Actual   :'http://localhost/home'

И, в сущности, проверка будет успешной, если я проверю "" /home".

Но при реальном использованииправильный логин перенаправить на /dashboard как положено, а не на home.

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 07 февраля 2019

Убедитесь, что это также отражено в вашем промежуточном программном обеспечении RedirectIfAuthenticated, поскольку actingAs() уже будет входить в систему пользователя.

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    /**
    * Handle an incoming request.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \Closure  $next
    * @param  string|null  $guard
    * @return mixed
    */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/dashboard');
        }

        return $next($request);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...