-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_sink_test.go
More file actions
71 lines (58 loc) · 1.62 KB
/
test_sink_test.go
File metadata and controls
71 lines (58 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package hc
import (
"testing"
)
func TestTestSinkCopiesInputFields(t *testing.T) {
sink := NewTestSink()
fields := map[string]any{"a": 1}
sink.Write(LevelInfo, "m", fields)
fields["a"] = 2
events := sink.Events()
if len(events) != 1 {
t.Fatalf("expected 1 event, got %d", len(events))
}
if events[0].Fields["a"] != 1 {
t.Fatalf("expected copied field value 1, got %v", events[0].Fields["a"])
}
}
func TestTestSinkDeepCopiesNestedInputFields(t *testing.T) {
sink := NewTestSink()
fields := map[string]any{
"user": map[string]any{
"roles": []any{"admin"},
},
}
sink.Write(LevelInfo, "m", fields)
fields["user"].(map[string]any)["roles"].([]any)[0] = "viewer"
events := sink.Events()
user := events[0].Fields["user"].(map[string]any)
role := user["roles"].([]any)[0]
if role != "admin" {
t.Fatalf("expected deep-copied nested role=admin, got %v", role)
}
}
func TestTestSinkEventsReturnsCopy(t *testing.T) {
sink := NewTestSink()
sink.Write(LevelInfo, "m", map[string]any{"a": 1})
events := sink.Events()
events[0].Level = LevelError
fresh := sink.Events()
if fresh[0].Level != LevelInfo {
t.Fatalf("expected original level to remain %s, got %s", LevelInfo, fresh[0].Level)
}
}
func TestTestSinkEventsReturnsDeepCopyOfFields(t *testing.T) {
sink := NewTestSink()
sink.Write(LevelInfo, "m", map[string]any{
"user": map[string]any{
"id": "u_1",
},
})
events := sink.Events()
events[0].Fields["user"].(map[string]any)["id"] = "u_2"
fresh := sink.Events()
id := fresh[0].Fields["user"].(map[string]any)["id"]
if id != "u_1" {
t.Fatalf("expected original nested id to remain u_1, got %v", id)
}
}