deb.open-vault/vault/login_mfa_test.go

65 lines
1.4 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package vault
import (
"strings"
"testing"
)
func TestParseFactors(t *testing.T) {
testcases := []struct {
name string
invalidMFAHeaderVal []string
expectedError string
}{
{
"two headers with passcode",
[]string{"passcode", "foo"},
"found multiple passcodes for the same MFA method",
},
{
"single header with passcode=",
[]string{"passcode="},
"invalid passcode",
},
{
"single invalid header",
[]string{"foo="},
"found an invalid MFA cred",
},
{
"single header equal char",
[]string{"=="},
"found an invalid MFA cred",
},
{
"two headers with passcode=",
[]string{"passcode=foo", "foo"},
"found multiple passcodes for the same MFA method",
},
{
"two headers invalid name",
[]string{"passcode=foo", "passcode=bar"},
"found multiple passcodes for the same MFA method",
},
{
"two headers, two invalid",
[]string{"foo", "bar"},
"found multiple passcodes for the same MFA method",
},
}
for _, tc := range testcases {
t.Run(tc.name, func(t *testing.T) {
_, err := parseMfaFactors(tc.invalidMFAHeaderVal)
if err == nil {
t.Fatal("nil error returned")
}
if !strings.Contains(err.Error(), tc.expectedError) {
t.Fatalf("expected %s, got %v", tc.expectedError, err)
}
})
}
}