github.com/knoebber/dotfile@v1.0.6/local/config_test.go (about) 1 package local 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestDefaultConfigPath(t *testing.T) { 11 path, err := DefaultConfigPath() 12 assert.NoError(t, err) 13 assert.NotEmpty(t, path) 14 } 15 16 func TestReadConfig(t *testing.T) { 17 _ = os.Mkdir(testDir, 0755) 18 19 t.Run("error when path is invalid", func(t *testing.T) { 20 _, err := ReadConfig("does/not/exist") 21 assert.Error(t, err) 22 }) 23 24 t.Run("error when json is invalid", func(t *testing.T) { 25 _ = os.Remove(testConfigPath) 26 if err := os.WriteFile(testConfigPath, []byte("bad json"), 0644); err != nil { 27 t.Fatalf("setting up %s: %v", testTrackedFile, err) 28 } 29 30 _, err := ReadConfig(testConfigPath) 31 assert.Error(t, err) 32 }) 33 34 t.Run("ok", func(t *testing.T) { 35 _ = os.Remove(testConfigPath) 36 assert.NoError(t, SetConfig(testConfigPath, "username", "test")) 37 38 config, err := ReadConfig(testConfigPath) 39 assert.NoError(t, err) 40 assert.NotEmpty(t, config.String()) 41 assert.Equal(t, config.Username, "test") 42 }) 43 } 44 45 func TestSetConfig(t *testing.T) { 46 _ = os.Mkdir(testDir, 0755) 47 48 t.Run("error when path doesn't exist", func(t *testing.T) { 49 assert.Error(t, SetConfig("no/path", "", "")) 50 }) 51 52 t.Run("error when json is invalid", func(t *testing.T) { 53 if err := os.WriteFile(testConfigPath, []byte("bad json"), 0644); err != nil { 54 t.Fatalf("setting up %s: %v", testTrackedFile, err) 55 } 56 57 assert.Error(t, SetConfig(testConfigPath, "username", "new")) 58 }) 59 60 t.Run("error when key is invalid", func(t *testing.T) { 61 _ = os.Remove(testConfigPath) 62 assert.Error(t, SetConfig(testConfigPath, "nokey", "")) 63 }) 64 }