package app import ( "io" "log/slog" "testing" "time" "galaxy/mail/internal/config" "github.com/stretchr/testify/require" ) func TestNewProviderBuildsStubProvider(t *testing.T) { t.Parallel() provider, err := newProvider(config.SMTPConfig{ Mode: config.SMTPModeStub, }, bootstrapTestLogger()) require.NoError(t, err) require.NoError(t, provider.Close()) } func TestNewProviderBuildsSMTPProvider(t *testing.T) { t.Parallel() provider, err := newProvider(config.SMTPConfig{ Mode: config.SMTPModeSMTP, Addr: "127.0.0.1:2525", FromEmail: "noreply@example.com", Timeout: 15 * time.Second, }, bootstrapTestLogger()) require.NoError(t, err) require.NoError(t, provider.Close()) } func TestNewProviderRejectsInvalidSMTPAuthPair(t *testing.T) { t.Parallel() _, err := newProvider(config.SMTPConfig{ Mode: config.SMTPModeSMTP, Addr: "127.0.0.1:2525", Username: "mailer", FromEmail: "noreply@example.com", Timeout: 15 * time.Second, }, bootstrapTestLogger()) require.Error(t, err) require.Contains(t, err.Error(), "smtp username and password") } func bootstrapTestLogger() *slog.Logger { return slog.New(slog.NewJSONHandler(io.Discard, nil)) }