2019-04-24 21:52:08 +00:00
package validator
import (
"testing"
"github.com/stretchr/testify/assert"
2020-04-05 12:37:21 +00:00
"github.com/authelia/authelia/internal/configuration/schema"
2019-04-24 21:52:08 +00:00
)
func newDefaultSessionConfig ( ) schema . SessionConfiguration {
config := schema . SessionConfiguration { }
config . Secret = "a_secret"
config . Domain = "example.com"
return config
}
func TestShouldSetDefaultSessionName ( t * testing . T ) {
validator := schema . NewStructValidator ( )
config := newDefaultSessionConfig ( )
ValidateSession ( & config , validator )
assert . Len ( t , validator . Errors ( ) , 0 )
2020-04-05 12:37:21 +00:00
assert . Equal ( t , schema . DefaultSessionConfiguration . Name , config . Name )
}
func TestShouldSetDefaultSessionInactivity ( t * testing . T ) {
validator := schema . NewStructValidator ( )
config := newDefaultSessionConfig ( )
ValidateSession ( & config , validator )
assert . Len ( t , validator . Errors ( ) , 0 )
assert . Equal ( t , schema . DefaultSessionConfiguration . Inactivity , config . Inactivity )
}
func TestShouldSetDefaultSessionExpiration ( t * testing . T ) {
validator := schema . NewStructValidator ( )
config := newDefaultSessionConfig ( )
ValidateSession ( & config , validator )
assert . Len ( t , validator . Errors ( ) , 0 )
assert . Equal ( t , schema . DefaultSessionConfiguration . Expiration , config . Expiration )
2019-04-24 21:52:08 +00:00
}
2020-03-28 06:10:39 +00:00
func TestShouldRaiseErrorWhenRedisIsUsedAndPasswordNotSet ( t * testing . T ) {
2019-04-24 21:52:08 +00:00
validator := schema . NewStructValidator ( )
config := newDefaultSessionConfig ( )
config . Secret = ""
ValidateSession ( & config , validator )
2020-03-28 06:10:39 +00:00
assert . Len ( t , validator . Errors ( ) , 0 )
validator . Clear ( )
// Set redis config because password must be set only when redis is used.
config . Redis = & schema . RedisSessionConfiguration { }
ValidateSession ( & config , validator )
2019-04-24 21:52:08 +00:00
assert . Len ( t , validator . Errors ( ) , 1 )
assert . EqualError ( t , validator . Errors ( ) [ 0 ] , "Set secret of the session object" )
}
func TestShouldRaiseErrorWhenDomainNotSet ( t * testing . T ) {
validator := schema . NewStructValidator ( )
config := newDefaultSessionConfig ( )
config . Domain = ""
ValidateSession ( & config , validator )
assert . Len ( t , validator . Errors ( ) , 1 )
assert . EqualError ( t , validator . Errors ( ) [ 0 ] , "Set domain of the session object" )
}
2020-04-03 23:11:33 +00:00
func TestShouldRaiseErrorWhenBadInactivityAndExpirationSet ( t * testing . T ) {
validator := schema . NewStructValidator ( )
config := newDefaultSessionConfig ( )
2020-04-05 12:37:21 +00:00
config . Inactivity = "-1"
config . Expiration = "-1"
2020-04-03 23:11:33 +00:00
ValidateSession ( & config , validator )
assert . Len ( t , validator . Errors ( ) , 2 )
2020-04-05 12:37:21 +00:00
assert . EqualError ( t , validator . Errors ( ) [ 0 ] , "Error occurred parsing session expiration string: could not convert the input string of -1 into a duration" )
assert . EqualError ( t , validator . Errors ( ) [ 1 ] , "Error occurred parsing session inactivity string: could not convert the input string of -1 into a duration" )
2020-04-03 23:11:33 +00:00
}
func TestShouldRaiseErrorWhenBadRememberMeDurationSet ( t * testing . T ) {
validator := schema . NewStructValidator ( )
config := newDefaultSessionConfig ( )
config . RememberMeDuration = "1 year"
ValidateSession ( & config , validator )
assert . Len ( t , validator . Errors ( ) , 1 )
2020-04-05 12:37:21 +00:00
assert . EqualError ( t , validator . Errors ( ) [ 0 ] , "Error occurred parsing session remember_me_duration string: could not convert the input string of 1 year into a duration" )
2020-04-03 23:11:33 +00:00
}
func TestShouldSetDefaultRememberMeDuration ( t * testing . T ) {
validator := schema . NewStructValidator ( )
config := newDefaultSessionConfig ( )
ValidateSession ( & config , validator )
assert . Len ( t , validator . Errors ( ) , 0 )
assert . Equal ( t , config . RememberMeDuration , schema . DefaultSessionConfiguration . RememberMeDuration )
}