@Override public void parsePermissions(String str, DocumentPermissions permissions) { if (str != null && str.trim().length() > 0) { String[] tokens = str.split(","); for (int i = 0; i < tokens.length; i += 2) { String role = tokens[i]; String capability = tokens[i + 1]; Capability c = null; if (capability.equals("execute")) { c = Capability.EXECUTE; } else if (capability.equals("insert")) { c = Capability.INSERT; } else if (capability.equals("update")) { c = Capability.UPDATE; } else if (capability.equals("read")) { c = Capability.READ; } if (permissions.containsKey(role)) { permissions.get(role).add(c); } else { permissions.add(role, c); } } } }
protected void adaptPermissions(ContentCreateOptions options, DocumentMetadataHandle metadata) { Set<ContentPermission> contentPermissions = new HashSet<>(); DocumentMetadataHandle.DocumentPermissions permissions = metadata.getPermissions(); for (String role : permissions.keySet()) { for (DocumentMetadataHandle.Capability capability : permissions.get(role)) { ContentCapability contentCapability; if (DocumentMetadataHandle.Capability.EXECUTE.equals(capability)) { contentCapability = ContentCapability.EXECUTE; } else if (DocumentMetadataHandle.Capability.INSERT.equals(capability)) { contentCapability = ContentCapability.INSERT; } else if (DocumentMetadataHandle.Capability.READ.equals(capability)) { contentCapability = ContentCapability.READ; } else if (DocumentMetadataHandle.Capability.UPDATE.equals(capability)) { contentCapability = ContentCapability.UPDATE; } else throw new IllegalArgumentException("Unrecognized permission capability: " + capability); contentPermissions.add(new ContentPermission(contentCapability, role)); } } options.setPermissions(contentPermissions.toArray(new ContentPermission[]{})); } }
assertEquals("Permission key with wrong value size", 2, permissions.get("app-user").size()); assertTrue("Permission key with wrong values", permissions.get("app-user").contains(Capability.READ) && permissions.get("app-user").contains(Capability.UPDATE)); DocumentProperties properties = metaReadHandle.getProperties(); assertTrue("Properties without first property", properties.containsKey("first"));
@Test public void testRunFlowWithBackwards() throws SAXException, IOException, ParserConfigurationException, XMLStreamException { addFinalDocs(); installModules(); assertEquals(0, getStagingDocCount()); assertEquals(2, getFinalDocCount()); getHubFlowRunnerConfig(); Flow flow1 = fm.getFlow("test", "my-test-flow1"); FlowRunner flowRunner = fm.newFlowRunner() .withFlow(flow1) .withBatchSize(10) .withThreadCount(1) .withSourceClient(getHubFlowRunnerConfig().newReverseFlowClient()) .withDestinationDatabase(HubConfig.DEFAULT_STAGING_NAME); flowRunner.run(); flowRunner.awaitCompletion(); getHubAdminConfig(); assertEquals(2, getStagingDocCount()); assertEquals(2, getFinalDocCount()); assertXMLEqual(getXmlFromResource("flow-manager-test/harmonized/harmonized1.xml"), stagingDocMgr.read("/employee1.xml").next().getContent(new DOMHandle()).get() ); assertXMLEqual(getXmlFromResource("flow-manager-test/harmonized/harmonized2.xml"), stagingDocMgr.read("/employee2.xml").next().getContent(new DOMHandle()).get()); DocumentMetadataHandle metadata = stagingDocMgr.readMetadata("/employee1.xml", new DocumentMetadataHandle()); DocumentMetadataHandle.DocumentPermissions permissions = metadata.getPermissions(); assertEquals(permissions.get("harmonized-reader").toString(), "[READ]", "Default permissions on harmonized documents should contain harmonized-reader/read"); assertEquals(permissions.get("harmonized-updater").toString(), "[UPDATE]", "Default permissions on harmonized documents should contain harmonized-updater/update"); }
@Test public void testRunFlow() throws SAXException, IOException, ParserConfigurationException, XMLStreamException { addStagingDocs(); installModules(); assertEquals(2, getStagingDocCount()); assertEquals(0, getFinalDocCount()); getHubFlowRunnerConfig(); Flow flow1 = fm.getFlow("test", "my-test-flow1"); FlowRunner flowRunner = fm.newFlowRunner() .withFlow(flow1) .withBatchSize(10) .withThreadCount(1); flowRunner.run(); flowRunner.awaitCompletion(); getHubAdminConfig(); assertEquals(2, getStagingDocCount()); assertEquals(2, getFinalDocCount()); assertXMLEqual(getXmlFromResource("flow-manager-test/harmonized/harmonized1.xml"), finalDocMgr.read("/employee1.xml").next().getContent(new DOMHandle()).get() ); assertXMLEqual(getXmlFromResource("flow-manager-test/harmonized/harmonized2.xml"), finalDocMgr.read("/employee2.xml").next().getContent(new DOMHandle()).get()); DocumentMetadataHandle metadata = finalDocMgr.readMetadata("/employee1.xml", new DocumentMetadataHandle()); DocumentMetadataHandle.DocumentPermissions permissions = metadata.getPermissions(); assertEquals( permissions.get("harmonized-reader").toString(), "[READ]", "Default permissions on harmonized documents should contain harmonized-reader/read"); assertEquals(permissions.get("harmonized-updater").toString(), "[UPDATE]", "Default permissions on harmonized documents should contain harmonized-updater/update"); }