managed_minimal_test.go raw
1 package acl
2
3 import (
4 "context"
5 "testing"
6 "time"
7
8 "next.orly.dev/app/config"
9 "next.orly.dev/pkg/database"
10 "next.orly.dev/pkg/nostr/encoders/event"
11 )
12
13 func TestManagedACL_BasicFunctionality(t *testing.T) {
14 // Setup test database
15 ctx, cancel := context.WithCancel(context.Background())
16 defer cancel()
17
18 // Use a temporary directory for the test database
19 tmpDir := t.TempDir()
20 db, err := database.New(ctx, cancel, tmpDir, "test.db")
21 if err != nil {
22 t.Fatalf("Failed to create test database: %v", err)
23 }
24 defer db.Close()
25
26 // Setup managed ACL
27 cfg := &config.C{
28 AuthRequired: false,
29 Owners: []string{"owner1"},
30 Admins: []string{"admin1"},
31 }
32
33 managed := &Managed{
34 Ctx: ctx,
35 cfg: cfg,
36 db: db,
37 managedACL: database.NewManagedACL(db),
38 owners: [][]byte{[]byte("owner1")},
39 admins: [][]byte{[]byte("admin1")},
40 }
41
42 // Test basic functionality
43 t.Run("owner should get owner access", func(t *testing.T) {
44 level := managed.GetAccessLevel([]byte("owner1"), "127.0.0.1")
45 if level != "owner" {
46 t.Errorf("GetAccessLevel() = %v, want owner", level)
47 }
48 })
49
50 t.Run("admin should get admin access", func(t *testing.T) {
51 level := managed.GetAccessLevel([]byte("admin1"), "127.0.0.1")
52 if level != "admin" {
53 t.Errorf("GetAccessLevel() = %v, want admin", level)
54 }
55 })
56
57 t.Run("default user should get read access", func(t *testing.T) {
58 level := managed.GetAccessLevel([]byte("user1"), "127.0.0.1")
59 if level != "read" {
60 t.Errorf("GetAccessLevel() = %v, want read", level)
61 }
62 })
63
64 t.Run("owner event should be allowed", func(t *testing.T) {
65 ev := createMinimalTestEvent("owner1", 1)
66 allowed, err := managed.CheckPolicy(ev)
67 if err != nil {
68 t.Fatalf("CheckPolicy() error = %v", err)
69 }
70 if !allowed {
71 t.Errorf("CheckPolicy() = %v, want true", allowed)
72 }
73 })
74
75 t.Run("admin event should be allowed", func(t *testing.T) {
76 ev := createMinimalTestEvent("admin1", 1)
77 allowed, err := managed.CheckPolicy(ev)
78 if err != nil {
79 t.Fatalf("CheckPolicy() error = %v", err)
80 }
81 if !allowed {
82 t.Errorf("CheckPolicy() = %v, want true", allowed)
83 }
84 })
85
86 t.Run("default event should be allowed", func(t *testing.T) {
87 ev := createMinimalTestEvent("user1", 1)
88 allowed, err := managed.CheckPolicy(ev)
89 if err != nil {
90 t.Fatalf("CheckPolicy() error = %v", err)
91 }
92 if !allowed {
93 t.Errorf("CheckPolicy() = %v, want true", allowed)
94 }
95 })
96 }
97
98 func createMinimalTestEvent(pubkey string, kind uint16) *event.E {
99 ev := event.New()
100 ev.Pubkey = []byte(pubkey)
101 ev.Kind = kind
102 ev.CreatedAt = time.Now().Unix()
103 ev.Content = []byte("test content")
104 ev.Tags = nil
105 ev.ID = ev.GetIDBytes()
106 return ev
107 }
108