58 lines
2.1 KiB
Go
58 lines
2.1 KiB
Go
package smtp
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"telesrv/internal/otpdelivery"
|
|
)
|
|
|
|
func TestSenderRejectsNonEmailChannelBeforeDial(t *testing.T) {
|
|
sender := New(Config{Host: "smtp.example.test", Port: 25, From: "noreply@example.test"})
|
|
_, err := sender.Deliver(context.Background(), otpdelivery.Request{
|
|
DeliveryID: "otp_sms",
|
|
Purpose: otpdelivery.PurposeLoginSMS,
|
|
Channel: otpdelivery.ChannelSMS,
|
|
Recipient: "15550001001",
|
|
Code: "12345",
|
|
ExpiresAt: time.Now().Add(time.Minute),
|
|
})
|
|
if err == nil || !strings.Contains(err.Error(), "cannot deliver") {
|
|
t.Fatalf("err = %v", err)
|
|
}
|
|
}
|
|
|
|
func TestHumanTTLRoundsNetworkSkew(t *testing.T) {
|
|
if got := humanTTL(5*time.Minute - 200*time.Millisecond); got != "5 minutes" {
|
|
t.Fatalf("humanTTL = %q", got)
|
|
}
|
|
}
|
|
|
|
// TestEmailContentUsesConfiguredAppName asserts the login-code email is
|
|
// branded with the operator's configured product name, not the package's
|
|
// internal "telesrv" fallback — the subject/body previously always said
|
|
// "Your telesrv login code" regardless of Config.AppName.
|
|
func TestEmailContentUsesConfiguredAppName(t *testing.T) {
|
|
subject, body := emailContent("OwpenGram", "12345", 5*time.Minute)
|
|
if subject != "Your OwpenGram login code" {
|
|
t.Fatalf("subject = %q, want %q", subject, "Your OwpenGram login code")
|
|
}
|
|
if !strings.Contains(body, "Your OwpenGram login code is 12345.") {
|
|
t.Fatalf("body missing branded code line: %q", body)
|
|
}
|
|
if strings.Contains(subject, "telesrv") || strings.Contains(body, "telesrv") {
|
|
t.Fatalf("email still mentions telesrv instead of the configured app name:\nsubject=%q\nbody=%q", subject, body)
|
|
}
|
|
}
|
|
|
|
// TestNewDefaultsAppNameToTelesrvWhenUnset asserts the package's own
|
|
// self-contained fallback (used only if a caller forgets to pass AppName)
|
|
// still works, mirroring FromName/TLSMode/Timeout's existing defaulting.
|
|
func TestNewDefaultsAppNameToTelesrvWhenUnset(t *testing.T) {
|
|
sender := New(Config{Host: "smtp.example.test", Port: 25, From: "noreply@example.test"})
|
|
if sender.cfg.AppName != "telesrv" {
|
|
t.Fatalf("cfg.AppName = %q, want default %q", sender.cfg.AppName, "telesrv")
|
|
}
|
|
}
|