feat: mail service

This commit is contained in:
Ilia Denisov
2026-04-17 18:39:16 +02:00
committed by GitHub
parent 23ffcb7535
commit 5b7593e6f6
183 changed files with 31215 additions and 248 deletions
+53
View File
@@ -0,0 +1,53 @@
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))
}