59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package aliyun
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
mailx "code.yun.ink/pkg/mailx"
|
|
)
|
|
|
|
var _ mailx.Sender = (*Aliyun)(nil)
|
|
|
|
func TestConfigDefaults(t *testing.T) {
|
|
a := New(Config{})
|
|
if a.cfg.Endpoint != "dm.aliyuncs.com" {
|
|
t.Errorf("default endpoint = %q, want dm.aliyuncs.com", a.cfg.Endpoint)
|
|
}
|
|
// 显式指定 Endpoint 时不应被覆盖
|
|
a = New(Config{Endpoint: "dm.eu-central-1.aliyuncs.com"})
|
|
if a.cfg.Endpoint != "dm.eu-central-1.aliyuncs.com" {
|
|
t.Errorf("explicit endpoint overwritten: %q", a.cfg.Endpoint)
|
|
}
|
|
}
|
|
|
|
func TestName(t *testing.T) {
|
|
if got := New(Config{}).Name(); got != "aliyun" {
|
|
t.Errorf("Name() = %q, want aliyun", got)
|
|
}
|
|
}
|
|
|
|
func TestMapSendStatus(t *testing.T) {
|
|
cases := []struct {
|
|
in int32
|
|
want mailx.EmailSendStatus
|
|
}{
|
|
{0, mailx.EmailSendStatusSuccess},
|
|
{2, mailx.EmailSendStatusInvalidAddress},
|
|
{3, mailx.EmailSendStatusSpam},
|
|
{4, mailx.EmailSendStatusFailed},
|
|
{9, mailx.EmailSendStatusUnknown},
|
|
}
|
|
for _, c := range cases {
|
|
if got := mapSendStatus(c.in); got != c.want {
|
|
t.Errorf("mapSendStatus(%d) = %v, want %v", c.in, got, c.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSendWithoutConfig(t *testing.T) {
|
|
// 缺少 AccountName 时应在发送前报错,而不是触发网络请求
|
|
a := New(Config{AccessKeyID: "ak", AccessKeySecret: "sk"})
|
|
err := a.Send(context.Background(), mailx.NewMessage().
|
|
To("a@b.com").
|
|
Subject("s").
|
|
Build())
|
|
if err == nil {
|
|
t.Fatal("Send without AccountName should error")
|
|
}
|
|
}
|