This is a patch for updating the Laravel TALL stack preset tests to use the Pest syntax.
curl https://gist.githubusercontent.com/owenvoke/b9e09290fe55737be8168c9d961a772f/raw/tall-stack-pest-syntax-changes.diff | git applyThis is a patch for updating the Laravel TALL stack preset tests to use the Pest syntax.
curl https://gist.githubusercontent.com/owenvoke/b9e09290fe55737be8168c9d961a772f/raw/tall-stack-pest-syntax-changes.diff | git apply| From 68aa01f4ed296415d4058781505b58b481b3e09c Mon Sep 17 00:00:00 2001 | |
| From: Owen Voke <[email protected]> | |
| Date: Mon, 11 May 2020 13:05:43 +0100 | |
| Subject: [PATCH] Update all tests to use Pest syntax | |
| --- | |
| tests/Feature/Auth/LoginTest.php | 179 +++++++-------- | |
| tests/Feature/Auth/LogoutTest.php | 37 ++- | |
| tests/Feature/Auth/Passwords/ConfirmTest.php | 119 +++++----- | |
| tests/Feature/Auth/Passwords/EmailTest.php | 82 +++---- | |
| tests/Feature/Auth/Passwords/ResetTest.php | 223 ++++++++---------- | |
| tests/Feature/Auth/RegisterTest.php | 228 +++++++++---------- | |
| tests/Feature/Auth/VerifyTest.php | 71 +++--- | |
| 7 files changed, 408 insertions(+), 531 deletions(-) | |
| diff --git a/tests/Feature/Auth/LoginTest.php b/tests/Feature/Auth/LoginTest.php | |
| index 62ec2a0..39b5660 100644 | |
| --- a/tests/Feature/Auth/LoginTest.php | |
| +++ b/tests/Feature/Auth/LoginTest.php | |
| @@ -1,107 +1,84 @@ | |
| <?php | |
| -namespace Tests\Feature\Auth; | |
| - | |
| use App\User; | |
| 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('login')) | |
| - ->assertSuccessful() | |
| - ->assertSeeLivewire('auth.login'); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function is_redirected_if_already_logged_in() | |
| - { | |
| - $user = factory(User::class)->create(); | |
| - | |
| - $this->be($user); | |
| - | |
| - $this->get(route('login')) | |
| - ->assertRedirect(route('home')); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function a_user_can_login() | |
| - { | |
| - $user = factory(User::class)->create(['password' => Hash::make('password')]); | |
| - | |
| - Livewire::test('auth.login') | |
| - ->set('email', $user->email) | |
| - ->set('password', 'password') | |
| - ->call('authenticate'); | |
| - | |
| - $this->assertAuthenticatedAs($user); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function is_redirected_to_the_home_page_after_login() | |
| - { | |
| - $user = factory(User::class)->create(['password' => Hash::make('password')]); | |
| - | |
| - Livewire::test('auth.login') | |
| - ->set('email', $user->email) | |
| - ->set('password', 'password') | |
| - ->call('authenticate') | |
| - ->assertRedirect(route('home')); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function email_is_required() | |
| - { | |
| - $user = factory(User::class)->create(['password' => Hash::make('password')]); | |
| - | |
| - Livewire::test('auth.login') | |
| - ->set('password', 'password') | |
| - ->call('authenticate') | |
| - ->assertHasErrors(['email' => 'required']); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function email_must_be_valid_email() | |
| - { | |
| - $user = factory(User::class)->create(['password' => Hash::make('password')]); | |
| - | |
| - Livewire::test('auth.login') | |
| - ->set('email', 'invalid-email') | |
| - ->set('password', 'password') | |
| - ->call('authenticate') | |
| - ->assertHasErrors(['email' => 'email']); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function password_is_required() | |
| - { | |
| - $user = factory(User::class)->create(['password' => Hash::make('password')]); | |
| - | |
| - Livewire::test('auth.login') | |
| - ->set('email', $user->email) | |
| - ->call('authenticate') | |
| - ->assertHasErrors(['password' => 'required']); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function bad_login_attempt_shows_message() | |
| - { | |
| - $user = factory(User::class)->create(); | |
| - | |
| - Livewire::test('auth.login') | |
| - ->set('email', $user->email) | |
| - ->set('password', 'bad-password') | |
| - ->call('authenticate') | |
| - ->assertHasErrors('email'); | |
| - | |
| - $this->assertFalse(Auth::check()); | |
| - } | |
| -} | |
| + | |
| +uses(RefreshDatabase::class); | |
| + | |
| +it('can view the login page', function () { | |
| + $this->get(route('login')) | |
| + ->assertSuccessful() | |
| + ->assertSeeLivewire('auth.login'); | |
| +}); | |
| + | |
| +it('is redirected if already logged in', function () { | |
| + $user = factory(User::class)->create(); | |
| + | |
| + $this->be($user); | |
| + | |
| + $this->get(route('login')) | |
| + ->assertRedirect(route('home')); | |
| +}); | |
| + | |
| +it('allows a user to log in', function () { | |
| + $user = factory(User::class)->create(['password' => Hash::make('password')]); | |
| + | |
| + Livewire::test('auth.login') | |
| + ->set('email', $user->email) | |
| + ->set('password', 'password') | |
| + ->call('authenticate'); | |
| + | |
| + $this->assertAuthenticatedAs($user); | |
| +}); | |
| + | |
| +it('redirects to the homepage after logging in', function () { | |
| + $user = factory(User::class)->create(['password' => Hash::make('password')]); | |
| + | |
| + Livewire::test('auth.login') | |
| + ->set('email', $user->email) | |
| + ->set('password', 'password') | |
| + ->call('authenticate') | |
| + ->assertRedirect(route('home')); | |
| +}); | |
| + | |
| +it('requires an email address', function () { | |
| + $user = factory(User::class)->create(['password' => Hash::make('password')]); | |
| + | |
| + Livewire::test('auth.login') | |
| + ->set('password', 'password') | |
| + ->call('authenticate') | |
| + ->assertHasErrors(['email' => 'required']); | |
| +}); | |
| + | |
| +it('requires a valid email address', function () { | |
| + $user = factory(User::class)->create(['password' => Hash::make('password')]); | |
| + | |
| + Livewire::test('auth.login') | |
| + ->set('email', 'invalid-email') | |
| + ->set('password', 'password') | |
| + ->call('authenticate') | |
| + ->assertHasErrors(['email' => 'email']); | |
| +}); | |
| + | |
| +it('requires a valid password', function () { | |
| + $user = factory(User::class)->create(['password' => Hash::make('password')]); | |
| + | |
| + Livewire::test('auth.login') | |
| + ->set('email', $user->email) | |
| + ->call('authenticate') | |
| + ->assertHasErrors(['password' => 'required']); | |
| +}); | |
| + | |
| +it('shows a message on a bad login attempt', function () { | |
| + $user = factory(User::class)->create(); | |
| + | |
| + Livewire::test('auth.login') | |
| + ->set('email', $user->email) | |
| + ->set('password', 'bad-password') | |
| + ->call('authenticate') | |
| + ->assertHasErrors('email'); | |
| + | |
| + $this->assertFalse(Auth::check()); | |
| +}); | |
| diff --git a/tests/Feature/Auth/LogoutTest.php b/tests/Feature/Auth/LogoutTest.php | |
| index 2c4d211..5a4d924 100644 | |
| --- a/tests/Feature/Auth/LogoutTest.php | |
| +++ b/tests/Feature/Auth/LogoutTest.php | |
| @@ -1,34 +1,25 @@ | |
| <?php | |
| -namespace Tests\Feature\Auth; | |
| - | |
| use App\User; | |
| use Illuminate\Foundation\Testing\RefreshDatabase; | |
| use Illuminate\Support\Facades\Auth; | |
| -use Tests\TestCase; | |
| -class LogoutTest extends TestCase | |
| -{ | |
| - use RefreshDatabase; | |
| +uses(RefreshDatabase::class); | |
| + | |
| +it('allows an authenticated user to log out', function () { | |
| + $user = factory(User::class)->create(); | |
| + $this->be($user); | |
| - /** @test */ | |
| - public function an_authenticated_user_can_log_out() | |
| - { | |
| - $user = factory(User::class)->create(); | |
| - $this->be($user); | |
| + $this->post(route('logout')) | |
| + ->assertRedirect(route('home')); | |
| - $this->post(route('logout')) | |
| - ->assertRedirect(route('home')); | |
| + $this->assertFalse(Auth::check()); | |
| +}); | |
| - $this->assertFalse(Auth::check()); | |
| - } | |
| +it('does not allow an unauthenticated user to log out', function () { | |
| - /** @test */ | |
| - public function an_unauthenticated_user_can_not_log_out() | |
| - { | |
| - $this->post(route('logout')) | |
| - ->assertRedirect(route('login')); | |
| + $this->post(route('logout')) | |
| + ->assertRedirect(route('login')); | |
| - $this->assertFalse(Auth::check()); | |
| - } | |
| -} | |
| + $this->assertFalse(Auth::check()); | |
| +}); | |
| diff --git a/tests/Feature/Auth/Passwords/ConfirmTest.php b/tests/Feature/Auth/Passwords/ConfirmTest.php | |
| index bc1e886..d93a9e6 100644 | |
| --- a/tests/Feature/Auth/Passwords/ConfirmTest.php | |
| +++ b/tests/Feature/Auth/Passwords/ConfirmTest.php | |
| @@ -1,76 +1,59 @@ | |
| <?php | |
| -namespace Tests\Feature\Auth\Passwords; | |
| - | |
| use App\User; | |
| use Illuminate\Foundation\Testing\RefreshDatabase; | |
| use Illuminate\Support\Facades\Hash; | |
| use Illuminate\Support\Facades\Route; | |
| use Livewire\Livewire; | |
| -use Tests\TestCase; | |
| - | |
| -class ConfirmTest extends TestCase | |
| -{ | |
| - use RefreshDatabase; | |
| - | |
| - protected function setUp(): void | |
| - { | |
| - parent::setUp(); | |
| - | |
| - Route::get('/must-be-confirmed', function () { | |
| - return 'You must be confirmed to see this page.'; | |
| - })->middleware(['web', 'password.confirm']); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function a_user_must_confirm_their_password_before_visiting_a_protected_page() | |
| - { | |
| - $user = factory(User::class)->create(); | |
| - $this->be($user); | |
| - | |
| - $this->get('/must-be-confirmed') | |
| - ->assertRedirect(route('password.confirm')); | |
| - | |
| - $this->followingRedirects() | |
| - ->get('/must-be-confirmed') | |
| - ->assertSeeLivewire('auth.passwords.confirm'); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function a_user_must_enter_a_password_to_confirm_it() | |
| - { | |
| - Livewire::test('auth.passwords.confirm') | |
| - ->call('confirm') | |
| - ->assertHasErrors(['password' => 'required']); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function a_user_must_enter_their_own_password_to_confirm_it() | |
| - { | |
| - $user = factory(User::class)->create([ | |
| - 'password' => Hash::make('password'), | |
| - ]); | |
| - | |
| - Livewire::test('auth.passwords.confirm') | |
| - ->set('password', 'not-password') | |
| - ->call('confirm') | |
| - ->assertHasErrors(['password' => 'password']); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function a_user_who_confirms_their_password_will_get_redirected() | |
| - { | |
| - $user = factory(User::class)->create([ | |
| - 'password' => Hash::make('password'), | |
| - ]); | |
| - | |
| - $this->be($user); | |
| - | |
| - $this->withSession(['url.intended' => '/must-be-confirmed']); | |
| - Livewire::test('auth.passwords.confirm') | |
| - ->set('password', 'password') | |
| - ->call('confirm') | |
| - ->assertRedirect('/must-be-confirmed'); | |
| - } | |
| -} | |
| +uses(RefreshDatabase::class); | |
| + | |
| +beforeEach(function () { | |
| + Route::get('/must-be-confirmed', function () { | |
| + return 'You must be confirmed to see this page.'; | |
| + })->middleware(['web', 'password.confirm']); | |
| +}); | |
| + | |
| +it('requires a user to confirm their password before visiting a protected page', function () { | |
| + $user = factory(User::class)->create(); | |
| + $this->be($user); | |
| + | |
| + $this->get('/must-be-confirmed') | |
| + ->assertRedirect(route('password.confirm')); | |
| + | |
| + $this->followingRedirects() | |
| + ->get('/must-be-confirmed') | |
| + ->assertSeeLivewire('auth.passwords.confirm'); | |
| +}); | |
| + | |
| +it('requires a user to enter a password to confirm it', function () { | |
| + Livewire::test('auth.passwords.confirm') | |
| + ->call('confirm') | |
| + ->assertHasErrors(['password' => 'required']); | |
| +}); | |
| + | |
| +it('requires a user to enter their own password to confirm it', function () { | |
| + $user = factory(User::class)->create([ | |
| + 'password' => Hash::make('password'), | |
| + ]); | |
| + | |
| + Livewire::test('auth.passwords.confirm') | |
| + ->set('password', 'not-password') | |
| + ->call('confirm') | |
| + ->assertHasErrors(['password' => 'password']); | |
| +}); | |
| + | |
| +it('redirects a user who correctly confirms their own password', function () { | |
| + $user = factory(User::class)->create([ | |
| + 'password' => Hash::make('password'), | |
| + ]); | |
| + | |
| + $this->be($user); | |
| + | |
| + $this->withSession(['url.intended' => '/must-be-confirmed']); | |
| + | |
| + Livewire::test('auth.passwords.confirm') | |
| + ->set('password', 'password') | |
| + ->call('confirm') | |
| + ->assertRedirect('/must-be-confirmed'); | |
| +}); | |
| diff --git a/tests/Feature/Auth/Passwords/EmailTest.php b/tests/Feature/Auth/Passwords/EmailTest.php | |
| index 055f753..b1867c5 100644 | |
| --- a/tests/Feature/Auth/Passwords/EmailTest.php | |
| +++ b/tests/Feature/Auth/Passwords/EmailTest.php | |
| @@ -1,53 +1,39 @@ | |
| <?php | |
| -namespace Tests\Feature\Auth\Passwords; | |
| - | |
| use App\User; | |
| use Illuminate\Foundation\Testing\RefreshDatabase; | |
| use Livewire\Livewire; | |
| -use Tests\TestCase; | |
| - | |
| -class EmailTest extends TestCase | |
| -{ | |
| - use RefreshDatabase; | |
| - | |
| - /** @test */ | |
| - public function can_view_password_request_page() | |
| - { | |
| - $this->get(route('password.request')) | |
| - ->assertSuccessful() | |
| - ->assertSeeLivewire('auth.passwords.email'); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function a_user_must_enter_an_email_address() | |
| - { | |
| - Livewire::test('auth.passwords.email') | |
| - ->call('sendResetPasswordLink') | |
| - ->assertHasErrors(['email' => 'required']); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function a_user_must_enter_a_valid_email_address() | |
| - { | |
| - Livewire::test('auth.passwords.email') | |
| - ->set('email', 'email') | |
| - ->call('sendResetPasswordLink') | |
| - ->assertHasErrors(['email' => 'email']); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function a_user_who_enters_a_valid_email_address_will_get_sent_an_email() | |
| - { | |
| - $user = factory(User::class)->create(); | |
| - | |
| - Livewire::test('auth.passwords.email') | |
| - ->set('email', $user->email) | |
| - ->call('sendResetPasswordLink') | |
| - ->assertNotSet('emailSentMessage', false); | |
| - | |
| - $this->assertDatabaseHas('password_resets', [ | |
| - 'email' => $user->email, | |
| - ]); | |
| - } | |
| -} | |
| + | |
| +uses(RefreshDatabase::class); | |
| + | |
| +it('can view the password request page', function () { | |
| + $this->get(route('password.request')) | |
| + ->assertSuccessful() | |
| + ->assertSeeLivewire('auth.passwords.email'); | |
| +}); | |
| + | |
| +it('requires a user to enter an email', function () { | |
| + Livewire::test('auth.passwords.email') | |
| + ->call('sendResetPasswordLink') | |
| + ->assertHasErrors(['email' => 'required']); | |
| +}); | |
| + | |
| +it('requires a user to enter a valid email', function () { | |
| + Livewire::test('auth.passwords.email') | |
| + ->set('email', 'email') | |
| + ->call('sendResetPasswordLink') | |
| + ->assertHasErrors(['email' => 'email']); | |
| +}); | |
| + | |
| +it('sends an email to a user that enters a valid email', function () { | |
| + $user = factory(User::class)->create(); | |
| + | |
| + Livewire::test('auth.passwords.email') | |
| + ->set('email', $user->email) | |
| + ->call('sendResetPasswordLink') | |
| + ->assertNotSet('emailSentMessage', false); | |
| + | |
| + $this->assertDatabaseHas('password_resets', [ | |
| + 'email' => $user->email, | |
| + ]); | |
| +}); | |
| diff --git a/tests/Feature/Auth/Passwords/ResetTest.php b/tests/Feature/Auth/Passwords/ResetTest.php | |
| index bf088ce..dcea540 100644 | |
| --- a/tests/Feature/Auth/Passwords/ResetTest.php | |
| +++ b/tests/Feature/Auth/Passwords/ResetTest.php | |
| @@ -1,132 +1,109 @@ | |
| <?php | |
| -namespace Tests\Feature\Auth\Passwords; | |
| - | |
| use App\User; | |
| use Illuminate\Foundation\Testing\RefreshDatabase; | |
| use Illuminate\Support\Carbon; | |
| -use Illuminate\Support\Facades\Auth; | |
| use Illuminate\Support\Facades\DB; | |
| use Illuminate\Support\Facades\Hash; | |
| use Illuminate\Support\Str; | |
| use Livewire\Livewire; | |
| -use Tests\TestCase; | |
| - | |
| -class ResetTest extends TestCase | |
| -{ | |
| - use RefreshDatabase; | |
| - | |
| - /** @test */ | |
| - public function can_view_password_reset_page() | |
| - { | |
| - $user = factory(User::class)->create(); | |
| - | |
| - $token = Str::random(16); | |
| - | |
| - DB::table('password_resets')->insert([ | |
| - 'email' => $user->email, | |
| - 'token' => Hash::make($token), | |
| - 'created_at' => Carbon::now(), | |
| - ]); | |
| - | |
| - $this->get(route('password.reset', [ | |
| - 'email' => $user->email, | |
| - 'token' => $token, | |
| - ])) | |
| - ->assertSuccessful() | |
| - ->assertSeeLivewire('auth.passwords.reset'); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function can_reset_password() | |
| - { | |
| - $user = factory(User::class)->create(); | |
| - | |
| - $token = Str::random(16); | |
| - | |
| - DB::table('password_resets')->insert([ | |
| - 'email' => $user->email, | |
| - 'token' => Hash::make($token), | |
| - 'created_at' => Carbon::now(), | |
| - ]); | |
| - | |
| - Livewire::test('auth.passwords.reset', [ | |
| - 'token' => $token, | |
| - ]) | |
| - ->set('email', $user->email) | |
| - ->set('password', 'new-password') | |
| - ->set('passwordConfirmation', 'new-password') | |
| - ->call('resetPassword'); | |
| - | |
| - $this->assertTrue(Auth::attempt([ | |
| - 'email' => $user->email, | |
| - 'password' => 'new-password', | |
| - ])); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function token_is_required() | |
| - { | |
| - Livewire::test('auth.passwords.reset', [ | |
| - 'token' => null, | |
| - ]) | |
| - ->call('resetPassword') | |
| - ->assertHasErrors(['token' => 'required']); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function email_is_required() | |
| - { | |
| - Livewire::test('auth.passwords.reset', [ | |
| - 'token' => Str::random(16), | |
| - ]) | |
| - ->set('email', null) | |
| - ->call('resetPassword') | |
| - ->assertHasErrors(['email' => 'required']); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function email_is_valid_email() | |
| - { | |
| - Livewire::test('auth.passwords.reset', [ | |
| - 'token' => Str::random(16), | |
| - ]) | |
| - ->set('email', 'email') | |
| - ->call('resetPassword') | |
| - ->assertHasErrors(['email' => 'email']); | |
| - } | |
| - | |
| - /** @test */ | |
| - function password_is_required() | |
| - { | |
| - Livewire::test('auth.passwords.reset', [ | |
| - 'token' => Str::random(16), | |
| - ]) | |
| - ->set('password', '') | |
| - ->call('resetPassword') | |
| - ->assertHasErrors(['password' => 'required']); | |
| - } | |
| - | |
| - /** @test */ | |
| - function password_is_minimum_of_eight_characters() | |
| - { | |
| - Livewire::test('auth.passwords.reset', [ | |
| - 'token' => Str::random(16), | |
| - ]) | |
| - ->set('password', 'secret') | |
| - ->call('resetPassword') | |
| - ->assertHasErrors(['password' => 'min']); | |
| - } | |
| - | |
| - /** @test */ | |
| - function password_matches_password_confirmation() | |
| - { | |
| - Livewire::test('auth.passwords.reset', [ | |
| - 'token' => Str::random(16), | |
| - ]) | |
| - ->set('password', 'new-password') | |
| - ->set('passwordConfirmation', 'not-new-password') | |
| - ->call('resetPassword') | |
| - ->assertHasErrors(['password' => 'same']); | |
| - } | |
| -} | |
| + | |
| +uses(RefreshDatabase::class); | |
| + | |
| +it('can view the password reset page', function () { | |
| + $user = factory(User::class)->create(); | |
| + | |
| + $token = Str::random(16); | |
| + | |
| + DB::table('password_resets')->insert([ | |
| + 'email' => $user->email, | |
| + 'token' => Hash::make($token), | |
| + 'created_at' => Carbon::now(), | |
| + ]); | |
| + | |
| + $this->get(route('password.reset', [ | |
| + 'email' => $user->email, | |
| + 'token' => $token, | |
| + ])) | |
| + ->assertSuccessful() | |
| + ->assertSeeLivewire('auth.passwords.reset'); | |
| +}); | |
| + | |
| +it('can reset a users password', function () { | |
| + $user = factory(User::class)->create(); | |
| + | |
| + $token = Str::random(16); | |
| + | |
| + DB::table('password_resets')->insert([ | |
| + 'email' => $user->email, | |
| + 'token' => Hash::make($token), | |
| + 'created_at' => Carbon::now(), | |
| + ]); | |
| + | |
| + Livewire::test('auth.passwords.reset', [ | |
| + 'token' => $token, | |
| + ]) | |
| + ->set('email', $user->email) | |
| + ->set('password', 'new-password') | |
| + ->set('passwordConfirmation', 'new-password') | |
| + ->call('resetPassword'); | |
| + | |
| + $this->assertTrue(Auth::attempt([ | |
| + 'email' => $user->email, | |
| + 'password' => 'new-password', | |
| + ])); | |
| +}); | |
| + | |
| +it('requires a token', function () { | |
| + Livewire::test('auth.passwords.reset', [ | |
| + 'token' => null, | |
| + ]) | |
| + ->call('resetPassword') | |
| + ->assertHasErrors(['token' => 'required']); | |
| +}); | |
| + | |
| +it('requires an email', function () { | |
| + Livewire::test('auth.passwords.reset', [ | |
| + 'token' => Str::random(16), | |
| + ]) | |
| + ->set('email', null) | |
| + ->call('resetPassword') | |
| + ->assertHasErrors(['email' => 'required']); | |
| +}); | |
| + | |
| +it('requires a valid email', function () { | |
| + Livewire::test('auth.passwords.reset', [ | |
| + 'token' => Str::random(16), | |
| + ]) | |
| + ->set('email', 'email') | |
| + ->call('resetPassword') | |
| + ->assertHasErrors(['email' => 'email']); | |
| +}); | |
| + | |
| +it('requires a password', function () { | |
| + Livewire::test('auth.passwords.reset', [ | |
| + 'token' => Str::random(16), | |
| + ]) | |
| + ->set('password', '') | |
| + ->call('resetPassword') | |
| + ->assertHasErrors(['password' => 'required']); | |
| +}); | |
| + | |
| +it('requires a password that is at least the minimum length', function () { | |
| + Livewire::test('auth.passwords.reset', [ | |
| + 'token' => Str::random(16), | |
| + ]) | |
| + ->set('password', 'secret') | |
| + ->call('resetPassword') | |
| + ->assertHasErrors(['password' => 'min']); | |
| +}); | |
| + | |
| +it('requires the password confirmation to match the password', function () { | |
| + Livewire::test('auth.passwords.reset', [ | |
| + 'token' => Str::random(16), | |
| + ]) | |
| + ->set('password', 'new-password') | |
| + ->set('passwordConfirmation', 'not-new-password') | |
| + ->call('resetPassword') | |
| + ->assertHasErrors(['password' => 'same']); | |
| +}); | |
| diff --git a/tests/Feature/Auth/RegisterTest.php b/tests/Feature/Auth/RegisterTest.php | |
| index 3f5843c..759d85d 100644 | |
| --- a/tests/Feature/Auth/RegisterTest.php | |
| +++ b/tests/Feature/Auth/RegisterTest.php | |
| @@ -1,132 +1,108 @@ | |
| <?php | |
| -namespace Tests\Feature\Auth; | |
| - | |
| use App\User; | |
| -use Tests\TestCase; | |
| -use Livewire\Livewire; | |
| -use Illuminate\Support\Facades\Hash; | |
| -use App\Providers\RouteServiceProvider; | |
| use Illuminate\Foundation\Testing\RefreshDatabase; | |
| use Illuminate\Support\Facades\Auth; | |
| +use Livewire\Livewire; | |
| -class RegisterTest extends TestCase | |
| -{ | |
| - use RefreshDatabase; | |
| - | |
| - /** @test */ | |
| - function registration_page_contains_livewire_component() | |
| - { | |
| - $this->get(route('register')) | |
| - ->assertSuccessful() | |
| - ->assertSeeLivewire('auth.register'); | |
| - } | |
| - | |
| - /** @test */ | |
| - public function is_redirected_if_already_logged_in() | |
| - { | |
| - $user = factory(User::class)->create(); | |
| - | |
| - $this->be($user); | |
| - | |
| - $this->get(route('register')) | |
| - ->assertRedirect(route('home')); | |
| - } | |
| - | |
| - /** @test */ | |
| - function a_user_can_register() | |
| - { | |
| - Livewire::test('auth.register') | |
| - ->set('name', 'Tall Stack') | |
| - ->set('email', '[email protected]') | |
| - ->set('password', 'password') | |
| - ->set('passwordConfirmation', 'password') | |
| - ->call('register') | |
| - ->assertRedirect(route('home')); | |
| - | |
| - $this->assertTrue(User::whereEmail('[email protected]')->exists()); | |
| - $this->assertEquals('[email protected]', Auth::user()->email); | |
| - } | |
| - | |
| - /** @test */ | |
| - function name_is_required() | |
| - { | |
| - Livewire::test('auth.register') | |
| - ->set('name', '') | |
| - ->call('register') | |
| - ->assertHasErrors(['email' => 'required']); | |
| - } | |
| - | |
| - /** @test */ | |
| - function email_is_required() | |
| - { | |
| - Livewire::test('auth.register') | |
| - ->set('email', '') | |
| - ->call('register') | |
| - ->assertHasErrors(['email' => 'required']); | |
| - } | |
| - | |
| - /** @test */ | |
| - function email_is_valid_email() | |
| - { | |
| - Livewire::test('auth.register') | |
| - ->set('email', 'tallstack') | |
| - ->call('register') | |
| - ->assertHasErrors(['email' => 'email']); | |
| - } | |
| - | |
| - /** @test */ | |
| - function email_hasnt_been_taken_already() | |
| - { | |
| - factory(User::class)->create(['email' => '[email protected]']); | |
| - | |
| - Livewire::test('auth.register') | |
| - ->set('email', '[email protected]') | |
| - ->call('register') | |
| - ->assertHasErrors(['email' => 'unique']); | |
| - } | |
| - | |
| - /** @test */ | |
| - function see_email_hasnt_already_been_taken_validation_message_as_user_types() | |
| - { | |
| - factory(User::class)->create(['email' => '[email protected]']); | |
| - | |
| - Livewire::test('auth.register') | |
| - ->set('email', '[email protected]') | |
| - ->assertHasNoErrors() | |
| - ->set('email', '[email protected]') | |
| - ->call('register') | |
| - ->assertHasErrors(['email' => 'unique']); | |
| - } | |
| - | |
| - /** @test */ | |
| - function password_is_required() | |
| - { | |
| - Livewire::test('auth.register') | |
| - ->set('password', '') | |
| - ->set('passwordConfirmation', 'password') | |
| - ->call('register') | |
| - ->assertHasErrors(['password' => 'required']); | |
| - } | |
| - | |
| - /** @test */ | |
| - function password_is_minimum_of_eight_characters() | |
| - { | |
| - Livewire::test('auth.register') | |
| - ->set('password', 'secret') | |
| - ->set('passwordConfirmation', 'secret') | |
| - ->call('register') | |
| - ->assertHasErrors(['password' => 'min']); | |
| - } | |
| - | |
| - /** @test */ | |
| - function password_matches_password_confirmation() | |
| - { | |
| - Livewire::test('auth.register') | |
| - ->set('email', '[email protected]') | |
| - ->set('password', 'password') | |
| - ->set('passwordConfirmation', 'not-password') | |
| - ->call('register') | |
| - ->assertHasErrors(['password' => 'same']); | |
| - } | |
| -} | |
| +uses(RefreshDatabase::class); | |
| + | |
| +it('checks the registration page contains Livewire component', function () { | |
| + $this->get(route('register')) | |
| + ->assertSuccessful() | |
| + ->assertSeeLivewire('auth.register'); | |
| +}); | |
| + | |
| +it('redirects if the user is already logged in', function () { | |
| + $user = factory(User::class)->create(); | |
| + | |
| + $this->be($user); | |
| + | |
| + $this->get(route('register')) | |
| + ->assertRedirect(route('home')); | |
| +}); | |
| + | |
| +it('allows a user to register', function () { | |
| + Livewire::test('auth.register') | |
| + ->set('name', 'Tall Stack') | |
| + ->set('email', '[email protected]') | |
| + ->set('password', 'password') | |
| + ->set('passwordConfirmation', 'password') | |
| + ->call('register') | |
| + ->assertRedirect(route('home')); | |
| + | |
| + $this->assertTrue(User::whereEmail('[email protected]')->exists()); | |
| + $this->assertEquals('[email protected]', Auth::user()->email); | |
| +}); | |
| + | |
| + | |
| +it('requires a name', function () { | |
| + Livewire::test('auth.register') | |
| + ->set('name', '') | |
| + ->call('register') | |
| + ->assertHasErrors(['email' => 'required']); | |
| +}); | |
| + | |
| +it('requires an email', function () { | |
| + Livewire::test('auth.register') | |
| + ->set('email', '') | |
| + ->call('register') | |
| + ->assertHasErrors(['email' => 'required']); | |
| +}); | |
| + | |
| + | |
| +it('requires a valid email', function () { | |
| + Livewire::test('auth.register') | |
| + ->set('email', 'tallstack') | |
| + ->call('register') | |
| + ->assertHasErrors(['email' => 'email']); | |
| +}); | |
| + | |
| + | |
| +it('requires an email that has not already been taken', function () { | |
| + factory(User::class)->create(['email' => '[email protected]']); | |
| + | |
| + Livewire::test('auth.register') | |
| + ->set('email', '[email protected]') | |
| + ->call('register') | |
| + ->assertHasErrors(['email' => 'unique']); | |
| +}); | |
| + | |
| +it('shows an email has already been taken message as the user types', function () { | |
| + factory(User::class)->create(['email' => '[email protected]']); | |
| + | |
| + Livewire::test('auth.register') | |
| + ->set('email', '[email protected]') | |
| + ->assertHasNoErrors() | |
| + ->set('email', '[email protected]') | |
| + ->call('register') | |
| + ->assertHasErrors(['email' => 'unique']); | |
| +}); | |
| + | |
| + | |
| +it('requires a password', function () { | |
| + Livewire::test('auth.register') | |
| + ->set('password', '') | |
| + ->set('passwordConfirmation', 'password') | |
| + ->call('register') | |
| + ->assertHasErrors(['password' => 'required']); | |
| +}); | |
| + | |
| + | |
| +it('requires a password that is at least the minimum length', function () { | |
| + Livewire::test('auth.register') | |
| + ->set('password', 'secret') | |
| + ->set('passwordConfirmation', 'secret') | |
| + ->call('register') | |
| + ->assertHasErrors(['password' => 'min']); | |
| +}); | |
| + | |
| + | |
| +it('requires a password that matches the password configuration', function () { | |
| + Livewire::test('auth.register') | |
| + ->set('email', '[email protected]') | |
| + ->set('password', 'password') | |
| + ->set('passwordConfirmation', 'not-password') | |
| + ->call('register') | |
| + ->assertHasErrors(['password' => 'same']); | |
| +}); | |
| diff --git a/tests/Feature/Auth/VerifyTest.php b/tests/Feature/Auth/VerifyTest.php | |
| index 202ec94..8dbec0e 100644 | |
| --- a/tests/Feature/Auth/VerifyTest.php | |
| +++ b/tests/Feature/Auth/VerifyTest.php | |
| @@ -1,65 +1,52 @@ | |
| <?php | |
| -namespace Tests\Feature\Auth; | |
| - | |
| use App\User; | |
| -use Tests\TestCase; | |
| -use Livewire\Livewire; | |
| -use Illuminate\Support\Facades\Hash; | |
| -use App\Providers\RouteServiceProvider; | |
| use Illuminate\Foundation\Testing\RefreshDatabase; | |
| use Illuminate\Support\Carbon; | |
| use Illuminate\Support\Facades\Auth; | |
| use Illuminate\Support\Facades\Config; | |
| use Illuminate\Support\Facades\URL; | |
| +use Livewire\Livewire; | |
| -class VerifyTest extends TestCase | |
| -{ | |
| - use RefreshDatabase; | |
| +uses(RefreshDatabase::class); | |
| - /** @test */ | |
| - public function can_view_verification_page() | |
| - { | |
| - $user = factory(User::class)->create([ | |
| - 'email_verified_at' => null, | |
| - ]); | |
| +it('can view verification page', function () { | |
| + $user = factory(User::class)->create([ | |
| + 'email_verified_at' => null, | |
| + ]); | |
| - Auth::login($user); | |
| + Auth::login($user); | |
| - $this->get(route('verification.notice')) | |
| - ->assertSuccessful() | |
| - ->assertSeeLivewire('auth.verify'); | |
| - } | |
| + $this->get(route('verification.notice')) | |
| + ->assertSuccessful() | |
| + ->assertSeeLivewire('auth.verify'); | |
| +}); | |
| - /** @test */ | |
| - public function can_resend_verification_email() | |
| - { | |
| - $user = factory(User::class)->create(); | |
| +it('can resend the verification email', function () { | |
| + $user = factory(User::class)->create(); | |
| - Livewire::actingAs($user); | |
| + Livewire::actingAs($user); | |
| - Livewire::test('auth.verify') | |
| - ->call('resend') | |
| - ->assertEmitted('resent'); | |
| - } | |
| + Livewire::test('auth.verify') | |
| + ->call('resend') | |
| + ->assertEmitted('resent'); | |
| +}); | |
| - /** @test */ | |
| - public function can_verify() | |
| - { | |
| - $user = factory(User::class)->create([ | |
| - 'email_verified_at' => null, | |
| - ]); | |
| +it('can verify an email', function () { | |
| + $user = factory(User::class)->create([ | |
| + 'email_verified_at' => null, | |
| + ]); | |
| - Auth::login($user); | |
| + Auth::login($user); | |
| - $url = URL::temporarySignedRoute('verification.verify', Carbon::now()->addMinutes(Config::get('auth.verification.expire', 60)), [ | |
| + $url = URL::temporarySignedRoute('verification.verify', | |
| + Carbon::now()->addMinutes(Config::get('auth.verification.expire', 60)), [ | |
| 'id' => $user->getKey(), | |
| 'hash' => sha1($user->getEmailForVerification()), | |
| ]); | |
| - $this->get($url) | |
| - ->assertRedirect(route('home')); | |
| + $this->get($url) | |
| + ->assertRedirect(route('home')); | |
| - $this->assertTrue($user->hasVerifiedEmail()); | |
| - } | |
| -} | |
| + $this->assertTrue($user->hasVerifiedEmail()); | |
| +}); |