config_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. package client
  2. import (
  3. "github.com/stretchr/testify/require"
  4. "os"
  5. "path/filepath"
  6. "testing"
  7. )
  8. func TestConfig_Load(t *testing.T) {
  9. filename := filepath.Join(t.TempDir(), "client.yml")
  10. require.Nil(t, os.WriteFile(filename, []byte(`
  11. default-host: http://localhost
  12. subscribe:
  13. - topic: no-command
  14. - topic: echo-this
  15. command: 'echo "Message received: $message"'
  16. - topic: alerts
  17. command: notify-send -i /usr/share/ntfy/logo.png "Important" "$m"
  18. if:
  19. priority: high,urgent
  20. `), 0600))
  21. conf, err := LoadConfig(filename)
  22. require.Nil(t, err)
  23. require.Equal(t, "http://localhost", conf.DefaultHost)
  24. require.Equal(t, 3, len(conf.Subscribe))
  25. require.Equal(t, "no-command", conf.Subscribe[0].Topic)
  26. require.Equal(t, "", conf.Subscribe[0].Command)
  27. require.Equal(t, "echo-this", conf.Subscribe[1].Topic)
  28. require.Equal(t, `echo "Message received: $message"`, conf.Subscribe[1].Command)
  29. require.Equal(t, "alerts", conf.Subscribe[2].Topic)
  30. require.Equal(t, `notify-send -i /usr/share/ntfy/logo.png "Important" "$m"`, conf.Subscribe[2].Command)
  31. require.Equal(t, "high,urgent", conf.Subscribe[2].If["priority"])
  32. }