mirror of
				https://github.com/cp6/my-idlers.git
				synced 2025-10-31 14:29:09 +00:00 
			
		
		
		
	
		
			
	
	
		
			66 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace Tests\Feature\Auth; | ||
|  | 
 | ||
|  | use App\Models\User; | ||
|  | use App\Providers\RouteServiceProvider; | ||
|  | use Illuminate\Auth\Events\Verified; | ||
|  | use Illuminate\Foundation\Testing\RefreshDatabase; | ||
|  | use Illuminate\Support\Facades\Event; | ||
|  | use Illuminate\Support\Facades\URL; | ||
|  | use Tests\TestCase; | ||
|  | 
 | ||
|  | class EmailVerificationTest extends TestCase | ||
|  | { | ||
|  |     use RefreshDatabase; | ||
|  | 
 | ||
|  |     public function test_email_verification_screen_can_be_rendered() | ||
|  |     { | ||
|  |         $user = User::factory()->create([ | ||
|  |             'email_verified_at' => null, | ||
|  |         ]); | ||
|  | 
 | ||
|  |         $response = $this->actingAs($user)->get('/verify-email'); | ||
|  | 
 | ||
|  |         $response->assertStatus(200); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function test_email_can_be_verified() | ||
|  |     { | ||
|  |         $user = User::factory()->create([ | ||
|  |             'email_verified_at' => null, | ||
|  |         ]); | ||
|  | 
 | ||
|  |         Event::fake(); | ||
|  | 
 | ||
|  |         $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(RouteServiceProvider::HOME.'?verified=1'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function test_email_is_not_verified_with_invalid_hash() | ||
|  |     { | ||
|  |         $user = User::factory()->create([ | ||
|  |             'email_verified_at' => null, | ||
|  |         ]); | ||
|  | 
 | ||
|  |         $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()); | ||
|  |     } | ||
|  | } |