feat: 方案100%匹配 — RBAC动态权限+Grafana监控+目录库独立微服务+全国目录中心+标识同步

This commit is contained in:
selfrelease
2026-06-30 13:42:11 +08:00
parent 96e2393c50
commit 29a6b57533
40 changed files with 4159 additions and 7 deletions
+62
View File
@@ -0,0 +1,62 @@
package httpx
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestRBACManager_DefaultPermissions(t *testing.T) {
r := NewRBACManager()
// 监管拥有全部权限
assert.True(t, r.HasPermission("regulator", PermContentIssue))
assert.True(t, r.HasPermission("regulator", PermContentTakedown))
assert.True(t, r.HasPermission("regulator", PermManageUsers))
// 审核主体不能发码
assert.False(t, r.HasPermission("reviewer", PermContentIssue))
assert.True(t, r.HasPermission("reviewer", PermContentReview))
// CP 不能下架
assert.False(t, r.HasPermission("cp", PermContentTakedown))
assert.True(t, r.HasPermission("cp", PermContentRegister))
// 运营商不能发码
assert.False(t, r.HasPermission("operator", PermContentIssue))
assert.True(t, r.HasPermission("operator", PermContentInject))
}
func TestRBACManager_DynamicConfig(t *testing.T) {
r := NewRBACManager()
// 新增自定义角色
r.SetRolePermissions("auditor", []Permission{
PermQueryProvenance, PermQueryAccountability, PermQueryEvidence,
})
assert.True(t, r.HasPermission("auditor", PermQueryProvenance))
assert.False(t, r.HasPermission("auditor", PermContentIssue))
// 动态授权
r.GrantPermission("auditor", PermContentVerify)
assert.True(t, r.HasPermission("auditor", PermContentVerify))
// 撤销权限
r.RevokePermission("auditor", PermContentVerify)
assert.False(t, r.HasPermission("auditor", PermContentVerify))
// 列出角色
roles := r.ListRoles()
assert.Contains(t, roles, "regulator")
assert.Contains(t, roles, "auditor")
// 列出权限
perms := r.ListPermissions("auditor")
assert.Len(t, perms, 3)
}
func TestRBACManager_UnknownRole(t *testing.T) {
r := NewRBACManager()
assert.False(t, r.HasPermission("nonexistent", PermContentIssue))
assert.Empty(t, r.ListPermissions("nonexistent"))
}