35 lines
877 B
Go
35 lines
877 B
Go
package audit
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
"go.uber.org/zap/zaptest/observer"
|
|
)
|
|
|
|
func TestLogBusinessEventIncludesRequiredFields(t *testing.T) {
|
|
core, logs := observer.New(zapcore.InfoLevel)
|
|
undo := zap.ReplaceGlobals(zap.New(core))
|
|
defer undo()
|
|
|
|
logBusinessEvent([]zap.Field{
|
|
zap.Uint64("tenant_id", 1),
|
|
zap.Uint64("user_id", 2),
|
|
zap.String("action", "publish"),
|
|
zap.String("resource", "sop"),
|
|
zap.Uint64("resource_id", 3),
|
|
})
|
|
|
|
entries := logs.All()
|
|
if len(entries) != 1 || entries[0].Message != "business event" {
|
|
t.Fatalf("entries = %+v, want one business event", entries)
|
|
}
|
|
fields := entries[0].ContextMap()
|
|
for _, key := range []string{"tenant_id", "user_id", "action", "resource", "resource_id"} {
|
|
if _, ok := fields[key]; !ok {
|
|
t.Fatalf("required field %q is missing from business event", key)
|
|
}
|
|
}
|
|
}
|