(t *testing.T)
| 23 | ) |
| 24 | |
| 25 | func 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 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…