Skip to content

Commit 3e6d99a

Browse files
committed
feat: enhance audit logging tests with metadata validation and context management
1 parent da0d6c1 commit 3e6d99a

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

core/db/db_wrappers_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
package db
55

66
import (
7+
"context"
8+
"database/sql"
79
"testing"
810
"time"
911

@@ -163,6 +165,34 @@ func TestAccountAndKeyWrappers(t *testing.T) {
163165
t.Fatalf("expected audit entry not found: %+v", entries)
164166
}
165167

168+
SetAuditContext("cli", "unit-test")
169+
if err := LogAction("TEST_META", "details"); err != nil {
170+
t.Fatalf("LogAction with metadata: %v", err)
171+
}
172+
var meta struct {
173+
Hostname sql.NullString `bun:"hostname"`
174+
ClientImpl sql.NullString `bun:"client_impl"`
175+
Referrer sql.NullString `bun:"referrer"`
176+
}
177+
if err := QueryRawInto(
178+
context.Background(),
179+
BunDB(),
180+
&meta,
181+
"SELECT hostname, client_impl, referrer FROM audit_log WHERE action = ? ORDER BY id DESC LIMIT 1",
182+
"TEST_META",
183+
); err != nil {
184+
t.Fatalf("query metadata columns: %v", err)
185+
}
186+
if !meta.Hostname.Valid {
187+
t.Fatalf("expected hostname to be captured")
188+
}
189+
if !meta.ClientImpl.Valid || meta.ClientImpl.String != "cli" {
190+
t.Fatalf("unexpected client_impl: %+v", meta.ClientImpl)
191+
}
192+
if !meta.Referrer.Valid || meta.Referrer.String != "unit-test" {
193+
t.Fatalf("unexpected referrer: %+v", meta.Referrer)
194+
}
195+
166196
// Export/Import backup paths (basic round-trip)
167197
b, err := ExportDataForBackup()
168198
if err != nil {

core/db/testhelpers_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ func WithTestStore(t *testing.T, fn func(s *BunStore)) {
2020
prevDefaultAccountManager := defaultAccountManager
2121
prevDefaultKeyManager := defaultKeyManager
2222
prevDefaultAuditWriter := defaultAuditWriter
23+
prevAuditContext := getAuditContext()
2324

2425
// Initialize in-memory sqlite DB for this test
2526
dsn := "file:" + t.Name() + "?mode=memory&cache=shared"
@@ -40,6 +41,7 @@ func WithTestStore(t *testing.T, fn func(s *BunStore)) {
4041
defaultAccountManager = prevDefaultAccountManager
4142
defaultKeyManager = prevDefaultKeyManager
4243
defaultAuditWriter = prevDefaultAuditWriter
44+
SetAuditContext(prevAuditContext.ClientImplementation, prevAuditContext.Referrer)
4345
}()
4446

4547
fn(s)

0 commit comments

Comments
 (0)