package config import ( "os" "testing" "github.com/rs/zerolog" "github.com/spf13/viper" ) // writeTestConfigFile creates a test config file at given filename location func writeTestConfigFile(t *testing.T, filename string) { testdata := []byte("[application]\nlisten = \"127.0.0.1\"\n[database]\nport = 54321\ntestbool = false") err := os.WriteFile(filename, testdata, 0644) if err != nil { t.Fatalf("Can't write test file %q: %v", filename, err) } } // removeTestConfigFile removes given config file func removeTestConfigFile(t *testing.T, filename string) { err := os.Remove(filename) if err != nil { t.Fatalf("Can't remove test file %q: %v", filename, err) } } // TestLoadConfigFile calls config.loadConfigFile // to check if a valid Configuration can be loaded. func TestLoadConfigFile(t *testing.T) { logger := NewLogger(zerolog.InfoLevel) dir, err := os.Getwd() if err != nil { t.Fatalf("Can't get current working directory") } testFile := dir + "/" + "config_unittest.toml" writeTestConfigFile(t, testFile) defer removeTestConfigFile(t, testFile) loadConfigFile(testFile, logger) if viper.GetString("application.listen") != "127.0.0.1" { t.Fatalf(`viper.GetString("application.listen") = %q, want "127.0.0.1"`, viper.GetString("application.listen")) } if viper.GetInt("database.port") != 54321 { t.Fatalf(`viper.GetInt("database.port") = %q, want 54321`, viper.GetInt("database.port")) } if viper.GetBool("database.testbool") != false { t.Fatalf(`viper.GetBool("database.testbool") = true, want false`) } if viper.GetString("invalid.config.value") != "" { t.Fatalf(`viper.GetString("invalid.config.value") = %q, want ""`, viper.GetString("invalid.config.value")) } }