mirror of
https://github.com/rclone/rclone.git
synced 2025-08-23 03:20:50 +02:00
config: delay load config file (#5258)
Restructuring of config code in v1.55 resulted in config file being loaded early at process startup. If configuration file is encrypted this means user will need to supply the password, even when running commands that does not use config. This also lead to an issue where mount with --deamon failed to decrypt the config file when it had to prompt user for passord. Fixes #5236 Fixes #5228
This commit is contained in:
@@ -26,13 +26,13 @@ func TestConfigLoadEncrypted(t *testing.T) {
|
||||
// Set correct password
|
||||
err = config.SetConfigPassword("asdf")
|
||||
require.NoError(t, err)
|
||||
err = config.Data.Load()
|
||||
err = config.Data().Load()
|
||||
require.NoError(t, err)
|
||||
sections := config.Data.GetSectionList()
|
||||
sections := config.Data().GetSectionList()
|
||||
var expect = []string{"nounc", "unc"}
|
||||
assert.Equal(t, expect, sections)
|
||||
|
||||
keys := config.Data.GetKeyList("nounc")
|
||||
keys := config.Data().GetKeyList("nounc")
|
||||
expect = []string{"type", "nounc"}
|
||||
assert.Equal(t, expect, keys)
|
||||
}
|
||||
@@ -54,14 +54,14 @@ func TestConfigLoadEncryptedWithValidPassCommand(t *testing.T) {
|
||||
|
||||
config.ClearConfigPassword()
|
||||
|
||||
err := config.Data.Load()
|
||||
err := config.Data().Load()
|
||||
require.NoError(t, err)
|
||||
|
||||
sections := config.Data.GetSectionList()
|
||||
sections := config.Data().GetSectionList()
|
||||
var expect = []string{"nounc", "unc"}
|
||||
assert.Equal(t, expect, sections)
|
||||
|
||||
keys := config.Data.GetKeyList("nounc")
|
||||
keys := config.Data().GetKeyList("nounc")
|
||||
expect = []string{"type", "nounc"}
|
||||
assert.Equal(t, expect, keys)
|
||||
}
|
||||
@@ -83,7 +83,7 @@ func TestConfigLoadEncryptedWithInvalidPassCommand(t *testing.T) {
|
||||
|
||||
config.ClearConfigPassword()
|
||||
|
||||
err := config.Data.Load()
|
||||
err := config.Data().Load()
|
||||
require.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "using --password-command derived password")
|
||||
}
|
||||
@@ -95,21 +95,21 @@ func TestConfigLoadEncryptedFailures(t *testing.T) {
|
||||
oldConfigPath := config.GetConfigPath()
|
||||
assert.NoError(t, config.SetConfigPath("./testdata/enc-short.conf"))
|
||||
defer func() { assert.NoError(t, config.SetConfigPath(oldConfigPath)) }()
|
||||
err = config.Data.Load()
|
||||
err = config.Data().Load()
|
||||
require.Error(t, err)
|
||||
|
||||
// This file contains invalid base64 characters.
|
||||
assert.NoError(t, config.SetConfigPath("./testdata/enc-invalid.conf"))
|
||||
err = config.Data.Load()
|
||||
err = config.Data().Load()
|
||||
require.Error(t, err)
|
||||
|
||||
// This file contains invalid base64 characters.
|
||||
assert.NoError(t, config.SetConfigPath("./testdata/enc-too-new.conf"))
|
||||
err = config.Data.Load()
|
||||
err = config.Data().Load()
|
||||
require.Error(t, err)
|
||||
|
||||
// This file does not exist.
|
||||
assert.NoError(t, config.SetConfigPath("./testdata/filenotfound.conf"))
|
||||
err = config.Data.Load()
|
||||
err = config.Data().Load()
|
||||
assert.Equal(t, config.ErrorConfigFileNotFound, err)
|
||||
}
|
||||
|
Reference in New Issue
Block a user