diff options
| author | James Elliott <james-d-elliott@users.noreply.github.com> | 2020-04-04 10:11:33 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-04 10:11:33 +1100 |
| commit | 626f5d29492cf7ece02fae393c50d924df32f280 (patch) | |
| tree | 63ae3b582aa24e6a01bf9cf33313475c6818fafd /internal/configuration/validator/session_test.go | |
| parent | 4fcaff7c4b79e946c4662d6794bfb1e8ac9a4097 (diff) | |
[FEATURE] Remember Me Configuration (#813)
* [FEATURE] Remember Me Configuration
* allow users to specify the duration of remember me using remember_me_duration in session config
* setting the duration to 0 disables remember me
* only render the remember me element if remember me is enabled
* prevent malicious users from faking remember me functionality in the backend
* add string to duration helper called ParseDurationString to parse a string into a duration
* added tests to the helper function
* use the SessionProvider to store the time.Duration instead of parsing it over and over again
* add sec doc, adjust month/min, consistency
* renamed internal/utils/constants.go to internal/utils/const.go to be consistent
* added security measure docs
* adjusted default remember me duration to be 1 month instead of 1 year
* utilize default remember me duration in the autheliaCtx mock
* adjust order of keys in session configuration examples
* add notes on session security measures secret only being redis
* add TODO items for duration notation for both Expiration and Inactivity (will be removed soon)
* fix error text for Inactivity in the validator
* add session validator tests
* deref check bodyJSON.KeepMeLoggedIn and derive the value based on conf and user input and store it (DRY)
* remove unnecessary regex for the simplified ParseDurationString utility
* ParseDurationString only accepts decimals without leading zeros now
* comprehensively test all unit types
* remove unnecessary type unions in web
* add test to check sanity of time duration consts, this is just so they can't be accidentally changed
* simplify deref check and assignment
* fix reset password padding/margins
* adjust some doc wording
* adjust the handler configuration suite test
* actually run the handler configuration suite test (whoops)
* reduce the number of regex's used by ParseDurationString to 1, thanks to Clement
* adjust some error wording
Diffstat (limited to 'internal/configuration/validator/session_test.go')
| -rw-r--r-- | internal/configuration/validator/session_test.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/internal/configuration/validator/session_test.go b/internal/configuration/validator/session_test.go index 29a2b1eba..77f1ddddd 100644 --- a/internal/configuration/validator/session_test.go +++ b/internal/configuration/validator/session_test.go @@ -53,3 +53,37 @@ func TestShouldRaiseErrorWhenDomainNotSet(t *testing.T) { assert.Len(t, validator.Errors(), 1) assert.EqualError(t, validator.Errors()[0], "Set domain of the session object") } + +func TestShouldRaiseErrorWhenBadInactivityAndExpirationSet(t *testing.T) { + validator := schema.NewStructValidator() + config := newDefaultSessionConfig() + config.Inactivity = -1 + config.Expiration = -1 + + ValidateSession(&config, validator) + + assert.Len(t, validator.Errors(), 2) + assert.EqualError(t, validator.Errors()[0], "Set expiration of the session above 0") + assert.EqualError(t, validator.Errors()[1], "Set inactivity of the session to 0 or above") +} + +func TestShouldRaiseErrorWhenBadRememberMeDurationSet(t *testing.T) { + validator := schema.NewStructValidator() + config := newDefaultSessionConfig() + config.RememberMeDuration = "1 year" + + ValidateSession(&config, validator) + + assert.Len(t, validator.Errors(), 1) + assert.EqualError(t, validator.Errors()[0], "Error occurred parsing remember_me_duration string: could not convert the input string of 1 year into a duration") +} + +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) +} |
