package fwh_pro import ( "testing" "time" ) func TestGenerateTOTP(t *testing.T) { // RFC 6238 Appendix B SHA-1 vectors, truncated to six digits. secret := "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ" tests := []struct { unix int64 want string }{ {59, "287082"}, {1111111109, "081804"}, {1111111111, "050471"}, {1234567890, "005924"}, {2000000000, "279037"}, } for _, tt := range tests { got, err := generateTOTP(secret, time.Unix(tt.unix, 0)) if err != nil || got != tt.want { t.Errorf("at %d: got %q, err %v; want %q", tt.unix, got, err, tt.want) } } } func TestGenerateTOTPInvalidSecret(t *testing.T) { for _, secret := range []string{"", "not-base32!"} { if _, err := generateTOTP(secret, time.Unix(59, 0)); err == nil { t.Errorf("expected error for %q", secret) } } }