From d3541511f59abc33345261fca9f613163b6665c4 Mon Sep 17 00:00:00 2001 From: gcoinstash-cmd Date: Sun, 6 Sep 2026 02:32:52 -0700 Subject: [PATCH] test(development): add authorization relation graph cycle detection specs --- pkg/development/wave9_graph_cycle_test.go | 40 +++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 pkg/development/wave9_graph_cycle_test.go diff --git a/pkg/development/wave9_graph_cycle_test.go b/pkg/development/wave9_graph_cycle_test.go new file mode 100644 index 000000000..98e65bb6e --- /dev/null +++ b/pkg/development/wave9_graph_cycle_test.go @@ -0,0 +1,40 @@ +package development + +import ( + "testing" +) + +func TestWave9GraphCycleDetectionGuard(t *testing.T) { + visited := make(map[string]bool) + recursionStack := make(map[string]bool) + + graph := map[string][]string{ + "user:1": {"group:engineering"}, + "group:engineering": {"group:admins"}, + "group:admins": {"group:engineering"}, // cycle + } + + var hasCycle func(node string) bool + hasCycle = func(node string) bool { + visited[node] = true + recursionStack[node] = true + + for _, neighbor := range graph[node] { + if !visited[neighbor] { + if hasCycle(neighbor) { + return true + } + } else if recursionStack[neighbor] { + return true + } + } + + recursionStack[node] = false + return false + } + + cycleDetected := hasCycle("user:1") + if !cycleDetected { + t.Errorf("expected cycle detection in recursive group hierarchy") + } +}