@Test public void D_testWritePermissions() throws Exception { GraphPermissions perms = gmgr.newGraphPermissions(); perms = perms.permission("read-privileged", Capability.EXECUTE); gmgr.writePermissions(graphUri, perms); GraphPermissions permissions = gmgr.getPermissions(graphUri); assertEquals(5, permissions.size()); assertNotNull(permissions.get("read-privileged")); assertEquals(1, permissions.get("read-privileged").size()); for ( Capability capability : permissions.get("read-privileged") ) { assertEquals(Capability.EXECUTE, capability); } }
private void addPermsParams(RequestParameters params, GraphPermissions permissions) { if ( permissions != null ) { for ( Map.Entry<String,Set<Capability>> entry : permissions.entrySet() ) { if ( entry.getValue() != null ) { for ( Capability capability : entry.getValue() ) { params.add("perm:" + entry.getKey(), capability.toString().toLowerCase()); } } } } }
@Override public GraphPermissions getPermissions(String uri, Transaction transaction) { JsonNode json = services.getPermissions(requestLogger, uri, new JacksonHandle(), transaction).get(); GraphPermissions perms = new GraphPermissionsImpl(); for ( JsonNode permission : json.path("permissions") ) { String role = permission.path("role-name").asText(); Set<Capability> capabilities = new HashSet<>(); for ( JsonNode capability : permission.path("capabilities") ) { String value = capability.asText(); if ( value != null ) { capabilities.add(Capability.valueOf(value.toUpperCase())); } } perms.put(role, capabilities); } return perms; }
@Test public void C_testGetPermissions() throws Exception { GraphManager readPrivilegedGmgr = readPrivilegedClient.newGraphManager(); GraphPermissions permissions = readPrivilegedGmgr.getPermissions(graphUri); assertEquals(6, permissions.size()); assertNotNull(permissions.get("read-privileged")); assertNotNull(permissions.get("write-privileged")); assertEquals(1, permissions.get("read-privileged").size()); assertEquals(1, permissions.get("write-privileged").size()); assertEquals(Capability.READ, permissions.get("read-privileged").iterator().next()); assertEquals(Capability.UPDATE, permissions.get("write-privileged").iterator().next()); }
for (Capability capability : perms.get("test-perm")) { assertTrue("capability should be UPDATE, not [" + capability + "]", capability == Capability.UPDATE); perms = gmTestPerm.permission("test-perm", Capability.EXECUTE).permission("test-perm2", Capability.EXECUTE).permission("test-perm2", Capability.READ); for (Capability capability : perms.get("test-perm")) { assertTrue("capability for role test-perm should be UPDATE && Execute, not [" + capability + "]", capability == Capability.UPDATE || capability == Capability.EXECUTE); for (Capability capability : perms.get("test-perm2")) { assertTrue("capability for role test-perm2 should be EXECUTE && READ, not [" + capability + "]", capability == Capability.READ || capability == Capability.EXECUTE); assertTrue("Did not have expected capabilities", perms.get("test-perm").size() == 2); assertTrue("Did not have expected capabilities", perms.get("test-perm2").size() == 2); for (Capability capability : perms.get("test-perm")) { assertTrue("capability should be READ, not [" + capability + "]", capability == Capability.READ); assertTrue("Did not have expected capabilities", perms.get("test-perm").size() == 1); assertNull(perms.get("test-perm")); assertNull(perms.get("test-perm2"));
Set<Entry<String, Set<Capability>>> setPermissions = readBackPermissions.entrySet(); Iterator<Entry<String, Set<Capability>>> itr = setPermissions.iterator(); String stringPermissions = "size:" + setPermissions.size() + "|"; Set<Entry<String, Set<Capability>>> setPermissionsCopy = graphPermission.entrySet(); Iterator<Entry<String, Set<Capability>>> iPermissionsCopy = setPermissionsCopy.iterator(); String stringPermissionsCopy = "size:" + graphPermission.size() + "|"; while (iPermissionsCopy.hasNext())
@Override public SPARQLQueryDefinition withUpdatePermission(String role, Capability capability) { if ( permissions == null ) { permissions = new GraphPermissionsImpl().permission(role, capability); } else { permissions = permissions.permission(role, capability); } return this; }
@Test public void testWriteRead_defaultGraph() throws FileNotFoundException { File file = new File(datasource + "semantics.trig"); FileHandle filehandle = new FileHandle(); filehandle.set(file); gmWriter.write(gmWriter.DEFAULT_GRAPH, filehandle.withMimetype(RDFMimeTypes.TRIG)); FileHandle handle = gmWriter.read(gmWriter.DEFAULT_GRAPH, new FileHandle()); GraphPermissions permissions = gmWriter.getPermissions(gmWriter.DEFAULT_GRAPH); System.out.println(permissions); assertEquals(Capability.UPDATE, permissions.get("rest-writer").iterator().next()); assertEquals(Capability.READ, permissions.get("rest-reader").iterator().next()); gmWriter.deletePermissions(gmWriter.DEFAULT_GRAPH); permissions = gmWriter.getPermissions(gmWriter.DEFAULT_GRAPH); System.out.println(permissions); assertEquals(Capability.UPDATE, permissions.get("rest-writer").iterator().next()); File readFile = handle.get(); String expectedContent = convertFileToString(readFile); System.out.println(gmWriter.listGraphUris().next().toString()); assertTrue("" + gmWriter.listGraphUris().next().toString(), gmWriter.listGraphUris().next().toString().equals("http://marklogic.com/semantics#default-graph")); assertTrue("Did not insert document or inserted empty doc", expectedContent.contains("http://www.example.org/exampleDocument#Monica")); }
@Test public void E_testMergePermissions() throws Exception { GraphPermissions perms = gmgr.permission("read-privileged", Capability.READ); gmgr.mergePermissions(graphUri, perms); GraphPermissions permissions = gmgr.getPermissions(graphUri); assertEquals(5, permissions.size()); assertNotNull(permissions.get("read-privileged")); assertEquals(2, permissions.get("read-privileged").size()); for ( Capability capability : permissions.get("read-privileged") ) { if ( capability == null ) fail("capability should not be null"); if ( capability != Capability.READ && capability != Capability.EXECUTE ) { fail("capabilities should be read or execute, not [" + capability + "]"); } } }
@BeforeClass public static void beforeClass() { Common.connect(); gmgr = Common.client.newGraphManager(); String triple = "<s> <p> <o>."; GraphPermissions perms = gmgr.permission("read-privileged", Capability.READ) .permission("write-privileged", Capability.UPDATE); gmgr.write(graphUri, new StringHandle(triple).withMimetype(RDFMimeTypes.NTRIPLES), perms); }
assertNull(perm.get("test-perm")); perms = gmTestPerm.getPermissions(uri, trx); assertTrue("Permission within trx should have Update capability", perms.get("test-perm").contains(Capability.UPDATE)); trx.rollback(); trx = null; perms = gmTestPerm.getPermissions(uri); assertNull(perm.get("test-perm")); } catch (Exception e) {
for (Capability capability : perms.get("test-perm")) { assertTrue("capability should be UPDATE, not [" + capability + "]", capability == Capability.UPDATE); for (Capability capability : perms.get("test-perm")) { assertTrue("capability should be UPDATE && Execute, not [" + capability + "]", capability == Capability.UPDATE || capability == Capability.EXECUTE); .println("Permissions after setting execute , Should see Execute & Update" + gmTestPerm.getPermissions(uri, trx)); assertNull(perms.get("test-perm"));
private JacksonHandle generatePermissions(GraphPermissions permissions) { ObjectMapper mapper = new ObjectMapper(); ObjectNode payload = mapper.createObjectNode(); ArrayNode permissionsNode = mapper.createArrayNode(); payload.set("permissions", permissionsNode); for ( Map.Entry<String,Set<Capability>> entry : permissions.entrySet() ) { ObjectNode permissionNode = mapper.createObjectNode(); permissionNode.put("role-name", entry.getKey()); ArrayNode capabilitiesNode = mapper.createArrayNode(); for ( Capability capability : entry.getValue() ) { capabilitiesNode.add(capability.toString().toLowerCase()); } permissionNode.set("capabilities", capabilitiesNode); permissionsNode.add(permissionNode); } return new JacksonHandle(payload); }
@Test public void G_testSPARQLInsertPermissions() throws Exception { String localGraphUri = graphUri + ".SPARQLPermissions"; String sparql = "INSERT DATA { GRAPH <" + localGraphUri + "> { <s2> <p2> <o2> } }"; SPARQLQueryManager sparqlMgr = Common.client.newSPARQLQueryManager(); SPARQLQueryDefinition qdef = sparqlMgr.newQueryDefinition(sparql) .withUpdatePermission("write-privileged", Capability.READ) .withUpdatePermission("write-privileged", Capability.UPDATE); sparqlMgr.executeUpdate(qdef); GraphPermissions getPermissions = gmgr.getPermissions(localGraphUri); assertEquals(5, getPermissions.size()); assertNotNull(getPermissions.get("write-privileged")); assertEquals(2, getPermissions.get("write-privileged").size()); for ( Capability capability : getPermissions.get("write-privileged") ) { if ( capability == null ) fail("capability should not be null"); if ( capability != Capability.READ && capability != Capability.UPDATE ) { fail("capabilities should be read or update, not [" + capability + "]"); } } gmgr.delete(localGraphUri); } }