Как я могу аутентифицироваться в функциональных тестах кодирования с помощью Sentinel?

Я пытаюсь протестировать приложение laravel с помощью кода. Внутри Laravel я использую Sentinel для аутентификации. У меня возникла проблема с аутентификацией пользователя в тестах.
Не работает ни один из следующих примеров:

$I->authenticateTestUser($I);
$user = \App\User::where('email','=','[email protected]')->first();
$I->amLoggedAs($user);
$I->canSeeAuthentication();


$credentials = [
    'email'    => '[email protected]',
    'password' => '****',
];
Sentinel::authenticate($credentials, true);
$I->canSeeAuthentication();


$I->amOnPage('/login');
$I->fillField('email', $email);
$I->fillField('password', $password);
$I->click('Login');
$I->canSeeAuthentication();

Как я могу аутентифицироваться в функциональных тестах codeception?


person gandra404    schedule 02.02.2016    source источник
comment
Вы не можете использовать Sentinel::authenticate, экземпляр codeception не совпадает с экземпляром application.   -  person user2094178    schedule 03.02.2016


Ответы (1)


Вам просто нужно использовать sentinel в методе _before:

private $_user;
private $_credentials;

public function _before(FunctionalTester $I)
{
    // we create a user
    $this->_credentials = [
        'last_name'  => 'Test',
        'first_name' => 'test',
        'email'      => '[email protected]',
        'password'   => 'password',
    ];
    $this->_user = \Sentinel::register($this->_credentials, true);

    // we log this user
    \Sentinel::authenticate($this->_credentials);
}

И вы сможете повторно использовать своего пользователя или свои учетные данные в своих тестах.

person Okipa    schedule 07.03.2016
comment
У меня есть попытка. Не работает: '$I-›canSeeAuthentication();' вылетает с сообщением "Нет аутентифицированного пользователя" - person gandra404; 26.03.2016
comment
В конце _beforeметода добавьте dd(\Sentinel::getUser()). Если в результате вы не получите false, ваш пользователь зарегистрирован. - person Okipa; 29.03.2016