91 lines
2.9 KiB
PHP
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']);
|
|
});
|