Smail/backend/services/accountgroup/service_test.go
smail dab7f96249
Some checks are pending
Security Checks / security (push) Waiting to run
修复管理员查看超级管理员范围
2026-10-01 05:19:23 +08:00

44 lines
1.3 KiB
Go

package accountgroup
import (
"testing"
"git.pcux.cn/xuans/Smail/models"
"git.pcux.cn/xuans/Smail/services/access"
_ "modernc.org/sqlite"
"xorm.io/xorm"
)
func TestCanAccessExcludesSuperAdminFromAdminScope(t *testing.T) {
engine, err := xorm.NewEngine("sqlite", ":memory:")
if err != nil {
t.Fatal(err)
}
defer engine.Close()
if err := engine.Sync2(new(models.User), new(models.AccountGroupMember)); err != nil {
t.Fatal(err)
}
superAdmin := models.User{Account: "superadmin", Name: "超级管理员", Role: string(access.RoleSuperAdmin)}
admin := models.User{Account: "admin", Name: "分组管理员", Role: string(access.RoleAdmin), IsAdmin: 1}
member := models.User{Account: "member", Name: "普通用户", Role: string(access.RoleUser)}
if _, err := engine.Insert(&superAdmin, &admin, &member); err != nil {
t.Fatal(err)
}
if _, err := engine.Insert(
&models.AccountGroupMember{UserID: admin.ID, GroupID: 1},
&models.AccountGroupMember{UserID: member.ID, GroupID: 1},
); err != nil {
t.Fatal(err)
}
if CanAccess(engine, admin.ID, access.RoleAdmin, superAdmin.ID) {
t.Fatal("管理员不应访问超级管理员账户")
}
if !CanAccess(engine, admin.ID, access.RoleAdmin, member.ID) {
t.Fatal("管理员应访问同组普通用户账户")
}
}