package rbac import "testing" func contains(perms []Permission, p Permission) bool { for _, x := range perms { if x == p { return true } } return false } // Akzeptanzkriterium 2 + Pruefung 2: Rollenhierarchie liefert die erwartete // effektive Rechtemenge. func TestEffectivePermissions_Inheritance(t *testing.T) { userPerms := EffectivePermissions(RoleUser) if !contains(userPerms, PermSelfRead) || !contains(userPerms, PermSelfUpdate) { t.Fatalf("user sollte self.read/self.update haben, habe %v", userPerms) } if contains(userPerms, PermManageUsers) { t.Fatal("user sollte KEIN tenant.manage_users haben") } adminPerms := EffectivePermissions(RoleTenantAdmin) if !contains(adminPerms, PermSelfRead) || !contains(adminPerms, PermManageUsers) || !contains(adminPerms, PermManageSettings) { t.Fatalf("tenant_admin sollte geerbte user-rechte + eigene rechte haben, habe %v", adminPerms) } if contains(adminPerms, PermManageTenants) { t.Fatal("tenant_admin sollte KEIN platform.manage_tenants haben") } superPerms := EffectivePermissions(RoleSuperadmin) for _, want := range []Permission{PermSelfRead, PermSelfUpdate, PermManageUsers, PermManageSettings, PermManageTenants} { if !contains(superPerms, want) { t.Fatalf("superadmin sollte %q haben (volle vererbte kette), habe %v", want, superPerms) } } } func TestHasPermission(t *testing.T) { if !HasPermission(RoleTenantAdmin, PermSelfRead) { t.Fatal("tenant_admin sollte geerbtes self.read haben") } if HasPermission(RoleUser, PermManageTenants) { t.Fatal("user sollte platform.manage_tenants nicht haben") } }