Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

EmailVerificationTest.php 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace Tests\Feature;
  3. use App\Models\User;
  4. use Illuminate\Auth\Events\Verified;
  5. use Illuminate\Foundation\Testing\RefreshDatabase;
  6. use Illuminate\Support\Facades\Event;
  7. use Illuminate\Support\Facades\URL;
  8. use Laravel\Fortify\Features;
  9. use Tests\TestCase;
  10. class EmailVerificationTest extends TestCase
  11. {
  12. use RefreshDatabase;
  13. public function test_email_verification_screen_can_be_rendered(): void
  14. {
  15. if (! Features::enabled(Features::emailVerification())) {
  16. $this->markTestSkipped('Email verification not enabled.');
  17. return;
  18. }
  19. $user = User::factory()->withPersonalCompany()->unverified()->create();
  20. $response = $this->actingAs($user)->get('/email/verify');
  21. $response->assertStatus(200);
  22. }
  23. public function test_email_can_be_verified(): void
  24. {
  25. if (! Features::enabled(Features::emailVerification())) {
  26. $this->markTestSkipped('Email verification not enabled.');
  27. return;
  28. }
  29. Event::fake();
  30. $user = User::factory()->unverified()->create();
  31. $verificationUrl = URL::temporarySignedRoute(
  32. 'verification.verify',
  33. now()->addMinutes(60),
  34. ['id' => $user->id, 'hash' => sha1($user->email)]
  35. );
  36. $response = $this->actingAs($user)->get($verificationUrl);
  37. Event::assertDispatched(Verified::class);
  38. $this->assertTrue($user->fresh()->hasVerifiedEmail());
  39. $response->assertRedirect(config('filament.path').'?verified=1');
  40. }
  41. public function test_email_can_not_verified_with_invalid_hash(): void
  42. {
  43. if (! Features::enabled(Features::emailVerification())) {
  44. $this->markTestSkipped('Email verification not enabled.');
  45. return;
  46. }
  47. $user = User::factory()->unverified()->create();
  48. $verificationUrl = URL::temporarySignedRoute(
  49. 'verification.verify',
  50. now()->addMinutes(60),
  51. ['id' => $user->id, 'hash' => sha1('wrong-email')]
  52. );
  53. $this->actingAs($user)->get($verificationUrl);
  54. $this->assertFalse($user->fresh()->hasVerifiedEmail());
  55. }
  56. }