Harden configuration validation
This commit is contained in:
@@ -12,8 +12,7 @@ import (
|
||||
|
||||
func TestLoadSecretsFromConfigLoadsValidFiles(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
unsetSecretEnvironment(t, "NARRATIO_TEST_SECRET_A")
|
||||
unsetSecretEnvironment(t, "NARRATIO_TEST_SECRET_B")
|
||||
restoreEnvAfterTest(t, "NARRATIO_TEST_SECRET_A", "NARRATIO_TEST_SECRET_B")
|
||||
mustWriteSecretFile(t, filepath.Join(dir, "NARRATIO_TEST_SECRET_A"), "value-1\n")
|
||||
mustWriteSecretFile(t, filepath.Join(dir, "NARRATIO_TEST_SECRET_B"), "value-2\r\n")
|
||||
mustWriteSecretFile(t, filepath.Join(dir, "not-valid-name.txt"), "ignored")
|
||||
@@ -162,7 +161,7 @@ func TestLoadSecretsFromConfigRejectsUnsafeModes(t *testing.T) {
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
unsetSecretEnvironment(t, "OPENROUTER_API_KEY")
|
||||
restoreEnvAfterTest(t, "OPENROUTER_API_KEY")
|
||||
path := filepath.Join(dir, "OPENROUTER_API_KEY")
|
||||
mustWriteSecretFile(t, path, tc.wantSecret)
|
||||
if err := os.Chmod(dir, tc.directory); err != nil {
|
||||
@@ -186,7 +185,7 @@ func TestLoadSecretsFromConfigRejectsUnsafeModes(t *testing.T) {
|
||||
func TestLoadSecretsFromConfigRejectsNonRegularAndOversizedEntries(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
ensureSecretDirectory(t, dir)
|
||||
unsetSecretEnvironment(t, "OPENROUTER_API_KEY")
|
||||
restoreEnvAfterTest(t, "OPENROUTER_API_KEY")
|
||||
if err := os.Mkdir(filepath.Join(dir, "OPENROUTER_API_KEY"), secretDirectoryPrivateMode); err != nil {
|
||||
t.Fatalf("Mkdir(non-regular entry) error = %v", err)
|
||||
}
|
||||
@@ -215,7 +214,7 @@ func TestLoadSecretsFromConfigRejectsSymlinkAndAncestorReplacement(t *testing.T)
|
||||
dir := t.TempDir()
|
||||
outside := t.TempDir()
|
||||
ensureSecretDirectory(t, dir)
|
||||
unsetSecretEnvironment(t, "OPENROUTER_API_KEY")
|
||||
restoreEnvAfterTest(t, "OPENROUTER_API_KEY")
|
||||
outsideValue := "outside-secret-value"
|
||||
mustWriteSecretFile(t, filepath.Join(outside, "OPENROUTER_API_KEY"), outsideValue)
|
||||
if err := os.Symlink(filepath.Join(outside, "OPENROUTER_API_KEY"), filepath.Join(dir, "OPENROUTER_API_KEY")); err != nil {
|
||||
@@ -277,21 +276,6 @@ func secretConfig(dir string) *config.Config {
|
||||
return &config.Config{Pipeline: &config.PipelineConfig{Secrets: &config.SecretsConfig{EnvDir: dir}}}
|
||||
}
|
||||
|
||||
func unsetSecretEnvironment(t *testing.T, name string) {
|
||||
t.Helper()
|
||||
previous, existed := os.LookupEnv(name)
|
||||
if err := os.Unsetenv(name); err != nil {
|
||||
t.Fatalf("Unsetenv(%q): %v", name, err)
|
||||
}
|
||||
t.Cleanup(func() {
|
||||
if existed {
|
||||
_ = os.Setenv(name, previous)
|
||||
return
|
||||
}
|
||||
_ = os.Unsetenv(name)
|
||||
})
|
||||
}
|
||||
|
||||
func ensureSecretDirectory(t *testing.T, directory string) {
|
||||
t.Helper()
|
||||
if err := os.Chmod(directory, secretDirectoryPrivateMode); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user