blob: 42c0085042f7ebfa4981877d1c9eaf045a700d82 [file] [log] [blame]
package org.casbin;
import org.assertj.core.api.Assert;
import org.casbin.jcasbin.main.Enforcer;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* @author fangzhengjin
* @version V1.0
* @title: EnforcerTest
* @package org.casbin
* @description:
* @date 2019-4-06 17:31
*/
@SpringBootTest
@ExtendWith(SpringExtension.class)
class EnforcerTest {
@Autowired
private Enforcer enforcer;
@Test
void test1() {
enforcer.clearPolicy();
// user rights
enforcer.addPolicy("alice", "data1", "read");
enforcer.addPolicy("bob", "data2", "write");
// role Permissions
enforcer.addPolicy("data2_admin", "data2", "read");
enforcer.addPolicy("data2_admin", "data2", "write");
// grant alice the permissions owned by data2_admin
enforcer.addGroupingPolicy("alice", "data2_admin");
// Does bob have read access to data1? It must not be.
assertFalse(enforcer.enforce("bob", "data1", "read"));
// Whether alice has read and write access to data2, it must be possible, otherwise, why is authorization used?
assertTrue(enforcer.enforce("alice", "data2", "read"));
assertTrue(enforcer.enforce("alice", "data2", "write"));
// repeat adding P strategy
enforcer.addPolicy("data2_admin", "data2", "write");
enforcer.addPolicy("data2_admin", "data2", "write");
enforcer.addPolicy("data2_admin", "data2", "write");
// complete storage, built-in duplicate item filtering
enforcer.savePolicy();
// verify that duplicates are merged
assertEquals(4, enforcer.getNamedPolicy("p").size());
}
@Test
void test2() {
enforcer.clearPolicy();
assertFalse(enforcer.enforce("bob", "data1", "read"));
assertFalse(enforcer.enforce("alice", "data2", "read"));
assertFalse(enforcer.enforce("alice", "data2", "write"));
}
}