This commit is contained in:
+88
@@ -0,0 +1,88 @@
|
||||
package metadata
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestValidateStatusReports(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
reports []StatusReport
|
||||
desired []AuthenticatorStatus
|
||||
undesired []AuthenticatorStatus
|
||||
err string
|
||||
}{
|
||||
{
|
||||
name: "ShouldReturnNilForEmptyDesiredAndUndesired",
|
||||
reports: []StatusReport{{Status: FidoCertified}},
|
||||
desired: nil,
|
||||
undesired: nil,
|
||||
},
|
||||
{
|
||||
name: "ShouldReturnNilForEmptyDesiredAndEmptyReports",
|
||||
reports: nil,
|
||||
desired: nil,
|
||||
undesired: []AuthenticatorStatus{Revoked},
|
||||
},
|
||||
{
|
||||
name: "ShouldReturnNilWhenAllDesiredPresent",
|
||||
reports: []StatusReport{{Status: FidoCertified}, {Status: FidoCertifiedL1}},
|
||||
desired: []AuthenticatorStatus{FidoCertified},
|
||||
},
|
||||
{
|
||||
name: "ShouldReturnNilWhenNoUndesiredPresent",
|
||||
reports: []StatusReport{{Status: FidoCertified}},
|
||||
desired: []AuthenticatorStatus{FidoCertified},
|
||||
undesired: []AuthenticatorStatus{Revoked},
|
||||
},
|
||||
{
|
||||
name: "ShouldFailWhenUndesiredPresent",
|
||||
reports: []StatusReport{{Status: Revoked}},
|
||||
desired: nil,
|
||||
undesired: []AuthenticatorStatus{Revoked},
|
||||
err: "The following undesired status reports were present: REVOKED",
|
||||
},
|
||||
{
|
||||
name: "ShouldFailWhenDesiredAbsent",
|
||||
reports: []StatusReport{{Status: NotFidoCertified}},
|
||||
desired: []AuthenticatorStatus{FidoCertified},
|
||||
err: "The following desired status reports were absent: FIDO_CERTIFIED",
|
||||
},
|
||||
{
|
||||
name: "ShouldFailWhenBothUndesiredPresentAndDesiredAbsent",
|
||||
reports: []StatusReport{{Status: Revoked}},
|
||||
desired: []AuthenticatorStatus{FidoCertified},
|
||||
undesired: []AuthenticatorStatus{Revoked},
|
||||
err: "The following undesired status reports were present: REVOKED; the following desired status reports were absent: FIDO_CERTIFIED",
|
||||
},
|
||||
{
|
||||
name: "ShouldReturnNilWithMultipleDesiredAllPresent",
|
||||
reports: []StatusReport{{Status: FidoCertified}, {Status: FidoCertifiedL1}},
|
||||
desired: []AuthenticatorStatus{FidoCertified, FidoCertifiedL1},
|
||||
undesired: []AuthenticatorStatus{Revoked},
|
||||
},
|
||||
{
|
||||
name: "ShouldFailWithMultipleUndesiredPresent",
|
||||
reports: []StatusReport{{Status: Revoked}, {Status: AttestationKeyCompromise}},
|
||||
desired: nil,
|
||||
undesired: []AuthenticatorStatus{Revoked, AttestationKeyCompromise},
|
||||
err: "The following undesired status reports were present: REVOKED, ATTESTATION_KEY_COMPROMISE",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
err := ValidateStatusReports(tc.reports, tc.desired, tc.undesired)
|
||||
|
||||
if tc.err != "" {
|
||||
require.Error(t, err)
|
||||
assert.EqualError(t, err, tc.err)
|
||||
} else {
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user