Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
55 changed files
with
5,857 additions
and
1,116 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,67 @@ | ||
package a | ||
|
||
import ( | ||
"go-iris/web/models" | ||
"testing" | ||
|
||
"github.com/go-xorm/xorm" | ||
"github.com/kataras/golog" | ||
) | ||
|
||
func TestJoint(t *testing.T) { | ||
url := "root:root@tcp(127.0.0.1:3306)/casbin?charset=utf8" | ||
engine, err := xorm.NewEngine("mysql", url) | ||
if err != nil { | ||
t.Fatal(err.Error()) | ||
} | ||
|
||
join := make([]models.MenuTreeGroup, 0) | ||
|
||
sql := ` | ||
SELECT | ||
m1.id, m1.path, m1.modular, m1.component, m1.icon, m1.name, m1.require_auth, | ||
m2.id AS id2, | ||
m2.modular AS modular2, | ||
m2.component AS component2, | ||
m2.icon AS icon2, | ||
m2.keep_alive AS keep_alive2, | ||
m2.name AS name2, | ||
m2.path AS path2, | ||
m2.require_auth AS require_auth2 | ||
FROM menu m1, menu m2 | ||
WHERE m1.id = m2.parent_id | ||
AND m1.id != 1 | ||
AND m2.id IN | ||
( | ||
SELECT rm.mid | ||
FROM role_menu rm WHERE rm.rid in | ||
( | ||
SELECT id FROM casbin_rule | ||
WHERE | ||
v2 <> 'ANY' AND | ||
v0 in | ||
( | ||
SELECT v1 FROM casbin_rule WHERE v0=90 | ||
) | ||
) | ||
) | ||
AND m2.enabled=true order by m1.id, m2.id | ||
` | ||
engine.SQL(sql).Find(&join) | ||
//t.Log(join) | ||
parent := join[0].Menu | ||
child := make([]models.Children, 0) | ||
for _, v := range join { | ||
child = append(child, v.Children) | ||
} | ||
|
||
parent.Children = child | ||
//t.Log("p => ", parent) | ||
//for _, v := range child { | ||
// t.Log("c => ", v) | ||
//} | ||
|
||
user := new(models.User) | ||
i, e := engine.Where("id = ?", 90).Count(user) | ||
golog.Info(i, e) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,202 @@ | ||
package a | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/casbin/casbin" | ||
"github.com/casbin/casbin/util" | ||
) | ||
|
||
func testGetRoles(t *testing.T, e *casbin.Enforcer, name string, res []string) { | ||
t.Helper() | ||
myRes := e.GetRolesForUser(name) | ||
t.Log("Roles for ", name, ": ", myRes) | ||
|
||
if !util.SetEquals(res, myRes) { | ||
t.Error("Roles for ", name, ": ", myRes, ", supposed to be ", res) | ||
} | ||
} | ||
|
||
func testGetUsers(t *testing.T, e *casbin.Enforcer, name string, res []string) { | ||
t.Helper() | ||
myRes := e.GetUsersForRole(name) | ||
t.Log("Users for ", name, ": ", myRes) | ||
|
||
if !util.SetEquals(res, myRes) { | ||
t.Error("Users for ", name, ": ", myRes, ", supposed to be ", res) | ||
} | ||
} | ||
|
||
func testHasRole(t *testing.T, e *casbin.Enforcer, name string, role string, res bool) { | ||
t.Helper() | ||
myRes := e.HasRoleForUser(name, role) | ||
t.Log(name, " has role ", role, ": ", myRes) | ||
|
||
if res != myRes { | ||
t.Error(name, " has role ", role, ": ", myRes, ", supposed to be ", res) | ||
} | ||
} | ||
|
||
//func TestRoleAPI(t *testing.T) { | ||
// e := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv") | ||
// | ||
// testGetRoles(t, e, "alice", []string{"data2_admin"}) | ||
// testGetRoles(t, e, "bob", []string{}) | ||
// testGetRoles(t, e, "data2_admin", []string{}) | ||
// testGetRoles(t, e, "non_exist", []string{}) | ||
// | ||
// testHasRole(t, e, "alice", "data1_admin", false) | ||
// testHasRole(t, e, "alice", "data2_admin", true) | ||
// | ||
// e.AddRoleForUser("alice", "data1_admin") | ||
// | ||
// testGetRoles(t, e, "alice", []string{"data1_admin", "data2_admin"}) | ||
// testGetRoles(t, e, "bob", []string{}) | ||
// testGetRoles(t, e, "data2_admin", []string{}) | ||
// | ||
// e.DeleteRoleForUser("alice", "data1_admin") | ||
// | ||
// testGetRoles(t, e, "alice", []string{"data2_admin"}) | ||
// testGetRoles(t, e, "bob", []string{}) | ||
// testGetRoles(t, e, "data2_admin", []string{}) | ||
// | ||
// e.DeleteRolesForUser("alice") | ||
// | ||
// testGetRoles(t, e, "alice", []string{}) | ||
// testGetRoles(t, e, "bob", []string{}) | ||
// testGetRoles(t, e, "data2_admin", []string{}) | ||
// | ||
// e.AddRoleForUser("alice", "data1_admin") | ||
// e.DeleteUser("alice") | ||
// | ||
// testGetRoles(t, e, "alice", []string{}) | ||
// testGetRoles(t, e, "bob", []string{}) | ||
// testGetRoles(t, e, "data2_admin", []string{}) | ||
// | ||
// e.AddRoleForUser("alice", "data2_admin") | ||
// | ||
// testEnforce(t, e, "alice", "data1", "read", true) | ||
// testEnforce(t, e, "alice", "data1", "write", false) | ||
// testEnforce(t, e, "alice", "data2", "read", true) | ||
// testEnforce(t, e, "alice", "data2", "write", true) | ||
// testEnforce(t, e, "bob", "data1", "read", false) | ||
// testEnforce(t, e, "bob", "data1", "write", false) | ||
// testEnforce(t, e, "bob", "data2", "read", false) | ||
// testEnforce(t, e, "bob", "data2", "write", true) | ||
// | ||
// e.DeleteRole("data2_admin") | ||
// | ||
// testEnforce(t, e, "alice", "data1", "read", true) | ||
// testEnforce(t, e, "alice", "data1", "write", false) | ||
// testEnforce(t, e, "alice", "data2", "read", false) | ||
// testEnforce(t, e, "alice", "data2", "write", false) | ||
// testEnforce(t, e, "bob", "data1", "read", false) | ||
// testEnforce(t, e, "bob", "data1", "write", false) | ||
// testEnforce(t, e, "bob", "data2", "read", false) | ||
// testEnforce(t, e, "bob", "data2", "write", true) | ||
//} | ||
|
||
func testGetPermissions(t *testing.T, e *casbin.Enforcer, name string, res [][]string) { | ||
t.Helper() | ||
myRes := e.GetPermissionsForUser(name) | ||
t.Log("Permissions for ", name, ": ", myRes) | ||
|
||
if !util.Array2DEquals(res, myRes) { | ||
t.Error("Permissions for ", name, ": ", myRes, ", supposed to be ", res) | ||
} | ||
} | ||
|
||
func testHasPermission(t *testing.T, e *casbin.Enforcer, name string, permission []string, res bool) { | ||
t.Helper() | ||
myRes := e.HasPermissionForUser(name, permission...) | ||
t.Log(name, " has permission ", util.ArrayToString(permission), ": ", myRes) | ||
|
||
if res != myRes { | ||
t.Error(name, " has permission ", util.ArrayToString(permission), ": ", myRes, ", supposed to be ", res) | ||
} | ||
} | ||
|
||
//func TestPermissionAPI(t *testing.T) { | ||
// e := NewEnforcer("examples/basic_without_resources_model.conf", "examples/basic_without_resources_policy.csv") | ||
// | ||
// testEnforceWithoutUsers(t, e, "alice", "read", true) | ||
// testEnforceWithoutUsers(t, e, "alice", "write", false) | ||
// testEnforceWithoutUsers(t, e, "bob", "read", false) | ||
// testEnforceWithoutUsers(t, e, "bob", "write", true) | ||
// | ||
// testGetPermissions(t, e, "alice", [][]string{{"alice", "read"}}) | ||
// testGetPermissions(t, e, "bob", [][]string{{"bob", "write"}}) | ||
// | ||
// testHasPermission(t, e, "alice", []string{"read"}, true) | ||
// testHasPermission(t, e, "alice", []string{"write"}, false) | ||
// testHasPermission(t, e, "bob", []string{"read"}, false) | ||
// testHasPermission(t, e, "bob", []string{"write"}, true) | ||
// | ||
// e.DeletePermission("read") | ||
// | ||
// testEnforceWithoutUsers(t, e, "alice", "read", false) | ||
// testEnforceWithoutUsers(t, e, "alice", "write", false) | ||
// testEnforceWithoutUsers(t, e, "bob", "read", false) | ||
// testEnforceWithoutUsers(t, e, "bob", "write", true) | ||
// | ||
// e.AddPermissionForUser("bob", "read") | ||
// | ||
// testEnforceWithoutUsers(t, e, "alice", "read", false) | ||
// testEnforceWithoutUsers(t, e, "alice", "write", false) | ||
// testEnforceWithoutUsers(t, e, "bob", "read", true) | ||
// testEnforceWithoutUsers(t, e, "bob", "write", true) | ||
// | ||
// e.DeletePermissionForUser("bob", "read") | ||
// | ||
// testEnforceWithoutUsers(t, e, "alice", "read", false) | ||
// testEnforceWithoutUsers(t, e, "alice", "write", false) | ||
// testEnforceWithoutUsers(t, e, "bob", "read", false) | ||
// testEnforceWithoutUsers(t, e, "bob", "write", true) | ||
// | ||
// e.DeletePermissionsForUser("bob") | ||
// | ||
// testEnforceWithoutUsers(t, e, "alice", "read", false) | ||
// testEnforceWithoutUsers(t, e, "alice", "write", false) | ||
// testEnforceWithoutUsers(t, e, "bob", "read", false) | ||
// testEnforceWithoutUsers(t, e, "bob", "write", false) | ||
//} | ||
|
||
func testGetImplicitRoles(t *testing.T, e *casbin.Enforcer, name string, res []string) { | ||
t.Helper() | ||
myRes := e.GetImplicitRolesForUser(name) | ||
t.Log("Implicit roles for ", name, ": ", myRes) | ||
|
||
if !util.ArrayEquals(res, myRes) { | ||
t.Error("Implicit roles for ", name, ": ", myRes, ", supposed to be ", res) | ||
} | ||
} | ||
|
||
//func TestImplicitRoleAPI(t *testing.T) { | ||
// e := NewEnforcer("examples/rbac_model.conf", "examples/rbac_with_hierarchy_policy.csv") | ||
// | ||
// testGetPermissions(t, e, "alice", [][]string{{"alice", "data1", "read"}}) | ||
// testGetPermissions(t, e, "bob", [][]string{{"bob", "data2", "write"}}) | ||
// | ||
// testGetImplicitRoles(t, e, "alice", []string{"admin", "data1_admin", "data2_admin"}) | ||
// testGetImplicitRoles(t, e, "bob", []string{}) | ||
//} | ||
|
||
func testGetImplicitPermissions(t *testing.T, e *casbin.Enforcer, name string, res [][]string) { | ||
t.Helper() | ||
myRes := e.GetImplicitPermissionsForUser(name) | ||
t.Log("Implicit permissions for ", name, ": ", myRes) | ||
|
||
if !util.Array2DEquals(res, myRes) { | ||
t.Error("Implicit permissions for ", name, ": ", myRes, ", supposed to be ", res) | ||
} | ||
} | ||
|
||
//func TestImplicitPermissionAPI(t *testing.T) { | ||
// e := NewEnforcer("examples/rbac_model.conf", "examples/rbac_with_hierarchy_policy.csv") | ||
// | ||
// testGetPermissions(t, e, "alice", [][]string{{"alice", "data1", "read"}}) | ||
// testGetPermissions(t, e, "bob", [][]string{{"bob", "data2", "write"}}) | ||
// | ||
// testGetImplicitPermissions(t, e, "alice", [][]string{{"alice", "data1", "read"}, {"data1_admin", "data1", "read"}, {"data1_admin", "data1", "write"}, {"data2_admin", "data2", "read"}, {"data2_admin", "data2", "write"}}) | ||
// testGetImplicitPermissions(t, e, "bob", [][]string{{"bob", "data2", "write"}}) | ||
//} |
Oops, something went wrong.