Files
mailx/aliyun/aliyun_internal_test.go
2026-08-15 01:38:05 +08:00

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")
}
}