refactor(10.2-01): nest framework packages under modules
- Move remaining beach packages and embedded admin assets\n- Rewrite framework, example, build, and gate paths
This commit is contained in:
65
modules/postcard/smtp_test.go
Normal file
65
modules/postcard/smtp_test.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package postcard
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestSMTPTLSPolicy(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
for _, tls := range []string{"", "mandatory", "tls", "none", "notls", "starttls", "opportunistic"} {
|
||||
_, err := NewSMTPDriver(SMTPConfig{Host: "127.0.0.1", Port: 1025, TLS: tls, Timeout: time.Second})
|
||||
if err != nil {
|
||||
t.Fatalf("tls %q: %v", tls, err)
|
||||
}
|
||||
}
|
||||
|
||||
_, err := NewSMTPDriver(SMTPConfig{Host: "127.0.0.1", TLS: "maybe"})
|
||||
if err == nil || !strings.Contains(err.Error(), "mail.smtp.tls") {
|
||||
t.Fatalf("unknown tls error = %v", err)
|
||||
}
|
||||
_, err = NewSMTPDriver(SMTPConfig{TLS: "none"})
|
||||
if err == nil || !strings.Contains(err.Error(), "mail.smtp.host") {
|
||||
t.Fatalf("empty host error = %v", err)
|
||||
}
|
||||
_, err = NewSMTPDriver(SMTPConfig{Host: " ", TLS: "mandatory"})
|
||||
if err == nil || !strings.Contains(err.Error(), "mail.smtp.host") {
|
||||
t.Fatalf("blank host error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSMTPErrorsOmitCredentialsAndBodies(t *testing.T) {
|
||||
cat := smokeCatalog(t)
|
||||
d, err := NewSMTPDriver(SMTPConfig{
|
||||
Host: "127.0.0.1",
|
||||
Port: 1,
|
||||
Username: "user",
|
||||
Password: "secretpass",
|
||||
TLS: "none",
|
||||
Timeout: 80 * time.Millisecond,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
mail := NewMailer(cat, d, Options{From: "from@example.test"})
|
||||
err = mail.Send(context.Background(), Message{
|
||||
Template: "golem15.hello::mail.hello",
|
||||
To: []string{"ada@example.test"},
|
||||
Vars: map[string]any{"Name": "Ada", "URL": "https://example.test"},
|
||||
})
|
||||
if err == nil {
|
||||
t.Fatal("expected smtp failure")
|
||||
}
|
||||
msg := err.Error()
|
||||
if !strings.Contains(msg, "smtp") {
|
||||
t.Fatalf("error %q should mention smtp", msg)
|
||||
}
|
||||
for _, leaked := range []string{"secretpass", "Witaj **Ada**.", "text body"} {
|
||||
if strings.Contains(msg, leaked) {
|
||||
t.Fatalf("smtp error leaked %q: %v", leaked, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user