All checks were successful
Server Check Build (NixCN CMS) TeamCity build finished
Signed-off-by: Asai Neko <sugar@sne.moe>
95 lines
2.6 KiB
Go
95 lines
2.6 KiB
Go
package email
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/spf13/viper"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func setupEmailViper(host, user, pass, security string, port int) {
|
|
viper.Reset()
|
|
viper.Set("email.host", host)
|
|
viper.Set("email.port", port)
|
|
viper.Set("email.username", user)
|
|
viper.Set("email.password", pass)
|
|
viper.Set("email.security", security)
|
|
viper.Set("email.insecure_skip_verify", false)
|
|
}
|
|
|
|
func TestNewSMTPClientMissingHost(t *testing.T) {
|
|
viper.Reset()
|
|
defer viper.Reset()
|
|
|
|
_, err := new(Client).NewSMTPClient()
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "SMTP config not set")
|
|
}
|
|
|
|
func TestNewSMTPClientMissingPassword(t *testing.T) {
|
|
setupEmailViper("smtp.example.com", "user@example.com", "", "plain", 587)
|
|
defer viper.Reset()
|
|
|
|
_, err := new(Client).NewSMTPClient()
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "SMTP basic auth requires email.password")
|
|
}
|
|
|
|
func TestNewSMTPClientUnknownSecurity(t *testing.T) {
|
|
setupEmailViper("smtp.example.com", "user@example.com", "pass", "tls13", 587)
|
|
defer viper.Reset()
|
|
|
|
_, err := new(Client).NewSMTPClient()
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "unknown smtp security mode")
|
|
}
|
|
|
|
func TestNewSMTPClientSSL(t *testing.T) {
|
|
setupEmailViper("smtp.example.com", "user@example.com", "pass", "ssl", 465)
|
|
defer viper.Reset()
|
|
|
|
c, err := new(Client).NewSMTPClient()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "ssl", c.security)
|
|
assert.True(t, c.dialer.SSL)
|
|
}
|
|
|
|
func TestNewSMTPClientStartTLS(t *testing.T) {
|
|
setupEmailViper("smtp.example.com", "user@example.com", "pass", "starttls", 587)
|
|
defer viper.Reset()
|
|
|
|
c, err := new(Client).NewSMTPClient()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "starttls", c.security)
|
|
assert.False(t, c.dialer.SSL)
|
|
assert.NotNil(t, c.dialer.TLSConfig)
|
|
}
|
|
|
|
func TestNewSMTPClientPlain(t *testing.T) {
|
|
setupEmailViper("smtp.example.com", "user@example.com", "pass", "plain", 25)
|
|
defer viper.Reset()
|
|
|
|
c, err := new(Client).NewSMTPClient()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "plain", c.security)
|
|
assert.False(t, c.dialer.SSL)
|
|
assert.Nil(t, c.dialer.TLSConfig)
|
|
}
|
|
|
|
func TestNewSMTPClientEmptySecurity(t *testing.T) {
|
|
setupEmailViper("smtp.example.com", "user@example.com", "pass", "", 25)
|
|
defer viper.Reset()
|
|
|
|
c, err := new(Client).NewSMTPClient()
|
|
require.NoError(t, err)
|
|
assert.Nil(t, c.dialer.TLSConfig)
|
|
}
|
|
|
|
func TestSendUninitializedDialer(t *testing.T) {
|
|
c := &Client{}
|
|
_, err := c.Send("from@test.com", "to@test.com", "subject", "<p>html</p>")
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "SMTP dialer not initialized")
|
|
}
|