35 lines
1.2 KiB
Go
35 lines
1.2 KiB
Go
package logic
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
smsentity "spark-server/internal/module/sms/entity"
|
|
smsmodel "spark-server/internal/module/sms/model"
|
|
"spark-server/internal/pkg/errs"
|
|
)
|
|
|
|
func TestCheckAndConsumeInvalidUnified(t *testing.T) {
|
|
store := smsmodel.NewMemoryStore()
|
|
svc := NewService(store, nil, nil, nil)
|
|
ctx := t.Context()
|
|
email := "ada@example.com"
|
|
key := storeKey(smsentity.ChannelEmail, smsentity.PurposeLogin, email)
|
|
|
|
if err := svc.CheckAndConsume(ctx, smsentity.ChannelEmail, smsentity.PurposeLogin, email, "000000"); !errors.Is(err, errs.ErrVerifyCodeInvalid) {
|
|
t.Fatalf("missing: %v", err)
|
|
}
|
|
if err := store.Put(ctx, key, "123456", 60); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := svc.CheckAndConsume(ctx, smsentity.ChannelEmail, smsentity.PurposeLogin, email, "999999"); !errors.Is(err, errs.ErrVerifyCodeInvalid) {
|
|
t.Fatalf("wrong: %v", err)
|
|
}
|
|
if err := svc.CheckAndConsume(ctx, smsentity.ChannelEmail, smsentity.PurposeLogin, email, "123456"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := svc.CheckAndConsume(ctx, smsentity.ChannelEmail, smsentity.PurposeLogin, email, "123456"); !errors.Is(err, errs.ErrVerifyCodeInvalid) {
|
|
t.Fatalf("used: %v", err)
|
|
}
|
|
}
|