owpengram-server/internal/otpdelivery/smtp/sender_test.go
2026-07-20 09:42:26 +03:00

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