diff options
| author | James Elliott <james-d-elliott@users.noreply.github.com> | 2021-11-30 22:15:21 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-30 22:15:21 +1100 |
| commit | ab8f9b0697efe4987c76a3ca2d4758b35ac8f2ad (patch) | |
| tree | 2eebbb5b4fc46ab3302c117d355d8d333350e450 /internal/configuration/validator/notifier_test.go | |
| parent | 568f210b2b764ebc0a18295bdf0589b66e9291d9 (diff) | |
fix(notifier): force use of sender email in smtp from cmd (#2616)
This change addresses an issue with the usage of the full sender configuration option in the MAIL FROM SMTP command. If a user includes a name in the sender this shouldn't be sent in the MAIL FROM command, instead we should extract it and use just the email portion.
Fixes #2571
Diffstat (limited to 'internal/configuration/validator/notifier_test.go')
| -rw-r--r-- | internal/configuration/validator/notifier_test.go | 63 |
1 files changed, 47 insertions, 16 deletions
diff --git a/internal/configuration/validator/notifier_test.go b/internal/configuration/validator/notifier_test.go index 0a48aa947..1af7219a8 100644 --- a/internal/configuration/validator/notifier_test.go +++ b/internal/configuration/validator/notifier_test.go @@ -2,6 +2,7 @@ package validator import ( "fmt" + "net/mail" "testing" "github.com/stretchr/testify/suite" @@ -20,12 +21,16 @@ func (suite *NotifierSuite) SetupTest() { suite.configuration.SMTP = &schema.SMTPNotifierConfiguration{ Username: "john", Password: "password", - Sender: "admin@example.com", + Sender: mail.Address{Name: "Authelia", Address: "authelia@example.com"}, Host: "example.com", Port: 25, } + suite.configuration.FileSystem = nil } +/* + Common Tests. +*/ func (suite *NotifierSuite) TestShouldEnsureAtLeastSMTPOrFilesystemIsProvided() { ValidateNotifier(&suite.configuration, suite.validator) @@ -63,29 +68,37 @@ func (suite *NotifierSuite) TestShouldEnsureEitherSMTPOrFilesystemIsProvided() { suite.Assert().EqualError(suite.validator.Errors()[0], errFmtNotifierMultipleConfigured) } -func (suite *NotifierSuite) TestShouldEnsureFilenameOfFilesystemNotifierIsProvided() { - suite.configuration.SMTP = nil - suite.configuration.FileSystem = &schema.FileSystemNotifierConfiguration{ - Filename: "test", - } +/* + SMTP Tests. +*/ +func (suite *NotifierSuite) TestSMTPShouldSetTLSDefaults() { ValidateNotifier(&suite.configuration, suite.validator) suite.Assert().False(suite.validator.HasWarnings()) suite.Assert().False(suite.validator.HasErrors()) - suite.configuration.FileSystem.Filename = "" + suite.Assert().Equal("example.com", suite.configuration.SMTP.TLS.ServerName) + suite.Assert().Equal("TLS1.2", suite.configuration.SMTP.TLS.MinimumVersion) + suite.Assert().False(suite.configuration.SMTP.TLS.SkipVerify) +} + +func (suite *NotifierSuite) TestSMTPShouldDefaultTLSServerNameToHost() { + suite.configuration.SMTP.Host = "google.com" + suite.configuration.SMTP.TLS = &schema.TLSConfig{ + MinimumVersion: "TLS1.1", + } ValidateNotifier(&suite.configuration, suite.validator) suite.Assert().False(suite.validator.HasWarnings()) - suite.Require().True(suite.validator.HasErrors()) - - suite.Assert().Len(suite.validator.Errors(), 1) + suite.Assert().False(suite.validator.HasErrors()) - suite.Assert().EqualError(suite.validator.Errors()[0], errFmtNotifierFileSystemFileNameNotConfigured) + suite.Assert().Equal("google.com", suite.configuration.SMTP.TLS.ServerName) + suite.Assert().Equal("TLS1.1", suite.configuration.SMTP.TLS.MinimumVersion) + suite.Assert().False(suite.configuration.SMTP.TLS.SkipVerify) } -func (suite *NotifierSuite) TestShouldEnsureHostAndPortOfSMTPNotifierAreProvided() { +func (suite *NotifierSuite) TestSMTPShouldEnsureHostAndPortAreProvided() { suite.configuration.FileSystem = nil ValidateNotifier(&suite.configuration, suite.validator) @@ -108,15 +121,33 @@ func (suite *NotifierSuite) TestShouldEnsureHostAndPortOfSMTPNotifierAreProvided suite.Assert().EqualError(errors[1], fmt.Sprintf(errFmtNotifierSMTPNotConfigured, "port")) } -func (suite *NotifierSuite) TestShouldEnsureSenderOfSMTPNotifierAreProvided() { - suite.configuration.FileSystem = nil +func (suite *NotifierSuite) TestSMTPShouldEnsureSenderIsProvided() { + suite.configuration.SMTP.Sender = mail.Address{} + + ValidateNotifier(&suite.configuration, suite.validator) + + suite.Assert().False(suite.validator.HasWarnings()) + suite.Require().True(suite.validator.HasErrors()) + + suite.Assert().Len(suite.validator.Errors(), 1) + + suite.Assert().EqualError(suite.validator.Errors()[0], fmt.Sprintf(errFmtNotifierSMTPNotConfigured, "sender")) +} +/* + File Tests. +*/ +func (suite *NotifierSuite) TestFileShouldEnsureFilenameIsProvided() { + suite.configuration.SMTP = nil + suite.configuration.FileSystem = &schema.FileSystemNotifierConfiguration{ + Filename: "test", + } ValidateNotifier(&suite.configuration, suite.validator) suite.Assert().False(suite.validator.HasWarnings()) suite.Assert().False(suite.validator.HasErrors()) - suite.configuration.SMTP.Sender = "" + suite.configuration.FileSystem.Filename = "" ValidateNotifier(&suite.configuration, suite.validator) @@ -125,7 +156,7 @@ func (suite *NotifierSuite) TestShouldEnsureSenderOfSMTPNotifierAreProvided() { suite.Assert().Len(suite.validator.Errors(), 1) - suite.Assert().EqualError(suite.validator.Errors()[0], fmt.Sprintf(errFmtNotifierSMTPNotConfigured, "sender")) + suite.Assert().EqualError(suite.validator.Errors()[0], errFmtNotifierFileSystemFileNameNotConfigured) } func TestNotifierSuite(t *testing.T) { |
