Skip to content

Commit 9907f0f

Browse files
committed
add tests for default slog exporter
1 parent ee9c5b9 commit 9907f0f

1 file changed

Lines changed: 27 additions & 4 deletions

File tree

exporters/slog_test.go

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,40 @@ import (
1414

1515
var buf bytes.Buffer
1616

17-
func NewSlogServer() http.Handler {
17+
func NewSlogServer(logger *slog.Logger) http.Handler {
1818
mux := http.NewServeMux()
1919
mux.HandleFunc("/", Handler)
20-
handler := slog.NewJSONHandler(&buf, nil)
21-
logger := slog.New(handler)
2220
mw := flowtracker.NewMiddleware(flowtracker.WithExporter(&SlogExporter{logger: logger}))
2321
return mw(mux)
2422
}
2523

2624
func TestSlogExporter_OK(t *testing.T) {
27-
server := NewSlogServer()
25+
handler := slog.NewJSONHandler(&buf, nil)
26+
logger := slog.New(handler)
27+
server := NewSlogServer(logger)
28+
29+
req := httptest.NewRequest(http.MethodGet, "/", nil)
30+
rr := httptest.NewRecorder()
31+
32+
server.ServeHTTP(rr, req)
33+
34+
time.Sleep(500 * time.Millisecond)
35+
36+
output := buf.String()
37+
var logEntry map[string]interface{}
38+
if err := json.Unmarshal([]byte(output), &logEntry); err != nil {
39+
t.Fatalf("Failed to unmarshal log output: %v", err)
40+
}
41+
now := time.Now()
42+
if duration, err := time.Parse(time.RFC3339Nano, logEntry["time"].(string)); err != nil {
43+
t.Fatalf("Failed to unmarshal time in logEntry: %v", err)
44+
} else if now.Sub(duration).Milliseconds() < 0 {
45+
t.Fatalf("Invalid time in logEntry")
46+
}
47+
}
48+
49+
func TestSlogExporter_OK_DefaultLogger(t *testing.T) {
50+
server := NewSlogServer(nil)
2851

2952
req := httptest.NewRequest(http.MethodGet, "/", nil)
3053
rr := httptest.NewRecorder()

0 commit comments

Comments
 (0)