mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-10 18:45:53 +00:00
2ac70dab70
Refs #1464
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package audit
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestAsyncLoggerPreservesPersistentReadAndVerificationContracts(t *testing.T) {
|
|
backend, err := NewSQLiteLogger(SQLiteLoggerConfig{
|
|
DataDir: t.TempDir(),
|
|
CryptoMgr: newMockCryptoManager(),
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("NewSQLiteLogger: %v", err)
|
|
}
|
|
event := Event{
|
|
ID: "async-contract",
|
|
Timestamp: time.Now().UTC(),
|
|
EventType: "test",
|
|
Success: true,
|
|
}
|
|
if err := backend.Record(event); err != nil {
|
|
t.Fatalf("record event: %v", err)
|
|
}
|
|
|
|
logger := NewAsyncLogger(backend, AsyncLoggerConfig{BufferSize: 8})
|
|
defer logger.Close()
|
|
events, total, err := logger.QueryPage(QueryFilter{ID: event.ID, Limit: 1})
|
|
if err != nil {
|
|
t.Fatalf("QueryPage: %v", err)
|
|
}
|
|
if len(events) != 1 || total != 1 {
|
|
t.Fatalf("QueryPage = %d events, total %d, want 1/1", len(events), total)
|
|
}
|
|
if !logger.VerifySignature(events[0]) {
|
|
t.Fatal("async wrapper did not delegate signature verification")
|
|
}
|
|
if _, ok := any(logger).(PersistentLogger); !ok {
|
|
t.Fatal("async persistent logger no longer satisfies export contract")
|
|
}
|
|
}
|