<?php
|
|
|
|
namespace Tests\Feature\Collaborators\Auth;
|
|
|
|
use App\Collaborator;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Livewire\Livewire;
|
|
use Tests\TestCase;
|
|
|
|
class LoginTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
/** @test */
|
|
public function can_view_login_page()
|
|
{
|
|
$this->get(route('collaborators.login'))
|
|
->assertSuccessful()
|
|
->assertSeeLivewire('collaborators.auth.login');
|
|
}
|
|
|
|
/** @test */
|
|
public function is_redirected_if_already_logged_in()
|
|
{
|
|
$collaborator = factory(Collaborator::class)->create();
|
|
|
|
$this->be($collaborator, 'collaborators');
|
|
|
|
$this->get(route('collaborators.login'))
|
|
->assertRedirect(route('collaborators.home'));
|
|
}
|
|
|
|
/** @test */
|
|
public function a_collaborator_can_login()
|
|
{
|
|
$collaborator = $this->factoryWithoutObservers(Collaborator::class)->create(['password' => Hash::make('password')]);
|
|
|
|
Livewire::test('collaborators.auth.login')
|
|
->set('email', $collaborator->email)
|
|
->set('password', 'password')
|
|
->call('authenticate');
|
|
|
|
$this->assertAuthenticatedAs($collaborator, 'collaborators');
|
|
}
|
|
|
|
/** @test */
|
|
public function is_redirected_to_the_home_page_after_login()
|
|
{
|
|
$collaborator = $this->factoryWithoutObservers(Collaborator::class)->create(['password' => Hash::make('password')]);
|
|
|
|
Livewire::test('collaborators.auth.login')
|
|
->set('email', $collaborator->email)
|
|
->set('password', 'password')
|
|
->call('authenticate')
|
|
->assertRedirect(route('collaborators.home'));
|
|
}
|
|
|
|
/** @test */
|
|
public function email_is_required()
|
|
{
|
|
$collaborator = factory(Collaborator::class)->create(['password' => Hash::make('password')]);
|
|
|
|
Livewire::test('collaborators.auth.login')
|
|
->set('password', 'password')
|
|
->call('authenticate')
|
|
->assertHasErrors(['email' => 'required']);
|
|
}
|
|
|
|
/** @test */
|
|
public function email_must_be_valid_email()
|
|
{
|
|
$collaborator = factory(Collaborator::class)->create(['password' => Hash::make('password')]);
|
|
|
|
Livewire::test('collaborators.auth.login')
|
|
->set('email', 'invalid-email')
|
|
->set('password', 'password')
|
|
->call('authenticate')
|
|
->assertHasErrors(['email' => 'email']);
|
|
}
|
|
|
|
/** @test */
|
|
public function password_is_required()
|
|
{
|
|
$collaborator = factory(Collaborator::class)->create(['password' => Hash::make('password')]);
|
|
|
|
Livewire::test('collaborators.auth.login')
|
|
->set('email', $collaborator->email)
|
|
->call('authenticate')
|
|
->assertHasErrors(['password' => 'required']);
|
|
}
|
|
|
|
/** @test */
|
|
public function bad_login_attempt_shows_message()
|
|
{
|
|
$collaborator = factory(Collaborator::class)->create();
|
|
|
|
Livewire::test('collaborators.auth.login')
|
|
->set('email', $collaborator->email)
|
|
->set('password', 'bad-password')
|
|
->call('authenticate')
|
|
->assertHasErrors('email');
|
|
|
|
$this->assertFalse(Auth::check());
|
|
}
|
|
}
|