|
- package model
-
- import (
- "testing"
-
- "github.com/go-webauthn/webauthn/protocol"
- webauthn "github.com/go-webauthn/webauthn/webauthn"
- "github.com/stretchr/testify/require"
- )
-
- func TestPasskeyCredentialTransportsRoundTripAndIgnoreMalformedJSON(t *testing.T) {
- credential := &PasskeyCredential{}
- credential.SetTransports([]protocol.AuthenticatorTransport{protocol.USB, protocol.Internal})
- require.Equal(t, []protocol.AuthenticatorTransport{protocol.USB, protocol.Internal}, credential.TransportList())
-
- credential.Transports = "not-json"
- require.Nil(t, credential.TransportList())
-
- credential.SetTransports(nil)
- require.Empty(t, credential.Transports)
- }
-
- func TestPasskeyCredentialConvertsWebAuthnFieldsWithoutLosingFlags(t *testing.T) {
- webCredential := &webauthn.Credential{
- ID: []byte("credential"), PublicKey: []byte("public-key"), AttestationType: "none",
- Transport: []protocol.AuthenticatorTransport{protocol.Internal},
- Flags: webauthn.CredentialFlags{UserPresent: true, UserVerified: true, BackupEligible: true},
- Authenticator: webauthn.Authenticator{AAGUID: []byte("aaguid"), SignCount: 8, Attachment: protocol.Platform},
- }
-
- stored := NewPasskeyCredentialFromWebAuthn(9, webCredential)
- require.NotNil(t, stored)
- require.Equal(t, 9, stored.UserID)
- require.True(t, stored.UserVerified)
- require.EqualValues(t, 8, stored.SignCount)
-
- roundTripped := stored.ToWebAuthnCredential()
- require.Equal(t, webCredential.ID, roundTripped.ID)
- require.Equal(t, webCredential.PublicKey, roundTripped.PublicKey)
- require.True(t, roundTripped.Flags.UserVerified)
- require.Equal(t, webCredential.Transport, roundTripped.Transport)
- }
|