44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package sms
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
type stubProvider struct{ called bool }
|
|
|
|
func (p *stubProvider) Send(context.Context, Config, Message) (Result, error) {
|
|
p.called = true
|
|
return Result{Code: 0, Message: "ok"}, nil
|
|
}
|
|
|
|
func TestRegistrySend(t *testing.T) {
|
|
provider := &stubProvider{}
|
|
registry := NewRegistry()
|
|
registry.Register(ServiceAliyun, provider)
|
|
config := Config{
|
|
ServiceType: ServiceAliyun, AccessKeyID: "id", AccessKeySecret: "secret",
|
|
SignName: "sign", TemplateID: "template",
|
|
}
|
|
result, err := registry.Send(context.Background(), config, Message{PhoneNumber: "13800008000"})
|
|
if err != nil || result.Code != 0 || !provider.called {
|
|
t.Fatalf("result=%+v err=%v called=%v", result, err, provider.called)
|
|
}
|
|
}
|
|
|
|
func TestRegistryValidatesBeforeProvider(t *testing.T) {
|
|
registry := NewRegistry()
|
|
_, err := registry.Send(context.Background(), Config{ServiceType: ServiceTencent}, Message{})
|
|
if !errors.Is(err, ErrInvalidRequest) {
|
|
t.Fatalf("err = %v, want ErrInvalidRequest", err)
|
|
}
|
|
}
|
|
|
|
func TestSplitAndTrim(t *testing.T) {
|
|
got := SplitAndTrim(" 13800008000, ,13900009000 ", ",")
|
|
if len(got) != 2 || got[0] != "13800008000" || got[1] != "13900009000" {
|
|
t.Fatalf("unexpected split result: %#v", got)
|
|
}
|
|
}
|