++ amministratori esenti dalla conferma email

Chi ha il ruolo amministratore non deve confermare l'indirizzo
(User::esenteDaConfermaEmail): non riceve l'email di conferma né alla
creazione né al cambio d'indirizzo, in Utenti compare "esente". Se perde
il ruolo torna a valere email_verified_at.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Francesco Picone
2026-10-19 12:19:29 +02:00
parent 2f42cf937c
commit ac787039c3
6 changed files with 91 additions and 9 deletions

View File

@@ -65,14 +65,59 @@ class ConfermaEmailTest extends TestCase
$this->actingAs($utente)->get(route('profile'))->assertOk();
}
public function test_un_amministratore_non_confermato_puo_configurare_la_posta(): void
public function test_un_amministratore_e_esente_dalla_conferma(): void
{
$admin = $this->utente('amministratore');
$this->actingAs($admin)->get(route('settings.edit'))->assertRedirect(route('verification.notice'));
$this->assertNull($admin->email_verified_at);
$this->assertTrue($admin->hasVerifiedEmail());
$this->actingAs($admin)->get(route('settings.edit'))->assertOk();
$this->actingAs($admin)->get(route('posta.edit'))->assertOk()->assertSee('Server di posta');
}
public function test_chi_perde_il_ruolo_di_amministratore_torna_a_dover_confermare(): void
{
$utente = $this->utente('amministratore');
$utente->syncRoles(['operatore']);
$this->assertFalse($utente->fresh()->hasVerifiedEmail());
$this->actingAs($utente->fresh())->get(route('dashboard'))->assertRedirect(route('verification.notice'));
}
public function test_all_amministratore_creato_non_parte_la_conferma(): void
{
Notification::fake();
$admin = $this->utente('amministratore');
Livewire::actingAs($admin)->test(UsersIndex::class)
->set('name', 'Luca Neri')
->set('email', 'luca@example.test')
->set('password', 'password-di-prova')
->set('password_confirmation', 'password-di-prova')
->set('selectedRole', 'amministratore')
->call('createUser')
->assertHasNoErrors();
$nuovo = User::where('email', 'luca@example.test')->sole();
$this->assertTrue($nuovo->hasVerifiedEmail());
Notification::assertNothingSentTo($nuovo);
}
public function test_l_amministratore_che_cambia_email_resta_dentro(): void
{
Notification::fake();
$admin = $this->utente('amministratore');
Livewire::actingAs($admin)->test(Profile::class)
->set('name', 'Mario Rossi')
->set('email', 'nuovo-admin@example.test')
->call('updateProfile')
->assertRedirect(route('profile'));
$this->assertTrue($admin->fresh()->hasVerifiedEmail());
Notification::assertNothingSentTo($admin->fresh());
}
public function test_il_link_conferma_anche_senza_essere_entrati(): void
{
$utente = $this->utente();