totp_test.go 806 B

1234567891011121314151617181920212223242526272829303132333435
  1. package fwh_pro
  2. import (
  3. "testing"
  4. "time"
  5. )
  6. func TestGenerateTOTP(t *testing.T) {
  7. // RFC 6238 Appendix B SHA-1 vectors, truncated to six digits.
  8. secret := "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ"
  9. tests := []struct {
  10. unix int64
  11. want string
  12. }{
  13. {59, "287082"},
  14. {1111111109, "081804"},
  15. {1111111111, "050471"},
  16. {1234567890, "005924"},
  17. {2000000000, "279037"},
  18. }
  19. for _, tt := range tests {
  20. got, err := generateTOTP(secret, time.Unix(tt.unix, 0))
  21. if err != nil || got != tt.want {
  22. t.Errorf("at %d: got %q, err %v; want %q", tt.unix, got, err, tt.want)
  23. }
  24. }
  25. }
  26. func TestGenerateTOTPInvalidSecret(t *testing.T) {
  27. for _, secret := range []string{"", "not-base32!"} {
  28. if _, err := generateTOTP(secret, time.Unix(59, 0)); err == nil {
  29. t.Errorf("expected error for %q", secret)
  30. }
  31. }
  32. }