71 lines
2.8 KiB
PHP
71 lines
2.8 KiB
PHP
<?php
|
|
|
|
use App\Models\User;
|
|
use App\Notifications\NetGesconResetPasswordNotification;
|
|
use Filament\Facades\Filament;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use Illuminate\Support\Facades\Notification;
|
|
use Illuminate\Support\Facades\Password;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
beforeEach(function () {
|
|
Role::firstOrCreate(['name' => 'super-admin', 'guard_name' => 'web']);
|
|
Role::firstOrCreate(['name' => 'admin', 'guard_name' => 'web']);
|
|
});
|
|
|
|
test('it verifies mail service configuration defaults for netgescon', function () {
|
|
expect(config('mail.mailers.smtp.transport'))->toBe('smtp')
|
|
->and(config('mail.mailers.smtp.host'))->toBe('smtp.gmail.com')
|
|
->and(config('mail.from.address'))->toBe('michele@netgescon.it')
|
|
->and(config('mail.from.name'))->toBe('NetGescon');
|
|
});
|
|
|
|
test('it formats NetGescon password reset notification with Italian text and security links', function () {
|
|
$user = User::factory()->create([
|
|
'name' => 'Michele Test',
|
|
'email' => 'michele.test@netgescon.it',
|
|
]);
|
|
$user->assignRole('super-admin');
|
|
|
|
$notification = new NetGesconResetPasswordNotification('test-token-123');
|
|
$notification->url = 'http://192.168.0.205:8000/admin-filament/password-reset/reset?token=test-token-123';
|
|
|
|
$mail = $notification->toMail($user);
|
|
|
|
expect($mail->subject)->toBe('NetGescon - Reimpostazione della Password')
|
|
->and($mail->greeting)->toContain('Michele Test')
|
|
->and($mail->actionText)->toBe('Reimposta Password')
|
|
->and($mail->actionUrl)->toBe('http://192.168.0.205:8000/admin-filament/password-reset/reset?token=test-token-123')
|
|
->and(collect($mail->introLines)->join(' '))->toContain('NetGescon')
|
|
->and(collect($mail->outroLines)->join(' '))->toContain('60 minuti');
|
|
});
|
|
|
|
test('it sends password reset email via artisan command for registered user', function () {
|
|
Notification::fake();
|
|
|
|
$user = User::factory()->create([
|
|
'name' => 'Mario Rossi',
|
|
'email' => 'mario.rossi@netgescon.it',
|
|
]);
|
|
$user->assignRole('admin');
|
|
|
|
$exitCode = Artisan::call('netgescon:send-password-reset', ['email' => 'mario.rossi@netgescon.it']);
|
|
expect($exitCode)->toBe(0);
|
|
|
|
Notification::assertSentTo($user, NetGesconResetPasswordNotification::class);
|
|
});
|
|
|
|
test('it fails artisan command gracefully when user does not exist', function () {
|
|
$exitCode = Artisan::call('netgescon:send-password-reset', ['email' => 'nonexistent@netgescon.it']);
|
|
expect($exitCode)->toBe(1);
|
|
});
|
|
|
|
test('it mounts Filament password reset request page and profile page routes', function () {
|
|
$requestResponse = $this->get('/admin-filament/password-reset/request');
|
|
$requestResponse->assertStatus(200);
|
|
|
|
$profileRoute = route('filament.admin-filament.auth.profile');
|
|
expect($profileRoute)->toContain('/admin-filament/profile');
|
|
});
|