internal/auth/identity_fuzz_test.go
Rama main · réplica de lectura del repositorio original.
package auth
import (
"slices"
"testing"
)
func FuzzRoleAuthorization(f *testing.F) {
for _, seed := range []struct {
held string
needed string
}{
{held: RoleAdmin, needed: RoleViewer},
{held: RoleViewer, needed: RoleAdmin},
{held: RoleAdmin, needed: "owner"},
{held: "owner", needed: "operator"},
{held: "", needed: ""},
} {
f.Add(seed.held, seed.needed)
}
f.Fuzz(func(t *testing.T, held, needed string) {
got := Allows(held, needed)
if needed == "" {
if !got {
t.Fatal("an operation requiring no role was refused")
}
return
}
neededAt := slices.Index(rolesWeakestFirst, needed)
if neededAt < 0 {
if got {
t.Fatalf("unknown role %q was granted", needed)
}
return
}
heldAt := slices.Index(rolesWeakestFirst, held)
if got != (heldAt >= neededAt) {
t.Fatalf("Allows(%q, %q) = %v", held, needed, got)
}
})
}