123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
-
- namespace Tests\Feature;
-
- use App\Models\User;
- use Illuminate\Auth\Events\Verified;
- use Illuminate\Foundation\Testing\RefreshDatabase;
- use Illuminate\Support\Facades\Event;
- use Illuminate\Support\Facades\URL;
- use Laravel\Fortify\Features;
- use Tests\TestCase;
-
- class EmailVerificationTest extends TestCase
- {
- use RefreshDatabase;
-
- public function test_email_verification_screen_can_be_rendered(): void
- {
- if (! Features::enabled(Features::emailVerification())) {
- $this->markTestSkipped('Email verification not enabled.');
-
- return;
- }
-
- $user = User::factory()->withPersonalCompany()->unverified()->create();
-
- $response = $this->actingAs($user)->get('/email/verify');
-
- $response->assertStatus(200);
- }
-
- public function test_email_can_be_verified(): void
- {
- if (! Features::enabled(Features::emailVerification())) {
- $this->markTestSkipped('Email verification not enabled.');
-
- return;
- }
-
- Event::fake();
-
- $user = User::factory()->unverified()->create();
-
- $verificationUrl = URL::temporarySignedRoute(
- 'verification.verify',
- now()->addMinutes(60),
- ['id' => $user->id, 'hash' => sha1($user->email)]
- );
-
- $response = $this->actingAs($user)->get($verificationUrl);
-
- Event::assertDispatched(Verified::class);
-
- $this->assertTrue($user->fresh()->hasVerifiedEmail());
- $response->assertRedirect(config('filament.path').'?verified=1');
- }
-
- public function test_email_can_not_verified_with_invalid_hash(): void
- {
- if (! Features::enabled(Features::emailVerification())) {
- $this->markTestSkipped('Email verification not enabled.');
-
- return;
- }
-
- $user = User::factory()->unverified()->create();
-
- $verificationUrl = URL::temporarySignedRoute(
- 'verification.verify',
- now()->addMinutes(60),
- ['id' => $user->id, 'hash' => sha1('wrong-email')]
- );
-
- $this->actingAs($user)->get($verificationUrl);
-
- $this->assertFalse($user->fresh()->hasVerifiedEmail());
- }
- }
|