package restic import ( "github.com/stretchr/testify/assert" "io/fs" "os" "testing" ) func init() { configDir = "./" os.RemoveAll("config.json") } func TestReadConfig_NoFile_Error(t *testing.T) { config, err := ReadConfig() assert.Nilf(t, config, "expected config to be nil") assert.Error(t, err) } func TestReadConfig_MalformedJSON_Error(t *testing.T) { os.WriteFile("config.json", []byte("{ whoops"), fs.ModePerm) config, err := ReadConfig() assert.Nilf(t, config, "expected config to be nil") assert.ErrorContainsf(t, err, "malformed", "expected err to contain malformed msg") } func TestReadConfig_ValidJSONFile_Ok(t *testing.T) { os.WriteFile("config.json", []byte("{\"backupTimeInHours\": 5, \"repository\": \"repodir\", \"backup\": \"backupfiles\"}"), fs.ModePerm) config, err := ReadConfig() assert.NoError(t, err) assert.Equal(t, 5, config.BackupTimeInHours) assert.Equal(t, "repodir", config.Repository) assert.Equal(t, "backupfiles", config.Backup) } func TestReadConfig_WithoutBackupTime_DefaultsTo24hrs(t *testing.T) { os.WriteFile("config.json", []byte("{\"repository\": \"repodir\", \"backup\": \"backupfiles\"}"), fs.ModePerm) config, err := ReadConfig() assert.NoError(t, err) assert.Equal(t, 24, config.BackupTimeInHours) assert.Equal(t, "repodir", config.Repository) assert.Equal(t, "backupfiles", config.Backup) }