create(); $this->actingAs($user); $svc = $this->mock(WebauthnService::class); $svc->shouldReceive('available')->andReturn(true); $svc->shouldReceive('verifyRegistration')->andReturnUsing(fn ($u, $r, $name) => WebauthnCredential::create([ 'user_id' => $u->id, 'name' => $name, 'credential_id' => 'cid', 'public_key' => '{}', 'sign_count' => 0, ])); Livewire::test(WebauthnKeys::class) ->set('newName', 'YubiKey 5C') ->call('register', ['fake' => 'attestation']) ->assertHasNoErrors(); $this->assertDatabaseHas('webauthn_credentials', ['user_id' => $user->id, 'name' => 'YubiKey 5C']); } public function test_options_validate_label_before_ceremony(): void { $user = User::factory()->create(); $this->actingAs($user); $this->mock(WebauthnService::class)->shouldReceive('available')->andReturn(true); Livewire::test(WebauthnKeys::class) ->set('newName', '') ->call('options') ->assertHasErrors('newName'); } public function test_remove_deletes_credential(): void { $user = User::factory()->create(); $this->actingAs($user); $cred = WebauthnCredential::create(['user_id' => $user->id, 'name' => 'k', 'credential_id' => 'cid', 'public_key' => '{}', 'sign_count' => 0]); $this->mock(WebauthnService::class)->shouldReceive('available')->andReturn(true); Livewire::test(WebauthnKeys::class)->call('remove', $cred->id); $this->assertDatabaseMissing('webauthn_credentials', ['id' => $cred->id]); } }