Merge pull request #3052 from alexquick/fix-invalid-config

Remove bad config keys on load from app/global envfiles
This commit is contained in:
Jose Diaz-Gonzalez
2018-02-13 01:43:04 -05:00
committed by GitHub
2 changed files with 40 additions and 0 deletions

View File

@@ -140,6 +140,32 @@ func TestInvalidKeys(t *testing.T) {
}
}
func TestInvalidEnvOnDisk(t *testing.T) {
RegisterTestingT(t)
Expect(setupTestApp()).To(Succeed())
defer teardownTestApp()
appConfigFile := strings.Join([]string{testAppDir, "/ENV"}, "")
b := []byte("export --invalid-key=TESTING\nexport valid_key=value\n")
if err := ioutil.WriteFile(appConfigFile, b, 0644); err != nil {
return
}
env, err := LoadAppEnv(testAppName)
Expect(err).NotTo(HaveOccurred())
_, ok := env.Get("--invalid-key")
Expect(ok).To(Equal(false))
value, ok := env.Get("valid_key")
Expect(ok).To(Equal(true))
Expect(value).To(Equal("value"))
//LoadAppEnv eliminates it from the file
content, err := ioutil.ReadFile(appConfigFile)
Expect(err).NotTo(HaveOccurred())
Expect(strings.Contains(string(content), "--invalid-key")).To(BeFalse())
}
func expectValue(appName string, key string, expected string) {
v, ok := Get(appName, key)
Expect(ok).To(Equal(true))

View File

@@ -253,6 +253,20 @@ func loadFromFile(name string, filename string) (env *Env, err error) {
envMap, err = godotenv.Read(filename)
}
dirty := false
for k := range envMap {
if err := validateKey(k); err != nil {
common.LogInfo1(fmt.Sprintf("Deleting invalid key %s from config for %s", k, name))
delete(envMap, k)
dirty = true
}
}
if dirty {
if err := godotenv.Write(envMap, filename); err != nil {
common.LogFail(fmt.Sprintf("Error writing back config for %s after removing invalid keys", name))
}
}
env = &Env{
name: name,
filename: filename,