feat: mail service
This commit is contained in:
@@ -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))
|
||||
}
|
||||
Reference in New Issue
Block a user