photoprism/pkg/rnd/auth_key_test.go

54 lines
1.3 KiB
Go

package rnd
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/pquerna/otp"
)
func TestAuthKey(t *testing.T) {
t.Run("Success", func(t *testing.T) {
issuer := "Foo"
accountName := "Bar Baz"
result, err := AuthKey(issuer, accountName)
assert.NoError(t, err)
assert.NotNil(t, result)
// Example String URL:
// otpauth://totp/Foo:Bar%20Baz?algorithm=SHA1&digits=6&issuer=Foo&period=30&secret=25I6JAIZRNSOPN2WMADP6HX5GTCYTF36
assert.Len(t, result.String(), 113)
assert.Equal(t, issuer, result.Issuer())
assert.Equal(t, accountName, result.AccountName())
assert.Equal(t, "SHA1", result.Algorithm().String())
assert.Equal(t, otp.Digits(6), result.Digits())
assert.Equal(t, uint64(30), result.Period())
})
t.Run("EmptyIssuer", func(t *testing.T) {
issuer := ""
accountName := "Bar Baz"
result, err := AuthKey(issuer, accountName)
assert.Error(t, err)
assert.Nil(t, result)
})
t.Run("EmptyAccountName", func(t *testing.T) {
issuer := "foo"
accountName := ""
result, err := AuthKey(issuer, accountName)
assert.Error(t, err)
assert.Nil(t, result)
})
}
func TestRecoveryCode(t *testing.T) {
t.Run("Success", func(t *testing.T) {
result := RecoveryCode()
t.Logf("Recovery Code: %s", result)
assert.Len(t, result, 12)
})
}