проверить, вошел ли пользователь в laravel 5.7 - PullRequest
0 голосов
/ 04 января 2019

Я делаю тест, но он не проходит, когда пытается проверить, вошел ли пользователь в систему:

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Auth;
use App\User;

class RegisterTest extends TestCase
{

    use RefreshDatabase;

    /*.....
    more test about registering
     ....*/    

    /** @test */
    function redirect_to_home_page_and_logged_in_after_login()
    {                   

        $user = factory(User::class)->create([
            'name' => 'Test',
            'email' => 'test@hotmail.com', 
            'password' => '123456'
        ]);     

        $response = $this->post('login', [
            'email' => 'test@hotmail.com',
            'password' => '123456'          
        ]);

        //this works
        $response->assertRedirect('/');

        //this fails 
        $this->assertTrue(Auth::check());


    }
}

А это мой контроллер HomeController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class HomeController extends Controller
{


    public function index()
    {                    

        if (Auth::check()){

            return view('home');    
        }

        return view('welcome');

    }
}

А это мои маршруты / web.php

Route::get('/', 'HomeController@index');    
Auth::routes();

Я не уверен, что я делаю неправильно. А что я могу сделать?. Я использую laravel 5.7 и phpunit 5.7.1 Также в моем приложении / Htpp / Auth / LoginController.php я сделал это:

protected $redirectTo = '/'; 

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Помимо хеширования вашего пароля вы также можете просто опубликовать маршрут регистрации и создать новую учетную запись.

/** @test */
function redirect_to_home_page_and_logged_in_after_register()
{                      
    $response = $this->post('register', [
        'name' => 'Test',
        'email' => 'test@hotmail.com',
        'password' => '123456'          
    ]);

    //this works
    $response->assertRedirect('/');

    //this fails 
    $this->assertTrue(Auth::check());
}

Полагаю, у вас может быть требование сделать это обоими способами:

/** @test */
function redirect_to_home_page_and_logged_in_after_login()
{                

    $user = factory(User::class)->create([
        'name' => 'Test',
        'email' => 'test@hotmail.com', 
        // note you need to use the bcrypt function here to hash your password
        'password' => bcrypt('123456')
    ]);      

    $response = $this->post('login', [
        'name' => 'Test',
        'email' => 'test@hotmail.com',
        'password' => '123456'          
    ]);

    //this works
    $response->assertRedirect('/');

    //this fails 
    $this->assertTrue(Auth::check());
}
0 голосов
/ 04 января 2019

Создание пользователя требует, чтобы вы позаботились о хешировании пароля. Вы можете просто сделать это, используя функцию php password_hash . И используйте Auth::login($user); для входа.

Вот так:

$user = User::create(['email' => 'r@o.b', 'password' => password_hash('123456', 1)]);
Auth::login($user); //You should be logged in :)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...