From d21c67f9027e4f23526ac4112b87b0fd004dc59f Mon Sep 17 00:00:00 2001 From: Jason Cameron Date: Wed, 18 Feb 2026 12:41:49 -0500 Subject: [PATCH] test: add unit tests for CELChecker map iteration Signed-off-by: Jason Cameron --- lib/policy/celchecker_test.go | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lib/policy/celchecker_test.go diff --git a/lib/policy/celchecker_test.go b/lib/policy/celchecker_test.go new file mode 100644 index 00000000..61c90819 --- /dev/null +++ b/lib/policy/celchecker_test.go @@ -0,0 +1,44 @@ +package policy + +import ( + "net/http" + "testing" + + "github.com/TecharoHQ/anubis/internal/dns" + "github.com/TecharoHQ/anubis/lib/config" + "github.com/TecharoHQ/anubis/lib/store/memory" +) + +func newTestDNS(t *testing.T) *dns.Dns { + t.Helper() + + ctx := t.Context() + memStore := memory.New(ctx) + cache := dns.NewDNSCache(300, 300, memStore) + return dns.New(ctx, cache) +} + +func TestCELChecker_MapIterationWrappers(t *testing.T) { + cfg := &config.ExpressionOrList{ + Expression: `headers.exists(k, k == "Accept") && query.exists(k, k == "format")`, + } + + checker, err := NewCELChecker(cfg, newTestDNS(t)) + if err != nil { + t.Fatalf("creating CEL checker failed: %v", err) + } + + req, err := http.NewRequest(http.MethodGet, "https://example.com/?format=json", nil) + if err != nil { + t.Fatalf("making request failed: %v", err) + } + req.Header.Set("Accept", "application/json") + + got, err := checker.Check(req) + if err != nil { + t.Fatalf("checking expression failed: %v", err) + } + if !got { + t.Fatal("expected expression to evaluate true") + } +}