in hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/core/AuthTest.java [931:1059]
public void testCreateAccess() {
HugeGraph graph = graph();
AuthManager authManager = graph.authManager();
Id group1 = authManager.createGroup(makeGroup("group1"));
Id group2 = authManager.createGroup(makeGroup("group2"));
Id target1 = authManager.createTarget(makeTarget("graph1", "url1"));
Id target2 = authManager.createTarget(makeTarget("graph2", "url2"));
Id id1 = authManager.createAccess(makeAccess(group1, target1,
HugePermission.READ));
Id id2 = authManager.createAccess(makeAccess(group1, target1,
HugePermission.WRITE));
Id id3 = authManager.createAccess(makeAccess(group1, target2,
HugePermission.READ));
Id id4 = authManager.createAccess(makeAccess(group2, target2,
HugePermission.READ));
HugeAccess access = authManager.getAccess(id1);
Assert.assertEquals(group1, access.source());
Assert.assertEquals(target1, access.target());
Assert.assertEquals(HugePermission.READ, access.permission());
Assert.assertEquals(access.create(), access.update());
Map<String, Object> expected = new HashMap<>();
expected.putAll(ImmutableMap.of("id", access.id(),
"group", group1,
"target", target1,
"access_permission",
HugePermission.READ,
"access_creator", "admin"));
expected.putAll(ImmutableMap.of("access_create", access.create(),
"access_update", access.update()));
Assert.assertEquals(expected, access.asMap());
access = authManager.getAccess(id2);
Assert.assertEquals(group1, access.source());
Assert.assertEquals(target1, access.target());
Assert.assertEquals(HugePermission.WRITE, access.permission());
Assert.assertEquals(access.create(), access.update());
expected = new HashMap<>();
expected.putAll(ImmutableMap.of("id", access.id(),
"group", group1,
"target", target1,
"access_permission",
HugePermission.WRITE,
"access_creator", "admin"));
expected.putAll(ImmutableMap.of("access_create", access.create(),
"access_update", access.update()));
Assert.assertEquals(expected, access.asMap());
access = authManager.getAccess(id3);
Assert.assertEquals(group1, access.source());
Assert.assertEquals(target2, access.target());
Assert.assertEquals(HugePermission.READ, access.permission());
Assert.assertEquals(access.create(), access.update());
expected = new HashMap<>();
expected.putAll(ImmutableMap.of("id", access.id(),
"group", group1,
"target", target2,
"access_permission",
HugePermission.READ,
"access_creator", "admin"));
expected.putAll(ImmutableMap.of("access_create", access.create(),
"access_update", access.update()));
Assert.assertEquals(expected, access.asMap());
access = authManager.getAccess(id4);
Assert.assertEquals(group2, access.source());
Assert.assertEquals(target2, access.target());
Assert.assertEquals(HugePermission.READ, access.permission());
Assert.assertEquals(access.create(), access.update());
expected = new HashMap<>();
expected.putAll(ImmutableMap.of("id", access.id(),
"group", group2,
"target", target2,
"access_permission",
HugePermission.READ,
"access_creator", "admin"));
expected.putAll(ImmutableMap.of("access_create", access.create(),
"access_update", access.update()));
Assert.assertEquals(expected, access.asMap());
List<HugeAccess> accesses = authManager.listAccessByGroup(group1, -1);
Assert.assertEquals(3, accesses.size());
accesses = authManager.listAccessByGroup(group2, -1);
Assert.assertEquals(1, accesses.size());
accesses = authManager.listAccessByTarget(target1, -1);
Assert.assertEquals(2, accesses.size());
accesses = authManager.listAccessByTarget(target2, -1);
Assert.assertEquals(2, accesses.size());
// Create access with description
access = makeAccess(group2, target2, HugePermission.WRITE);
access.description("something3");
Id id5 = authManager.createAccess(access);
access = authManager.getAccess(id5);
Assert.assertEquals(group2, access.source());
Assert.assertEquals(target2, access.target());
Assert.assertEquals(HugePermission.WRITE, access.permission());
Assert.assertEquals("something3", access.description());
Assert.assertEquals(access.create(), access.update());
expected = new HashMap<>();
expected.putAll(ImmutableMap.of("id", access.id(),
"group", group2,
"target", target2,
"access_permission",
HugePermission.WRITE,
"access_creator", "admin"));
expected.putAll(ImmutableMap.of("access_description", "something3",
"access_create", access.create(),
"access_update", access.update()));
Assert.assertEquals(expected, access.asMap());
Assert.assertThrows(IllegalArgumentException.class, () -> {
authManager.createAccess(makeAccess(group1, target1,
HugePermission.READ));
}, e -> {
Assert.assertContains("Can't save access", e.getMessage());
Assert.assertContains("that already exists", e.getMessage());
});
}