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']); });