Laravel сумерек аутентифицировать пользовательскую модель - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь создать страницу, которая расширяет «DuskTestCase», чтобы избежать необходимости писать логику входа в систему в каждом тесте. Однако, когда я запускаю тесты, он не может утверждать, что после входа в систему браузер находится на домашней странице. Вот одна из вещей, которые я попробовал. Обратите внимание, что Auth :: check () возвращает false, и проблема, безусловно, отсюда, и я не могу понять, почему он не аутентифицирует пользователя, как описано в документации: https://laravel.com/docs/5.6/dusk Модель ICOUser также реализует контракт Illuminate \ Contracts \ Auth \ Authenticatable.

LoginPage.php

namespace Tests\Browser\Pages;

use ARM\Tcollect\ICO\ICOUser;
use Laravel\Dusk\Browser;
use Illuminate\Support\Facades\Auth;

class LoginPage extends Page
{
const SUDOER_ID = 499;
/**
* Get the URL for the page.
*
* @return string
*/
public function url()
{
    return '/';
}

/**
* Abstract the Login functionality
*
* @param  \Laravel\Dusk\Browser  $browser
* @param  string  $name
* @return void
*/
public function loginSudoer(Browser $browser)
{
    $browser->loginAs(ICOUser::find(static::SUDOER_ID))- >visit('/home');
}
}

Неудачный метод на моем LoginTest.php следующий:

public function testLoginSudoer()
    {
        $this->browse(function (Browser $browser){
           $browser->on(new LoginPage)
                   ->loginSudoer()
                   ->waitForLocation('/home', 10)
                   ->assertPathIs('/home')
                   ->visit('/logout');
       });
    }

РЕДАКТИРОВАТЬ : Я также пытался без которого Auth :: check () возвращает true, но он также не проходит.

public function testLoginSudoer()
{
    Auth::loginUsingId(499);
    $this->browse(function (Browser $browser){
       $browser->visit('/home')
               ->waitForLocation('/home', 20)
               ->assertPathIs('/home')
               ->visit('/logout');
   });
}

Кроме того, при ручной навигации с реальным Google Chrome на /_dusk/login/499, а затем /home, это работает. Если я делаю то же самое с сумраком, он не попадает в /home.

...