package homeassistant import ( "bytes" "log/slog" "net/http" "net/http/httptest" "strings" "testing" "github.com/spf13/viper" "github.com/stretchr/testify/assert" ) var ( loggerText = new(bytes.Buffer) ) func LoggerSetupTeardown(t *testing.T) func() { logger := slog.New(slog.NewTextHandler(loggerText, nil)) defaultLogger := slog.Default() slog.SetDefault(logger) return func() { slog.SetDefault(defaultLogger) loggerText.Reset() } } func TestHandlePooRecorderMsgGetLatest(t *testing.T) { teardown := LoggerSetupTeardown(t) defer teardown() requestBody := `{"target": "poo_recorder", "action": "get_latest", "content": ""}` req := httptest.NewRequest(http.MethodPost, "/homeassistant/publish", strings.NewReader(requestBody)) w := httptest.NewRecorder() server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { assert.Equal(t, "/poo/latest", r.URL.Path) })) defer server.Close() port := strings.Split(server.URL, ":")[2] viper.Set("port", port) HandleHaMessage(w, req) assert.Equal(t, http.StatusOK, w.Code) assert.Empty(t, loggerText.String()) }