package cmd import ( "os" "os/exec" "testing" "github.com/spf13/viper" "github.com/stretchr/testify/assert" ) func TestInitConfig(t *testing.T) { viper.Reset() viper.Set("deployment", "testing") viper.Set("image_dir", "/tmp") viper.Set("webserver_port", "8080") viper.Set("mqtt_broker_url", "mqtt://example.com:1883") viper.Set("mqtt_broker_user", "testuser") viper.Set("mqtt_broker_password", "testpass") viper.Set("mqtt_presence_topic", "home/foo/test") viper.Set("kiosk_cmd_screen_on", "echo screen on") viper.Set("kiosk_cmd_screen_off", "echo screen off") initConfig() assert.Equal(t, gitVersion, viper.GetString("version"), "config version mismatch") } func TestInitConfigMissingImageDir(t *testing.T) { if os.Getenv("TEST_MISSING_INPUT") == "1" { viper.Reset() viper.Set("deployment", "testing") viper.Set("version", "vTest") viper.Set("webserver_port", "8080") viper.Set("mqtt_broker_url", "mqtt://example.com:1883") viper.Set("mqtt_broker_user", "testuser") viper.Set("mqtt_broker_password", "testpass") viper.Set("mqtt_presence_topic", "home/foo/test") viper.Set("kiosk_cmd_screen_on", "echo screen on") viper.Set("kiosk_cmd_screen_off", "echo screen off") initConfig() return } cmd := exec.Command(os.Args[0], "-test.run=TestInitConfigMissingImageDir") cmd.Env = append(os.Environ(), "TEST_MISSING_INPUT=1") err := cmd.Run() if e, ok := err.(*exec.ExitError); ok && !e.Success() { return } t.Fatalf("process ran with err %v, want exit status 1", err) }