mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
cc4f47f21c
This removes the deprecated options from 4.25. This includes the LDAP filters which allow {0} or {1} placeholders. The new aliases are documented. Additionally it refactors the keys validator to use uniform messages for most replaced keys.
133 lines
3.9 KiB
Go
133 lines
3.9 KiB
Go
package validator
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/suite"
|
|
|
|
"github.com/authelia/authelia/internal/configuration/schema"
|
|
)
|
|
|
|
type NotifierSuite struct {
|
|
suite.Suite
|
|
configuration schema.NotifierConfiguration
|
|
validator *schema.StructValidator
|
|
}
|
|
|
|
func (suite *NotifierSuite) SetupTest() {
|
|
suite.validator = schema.NewStructValidator()
|
|
suite.configuration.SMTP = &schema.SMTPNotifierConfiguration{
|
|
Username: "john",
|
|
Password: "password",
|
|
Sender: "admin@example.com",
|
|
Host: "example.com",
|
|
Port: 25,
|
|
}
|
|
}
|
|
|
|
func (suite *NotifierSuite) TestShouldEnsureAtLeastSMTPOrFilesystemIsProvided() {
|
|
ValidateNotifier(&suite.configuration, suite.validator)
|
|
|
|
suite.Assert().False(suite.validator.HasWarnings())
|
|
suite.Assert().False(suite.validator.HasErrors())
|
|
|
|
suite.configuration.SMTP = nil
|
|
|
|
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], "Notifier should be either `smtp` or `filesystem`")
|
|
}
|
|
|
|
func (suite *NotifierSuite) TestShouldEnsureEitherSMTPOrFilesystemIsProvided() {
|
|
ValidateNotifier(&suite.configuration, suite.validator)
|
|
|
|
suite.Assert().False(suite.validator.HasErrors())
|
|
|
|
suite.configuration.FileSystem = &schema.FileSystemNotifierConfiguration{
|
|
Filename: "test",
|
|
}
|
|
|
|
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], "Notifier should be either `smtp` or `filesystem`")
|
|
}
|
|
|
|
func (suite *NotifierSuite) TestShouldEnsureFilenameOfFilesystemNotifierIsProvided() {
|
|
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.FileSystem.Filename = ""
|
|
|
|
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], "Filename of filesystem notifier must not be empty")
|
|
}
|
|
|
|
func (suite *NotifierSuite) TestShouldEnsureHostAndPortOfSMTPNotifierAreProvided() {
|
|
suite.configuration.FileSystem = nil
|
|
ValidateNotifier(&suite.configuration, suite.validator)
|
|
|
|
suite.Assert().False(suite.validator.HasWarnings())
|
|
suite.Assert().False(suite.validator.HasErrors())
|
|
|
|
suite.configuration.SMTP.Host = ""
|
|
suite.configuration.SMTP.Port = 0
|
|
|
|
ValidateNotifier(&suite.configuration, suite.validator)
|
|
|
|
suite.Assert().False(suite.validator.HasWarnings())
|
|
suite.Assert().True(suite.validator.HasErrors())
|
|
|
|
errors := suite.validator.Errors()
|
|
|
|
suite.Require().Len(errors, 2)
|
|
|
|
suite.Assert().EqualError(errors[0], "Host of SMTP notifier must be provided")
|
|
suite.Assert().EqualError(errors[1], "Port of SMTP notifier must be provided")
|
|
}
|
|
|
|
func (suite *NotifierSuite) TestShouldEnsureSenderOfSMTPNotifierAreProvided() {
|
|
suite.configuration.FileSystem = nil
|
|
|
|
ValidateNotifier(&suite.configuration, suite.validator)
|
|
|
|
suite.Assert().False(suite.validator.HasWarnings())
|
|
suite.Assert().False(suite.validator.HasErrors())
|
|
|
|
suite.configuration.SMTP.Sender = ""
|
|
|
|
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], "Sender of SMTP notifier must be provided")
|
|
}
|
|
|
|
func TestNotifierSuite(t *testing.T) {
|
|
suite.Run(t, new(NotifierSuite))
|
|
}
|