Gitfed
bastien-mrq/gitfed / internal / store / audit_test.go
package store

import (
	"path/filepath"
	"testing"
)

func TestAuditAppendAndList(t *testing.T) {
	s, err := Open(filepath.Join(t.TempDir(), "gitfed.db"))
	if err != nil {
		t.Fatalf("open: %v", err)
	}
	defer s.Close()

	for _, action := range []string{"first", "second", "third"} {
		if err := s.AppendAudit(AuditEvent{Action: action, Allowed: true}); err != nil {
			t.Fatalf("append %q: %v", action, err)
		}
	}

	events, err := s.ListAudit(10)
	if err != nil {
		t.Fatalf("list: %v", err)
	}
	if len(events) != 3 {
		t.Fatalf("got %d events, want 3", len(events))
	}
	// newest first
	want := []string{"third", "second", "first"}
	for i, e := range events {
		if e.Action != want[i] {
			t.Errorf("event %d: got action %q, want %q", i, e.Action, want[i])
		}
	}

	limited, err := s.ListAudit(2)
	if err != nil {
		t.Fatalf("list limited: %v", err)
	}
	if len(limited) != 2 || limited[0].Action != "third" || limited[1].Action != "second" {
		t.Errorf("limited list = %+v, want [third second]", limited)
	}
}