Certified/tests/Feature/Verify/CheckCertificateTest.php
2026-08-04 10:18:10 +02:00

91 lines
2.9 KiB
PHP

<?php
use App\Models\Certificate;
use App\Models\User;
test('the verify page is publicly accessible', function () {
$this->get(route('verify.show'))
->assertOk()
->assertSee(__('Verify a certificate'));
});
test('a matching certificate number and last name is reported valid', function () {
Certificate::factory()->for(User::factory())->create([
'certificate_number' => 'CERT-1234-ABCD',
'holder_last_name' => 'Jansen',
'expires_at' => now()->addYear(),
]);
$this->post(route('verify.check'), [
'certificate_number' => 'cert-1234-abcd',
'holder_last_name' => 'jansen',
])->assertRedirect(route('verify.show'));
$this->get(route('verify.show'))
->assertSee(__('Valid'));
});
test('a mismatched last name is reported invalid', function () {
Certificate::factory()->for(User::factory())->create([
'certificate_number' => 'CERT-1234-ABCD',
'holder_last_name' => 'Jansen',
'expires_at' => now()->addYear(),
]);
$this->post(route('verify.check'), [
'certificate_number' => 'CERT-1234-ABCD',
'holder_last_name' => 'Bakker',
])->assertRedirect(route('verify.show'));
$this->get(route('verify.show'))
->assertSee(__('Invalid'));
});
test('an unknown certificate number is reported invalid', function () {
$this->post(route('verify.check'), [
'certificate_number' => 'DOES-NOT-EXIST',
'holder_last_name' => 'Bakker',
])->assertRedirect(route('verify.show'));
$this->get(route('verify.show'))
->assertSee(__('Invalid'));
});
test('an expired certificate is reported invalid', function () {
Certificate::factory()->for(User::factory())->create([
'certificate_number' => 'CERT-1234-ABCD',
'holder_last_name' => 'Jansen',
'expires_at' => now()->subDay(),
]);
$this->post(route('verify.check'), [
'certificate_number' => 'CERT-1234-ABCD',
'holder_last_name' => 'Jansen',
])->assertRedirect(route('verify.show'));
$this->get(route('verify.show'))
->assertSee(__('Invalid'));
});
test('certificates belonging to any account can be verified, not just the authenticated user\'s own', function () {
Certificate::factory()->for(User::factory())->create([
'certificate_number' => 'CERT-1234-ABCD',
'holder_last_name' => 'Jansen',
'expires_at' => now()->addYear(),
]);
$this->actingAs(User::factory()->create());
$this->post(route('verify.check'), [
'certificate_number' => 'CERT-1234-ABCD',
'holder_last_name' => 'Jansen',
])->assertRedirect(route('verify.show'));
$this->get(route('verify.show'))
->assertSee(__('Valid'));
});
test('certificate number and last name are required', function () {
$this->post(route('verify.check'), [])
->assertSessionHasErrors(['certificate_number', 'holder_last_name']);
});