Add OAuthLoginCallback tests

This commit is contained in:
brufdev
2025-01-29 01:43:30 +00:00
parent 900ffef985
commit 2413c87cbf
+60
View File
@@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
use App\Actions\GetAvailableOAuthProviders;
use App\Enums\OAuthProviders;
use App\Livewire\Auth\OAuthLoginCallback;
use App\Models\User;
use Laravel\Socialite\Contracts\Provider;
use Laravel\Socialite\Facades\Socialite;
use Laravel\Socialite\Two\User as SocialiteUser;
use Livewire\Livewire;
it('successfully authenticates user', function (): void {
$user = User::factory()->create();
$abstractUser = Mockery::mock(SocialiteUser::class);
$abstractUser->shouldReceive('getId')
->andReturn(1234567890)
->shouldReceive('getName')
->andReturn($user->name)
->shouldReceive('getEmail')
->andReturn($user->email);
$provider = Mockery::mock(Provider::class);
$provider->shouldReceive('user')->andReturn($abstractUser);
Socialite::shouldReceive('driver')->with('github')->andReturn($provider);
$availableProviders = Mockery::mock(new GetAvailableOAuthProviders());
$availableProviders->shouldReceive('handle')->andReturn([OAuthProviders::GitHub]);
Livewire::test(OAuthLoginCallback::class, ['provider' => 'github'])
->assertRedirect(route('vaults.last'));
});
it('fails to authenticate user', function (): void {
$provider = Mockery::mock(Provider::class);
Socialite::shouldReceive('driver')->with('github')->andReturn($provider);
$availableProviders = Mockery::mock(new GetAvailableOAuthProviders());
$availableProviders->shouldReceive('handle')->andReturn([OAuthProviders::GitHub]);
Livewire::test(OAuthLoginCallback::class, ['provider' => 'github'])
->assertRedirect(route('login'));
});
it('fails to authenticate user without email', function (): void {
$user = User::factory()->create();
$abstractUser = Mockery::mock(SocialiteUser::class);
$abstractUser->shouldReceive('getId')
->andReturn(1234567890)
->shouldReceive('getName')
->andReturn($user->name)
->shouldReceive('getEmail')
->andReturn();
$provider = Mockery::mock(Provider::class);
$provider->shouldReceive('user')->andReturn($abstractUser);
Socialite::shouldReceive('driver')->with('github')->andReturn($provider);
$availableProviders = Mockery::mock(new GetAvailableOAuthProviders());
$availableProviders->shouldReceive('handle')->andReturn([OAuthProviders::GitHub]);
Livewire::test(OAuthLoginCallback::class, ['provider' => 'github'])
->assertRedirect(route('login'));
});