mirror of
				https://github.com/cp6/my-idlers.git
				synced 2025-11-03 15:49: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());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |