package domain import ( "testing" "github.com/stretchr/testify/assert" ) func TestMFAType_UserAuthMethodType(t *testing.T) { tests := []struct { name string m MFAType want UserAuthMethodType }{ { name: "totp", m: MFATypeTOTP, want: UserAuthMethodTypeTOTP, }, { name: "u2f", m: MFATypeU2F, want: UserAuthMethodTypeU2F, }, { name: "passwordless", m: MFATypeU2FUserVerification, want: UserAuthMethodTypePasswordless, }, { name: "otp sms", m: MFATypeOTPSMS, want: UserAuthMethodTypeOTPSMS, }, { name: "otp email", m: MFATypeOTPEmail, want: UserAuthMethodTypeOTPEmail, }, { name: "unspecified", m: 99, want: UserAuthMethodTypeUnspecified, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := tt.m.UserAuthMethodType() assert.Equal(t, tt.want, got) }) } } func TestAuthRequest_UserAuthMethodTypes(t *testing.T) { type fields struct { PasswordVerified bool MFAsVerified []MFAType } tests := []struct { name string fields fields want []UserAuthMethodType }{ { name: "no auth methods", fields: fields{ PasswordVerified: false, MFAsVerified: nil, }, want: []UserAuthMethodType{}, }, { name: "only password", fields: fields{ PasswordVerified: true, MFAsVerified: nil, }, want: []UserAuthMethodType{ UserAuthMethodTypePassword, }, }, { name: "password, with mfa", fields: fields{ PasswordVerified: true, MFAsVerified: []MFAType{ MFATypeTOTP, MFATypeU2F, }, }, want: []UserAuthMethodType{ UserAuthMethodTypePassword, UserAuthMethodTypeTOTP, UserAuthMethodTypeU2F, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { a := &AuthRequest{ PasswordVerified: tt.fields.PasswordVerified, MFAsVerified: tt.fields.MFAsVerified, } got := a.UserAuthMethodTypes() assert.Equal(t, tt.want, got) }) } }