30 lines
688 B
Go
30 lines
688 B
Go
package auth
|
|
|
|
import "testing"
|
|
import "time"
|
|
|
|
func TestTOTPCodeRFC6238(t *testing.T) {
|
|
var secret string
|
|
var code string
|
|
secret = "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ"
|
|
code = totpCode(secret, time.Unix(59, 0).Unix()/TOTPPeriod)
|
|
if code != "287082" {
|
|
t.Fatalf("unexpected TOTP code: %s", code)
|
|
}
|
|
}
|
|
|
|
func TestValidateTOTP(t *testing.T) {
|
|
var secret string
|
|
var now time.Time
|
|
var code string
|
|
secret = "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ"
|
|
now = time.Unix(59, 0)
|
|
code = totpCode(secret, now.Unix()/TOTPPeriod)
|
|
if !ValidateTOTP(code, secret, now) {
|
|
t.Fatalf("expected TOTP code to validate")
|
|
}
|
|
if ValidateTOTP("000000", secret, now) {
|
|
t.Fatalf("unexpected TOTP validation")
|
|
}
|
|
}
|