MCPcopy Index your code
hub / github.com/apache/casbin / TestCasbinJsGetPermissionForUser

Function TestCasbinJsGetPermissionForUser

frontend_test.go:25–66  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

23)
24
25func TestCasbinJsGetPermissionForUser(t *testing.T) {
26 e, err := NewSyncedEnforcer("examples/rbac_model.conf", "examples/rbac_with_hierarchy_policy.csv")
27 if err != nil {
28 panic(err)
29 }
30 receivedString, err := CasbinJsGetPermissionForUser(e, "alice") // make sure CasbinJsGetPermissionForUser can be used with a SyncedEnforcer.
31 if err != nil {
32 t.Errorf("Test error: %s", err)
33 }
34 received := map[string]interface{}{}
35 err = json.Unmarshal([]byte(receivedString), &received)
36 if err != nil {
37 t.Errorf("Test error: %s", err)
38 }
39 expectedModel, err := ioutil.ReadFile("examples/rbac_model.conf")
40 if err != nil {
41 t.Errorf("Test error: %s", err)
42 }
43 // Normalize line endings to \n for cross-platform compatibility
44 expectedModelStr := regexp.MustCompile("(\r?\n)+").ReplaceAllString(string(expectedModel), "\n")
45 actualModelStr := strings.TrimSpace(received["m"].(string))
46 expectedModelStr = strings.TrimSpace(expectedModelStr)
47
48 if actualModelStr != expectedModelStr {
49 t.Errorf("%s supposed to be %s", actualModelStr, expectedModelStr)
50 }
51
52 expectedPolicies, err := ioutil.ReadFile("examples/rbac_with_hierarchy_policy.csv")
53 if err != nil {
54 t.Errorf("Test error: %s", err)
55 }
56 expectedPoliciesItem := regexp.MustCompile(",|\n").Split(string(expectedPolicies), -1)
57 i := 0
58 for _, sArr := range received["p"].([]interface{}) {
59 for _, s := range sArr.([]interface{}) {
60 if strings.TrimSpace(s.(string)) != strings.TrimSpace(expectedPoliciesItem[i]) {
61 t.Errorf("%s supposed to be %s", strings.TrimSpace(s.(string)), strings.TrimSpace(expectedPoliciesItem[i]))
62 }
63 i++
64 }
65 }
66}

Callers

nothing calls this directly

Calls 2

NewSyncedEnforcerFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…