forgejo-mcp-broker/internal/log/log_test.go

55 lines
1.3 KiB
Go
Raw Normal View History

package log_test
import (
"bytes"
"encoding/json"
"strings"
"testing"
brokerlog "kode.naiv.no/olemd/forgejo-mcp-broker/internal/log"
)
func TestNew_WritesJSON(t *testing.T) {
var buf bytes.Buffer
l := brokerlog.New(&buf, false)
l.Info("hello", "key", "value")
var rec map[string]any
if err := json.Unmarshal(buf.Bytes(), &rec); err != nil {
t.Fatalf("output is not valid JSON: %v\ngot: %s", err, buf.String())
}
if rec["msg"] != "hello" {
t.Errorf("msg = %v, want hello", rec["msg"])
}
if rec["service"] != "fjmcp-broker" {
t.Errorf("service = %v, want fjmcp-broker", rec["service"])
}
if rec["key"] != "value" {
t.Errorf("key = %v, want value", rec["key"])
}
}
func TestNew_DebugSuppressedByDefault(t *testing.T) {
var buf bytes.Buffer
l := brokerlog.New(&buf, false)
l.Debug("debug-only")
if buf.Len() > 0 {
t.Errorf("debug record should be suppressed at info level, got: %s", buf.String())
}
}
func TestNew_DebugIncludedWhenEnabled(t *testing.T) {
var buf bytes.Buffer
l := brokerlog.New(&buf, true)
l.Debug("debug-enabled")
if !strings.Contains(buf.String(), "debug-enabled") {
t.Errorf("debug record missing with debug=true, got: %s", buf.String())
}
}
func TestDiscard_NoOutput(t *testing.T) {
l := brokerlog.Discard()
l.Info("ignored")
l.Error("also ignored")
// Nothing to assert except that these calls don't panic.
}