24 lines
630 B
Go
24 lines
630 B
Go
package smsstore
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestIssueAndConsume(t *testing.T) {
|
|
s := New(time.Minute, time.Second, "654321")
|
|
code, exp, retry, err := s.Issue(PurposeLogin, "13800138000")
|
|
if err != nil || code != "654321" || exp <= 0 || retry != 0 {
|
|
t.Fatalf("issue %q %d %d %v", code, exp, retry, err)
|
|
}
|
|
if err := s.Consume(PurposeLogin, "13800138000", "000000"); err == nil {
|
|
t.Fatal("bad code should fail")
|
|
}
|
|
if err := s.Consume(PurposeLogin, "13800138000", "654321"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := s.Consume(PurposeLogin, "13800138000", "654321"); err == nil {
|
|
t.Fatal("consumed twice")
|
|
}
|
|
}
|