mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-04-28 11:30:15 +00:00
136 lines
3 KiB
Go
136 lines
3 KiB
Go
package audit
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestSummarizeAuditDetails(t *testing.T) {
|
|
present, length, digest := summarizeAuditDetails("apiToken=secret-value")
|
|
if !present {
|
|
t.Fatal("expected details to be marked present")
|
|
}
|
|
if length != len("apiToken=secret-value") {
|
|
t.Fatalf("length = %d", length)
|
|
}
|
|
if digest == "" {
|
|
t.Fatal("expected non-empty digest")
|
|
}
|
|
|
|
emptyPresent, emptyLength, emptyDigest := summarizeAuditDetails("")
|
|
if emptyPresent || emptyLength != 0 || emptyDigest != "" {
|
|
t.Fatalf("unexpected empty summary: %v %d %q", emptyPresent, emptyLength, emptyDigest)
|
|
}
|
|
}
|
|
|
|
func TestConsoleLogger_Log(t *testing.T) {
|
|
logger := NewConsoleLogger()
|
|
|
|
event := Event{
|
|
ID: "test-id-123",
|
|
Timestamp: time.Now(),
|
|
EventType: "login",
|
|
User: "testuser",
|
|
IP: "192.168.1.100",
|
|
Path: "/api/login",
|
|
Success: true,
|
|
Details: "Basic auth login",
|
|
}
|
|
|
|
err := logger.Log(event)
|
|
if err != nil {
|
|
t.Errorf("ConsoleLogger.Log() returned error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestConsoleLogger_Log_Failed(t *testing.T) {
|
|
logger := NewConsoleLogger()
|
|
|
|
event := Event{
|
|
ID: "test-id-456",
|
|
Timestamp: time.Now(),
|
|
EventType: "login",
|
|
User: "baduser",
|
|
IP: "10.0.0.5",
|
|
Path: "/api/login",
|
|
Success: false,
|
|
Details: "Invalid credentials",
|
|
}
|
|
|
|
err := logger.Log(event)
|
|
if err != nil {
|
|
t.Errorf("ConsoleLogger.Log() returned error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestConsoleLogger_Query(t *testing.T) {
|
|
logger := NewConsoleLogger()
|
|
|
|
events, err := logger.Query(QueryFilter{})
|
|
if err != nil {
|
|
t.Errorf("ConsoleLogger.Query() returned error: %v", err)
|
|
}
|
|
|
|
if len(events) != 0 {
|
|
t.Errorf("ConsoleLogger.Query() should return empty slice, got %d events", len(events))
|
|
}
|
|
}
|
|
|
|
func TestConsoleLogger_Count(t *testing.T) {
|
|
logger := NewConsoleLogger()
|
|
|
|
count, err := logger.Count(QueryFilter{})
|
|
if err != nil {
|
|
t.Errorf("ConsoleLogger.Count() returned error: %v", err)
|
|
}
|
|
|
|
if count != 0 {
|
|
t.Errorf("ConsoleLogger.Count() should return 0, got %d", count)
|
|
}
|
|
}
|
|
|
|
func TestConsoleLogger_Close(t *testing.T) {
|
|
logger := NewConsoleLogger()
|
|
|
|
err := logger.Close()
|
|
if err != nil {
|
|
t.Errorf("ConsoleLogger.Close() returned error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestSetLogger_GetLogger(t *testing.T) {
|
|
// Create a custom logger for testing
|
|
customLogger := NewConsoleLogger()
|
|
|
|
SetLogger(customLogger)
|
|
|
|
got := GetLogger()
|
|
if got != customLogger {
|
|
t.Error("GetLogger() did not return the logger set by SetLogger()")
|
|
}
|
|
}
|
|
|
|
func TestLog_ConvenienceFunction(t *testing.T) {
|
|
// Set a console logger
|
|
SetLogger(NewConsoleLogger())
|
|
|
|
// This should not panic
|
|
Log("test_event", "user", "127.0.0.1", "/test", true, "test details")
|
|
}
|
|
|
|
func TestGetLogger_DefaultsToConsole(t *testing.T) {
|
|
// Reset global state for this test
|
|
loggerMu.Lock()
|
|
globalLogger = nil
|
|
loggerMu.Unlock()
|
|
|
|
logger := GetLogger()
|
|
if logger == nil {
|
|
t.Error("GetLogger() returned nil")
|
|
}
|
|
|
|
_, ok := logger.(*ConsoleLogger)
|
|
if !ok {
|
|
t.Error("GetLogger() should return ConsoleLogger by default")
|
|
}
|
|
}
|