@Test( expected = IllegalArgumentException.class ) public void shouldNotRemoveProjectionUsingRootPath() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "federated1"); federationManager.removeProjection("/"); }
@Test( expected = RepositoryException.class ) public void shouldNotAllowWritesIfReadonly() throws Exception { federationManager.createProjection("/testRoot", "mock-source-readonly", MockConnector.DOC1_LOCATION, "federated1"); Node doc1Federated = session.getNode("/testRoot/federated1"); Node externalNode1 = doc1Federated.addNode("federated1_1", null); externalNode1.addNode("federated1_1_1", null); session.save(); }
public void create( Node parentNode, String childName ) throws RepositoryException { Session session = (Session)parentNode.getSession(); FederationManager fedMgr = session.getWorkspace().getFederationManager(); fedMgr.createProjection(parentNode.getPath(), getName(), "/", childName); }
@Test( expected = PathNotFoundException.class ) public void shouldNotRemoveProjectionIfPathInvalid() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "federated1"); federationManager.removeProjection("/testRoot/federated"); }
@Test @FixFor( "MODE-1976" ) public void shouldAllowCopyWithinSameSource() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "fed1"); federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "fed2"); jcrSession().getWorkspace().copy("/testRoot/fed1", "/testRoot/fed2/fed1"); assertNodeFound("/testRoot/fed2/fed1"); assertNodeFound("/testRoot/fed2/federated3"); }
@Test public void removeProjectionViaFederationManagerShouldNotDeleteExternalNode() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "projection1"); federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "projection2"); federationManager.removeProjection("/testRoot/projection1"); assertNodeFound("/testRoot/projection2/federated3"); }
@Test public void removingProjectionViaNodeRemoveShouldDeleteExternalNodes() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "projection1"); federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "projection2"); Node projection1 = assertNodeFound("/testRoot/projection1/federated3"); assertNodeFound("/testRoot/projection2/federated3"); projection1.remove(); session.save(); assertNodeNotFound("/testRoot/projection2/federated3"); }
@Test public void shouldRemoveProjectionViaFederationManager() throws Exception { testRoot.addNode("child1"); session.save(); federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "federated1"); federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "federated2"); federationManager.removeProjection("/testRoot/federated2"); assertNodeFound("/testRoot/federated1"); assertNodeFound("/testRoot/child1"); assertNodeNotFound("/testRoot/federated2"); federationManager.removeProjection("/testRoot/federated1"); assertNodeNotFound("/testRoot/federation1"); assertNodeFound("/testRoot/child1"); }
@Test public void shouldReorderExternalNodes() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "federated1"); Node doc1Federated = session.getNode("/testRoot/federated1"); Node parent1 = doc1Federated.addNode("parent1", null); parent1.addNode("child1"); parent1.addNode("child2"); parent1.addNode("child3"); session.save(); assertExternalNodeHasChildren("/testRoot/federated1/parent1", "child1", "child2", "child3"); parent1.orderBefore("child1", "child2"); session.save(); assertExternalNodeHasChildren("/testRoot/federated1/parent1", "child2", "child1", "child3"); }
@Test @FixFor( "MODE-1977" ) public void shouldNotAllowMoveIfSourceAndTargetBelongToDifferentSources() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "fed1"); federationManager.createProjection("/testRoot", "mock-source-non-queryable", MockConnector.DOC2_LOCATION, "fed2"); try { session.move("/testRoot/fed1", "/testRoot/fed2"); fail("Should not allow move if source and target don't belong to the same source"); } catch (RepositoryException e) { // expected if (print) { e.printStackTrace(); } } }
@BeforeClass public static void beforeAll() throws Exception { loadGitRepositoryData(); RepositoryConfiguration config = RepositoryConfiguration.read("config/repo-config-git-federation.json"); startRepository(config); Session session = getSession(); Node testRoot = session.getRootNode().addNode("repos"); session.save(); FederationManager fedMgr = session.getWorkspace().getFederationManager(); fedMgr.createProjection(testRoot.getPath(), "remote-git-repo", "/", "git-modeshape-remote"); fedMgr.createProjection(testRoot.getPath(), "local-git-repo", "/", "git-modeshape-local"); }
@Test public void shouldRemoveExternalNode() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "federated1"); Node doc1Federated = session.getNode("/testRoot/federated1"); doc1Federated.addNode("federated1_1", null); session.save(); Node externalNode = session.getNode("/testRoot/federated1/federated1_1"); externalNode.remove(); session.save(); assertNodeNotFound("/testRoot/federated1/federated1_1"); }
@Test @FixFor( "MODE-1977" ) public void shouldAllowMoveIfSourceIsNotFederatedAndTargetIsNotFederated() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "fed1"); ((Node)session.getRootNode()).addNode("testRoot2").addNode("a"); session.save(); session.move("/testRoot2", "/testRoot"); session.save(); assertNodeFound("/testRoot[1]/fed1"); assertNodeFound("/testRoot[2]/a"); }
@Test public void shouldCreateProjectionWithoutAlias() throws Exception { // link the first external document federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, null); assertEquals(1, testRoot.getNodes().getSize()); Node doc1Federated = assertNodeFound("/testRoot" + MockConnector.DOC1_LOCATION); assertEquals(testRoot.getIdentifier(), doc1Federated.getParent().getIdentifier()); assertEquals("a string", doc1Federated.getProperty("federated1_prop1").getString()); assertEquals(12, doc1Federated.getProperty("federated1_prop2").getLong()); }
@Test @FixFor( "MODE-1977" ) public void shouldAllowMoveWithSameSource() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "fed1"); ((Node)session.getNode("/testRoot/fed1")).addNode("federated1"); session.save(); assertNodeFound("/testRoot/fed1/federated1"); federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "fed2"); assertNodeFound("/testRoot/fed2/federated3"); session.move("/testRoot/fed1/federated1", "/testRoot/fed2/federated3"); session.save(); assertNodeFound("/testRoot/fed2/federated3[1]"); assertNodeFound("/testRoot/fed2/federated3[2]"); assertNodeNotFound("/testRoot/fed1/federated1"); }
@BeforeClass public static void beforeAll() throws Exception { initTestDatabase(); RepositoryConfiguration config = RepositoryConfiguration.read("config/repo-config-jdbc-meta-federation.json"); startRepository(config); Session session = getSession(); Node testRoot = session.getRootNode().addNode("testRoot"); session.save(); FederationManager fedMgr = session.getWorkspace().getFederationManager(); fedMgr.createProjection(testRoot.getPath(), "jdbc-meta", "/", "database"); }
@Test public void shouldRemoveProjectionViaNodeRemove() throws Exception { testRoot.addNode("child1"); session.save(); federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "federated1"); federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "federated2"); Node projection = session.getNode("/testRoot/federated1"); projection.remove(); session.save(); assertNodeNotFound("/testRoot/federated1"); assertNodeFound("/testRoot/federated2"); assertNodeFound("/testRoot/child1"); projection = session.getNode("/testRoot/federated2"); projection.remove(); session.save(); assertNodeNotFound("/testRoot/federated2"); assertNodeFound("/testRoot/child1"); }
@Test public void shouldNotAllowACLsOnExternalNodes() throws Exception { AccessControlManager acm = session.getAccessControlManager(); federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "fed1"); session.getNode("/testRoot/fed1"); AccessControlList acl = acl("/testRoot/fed1"); try { acm.setPolicy("/testRoot/fed1", acl); fail("Should not allow ACLs on external nodes"); } catch (RepositoryException e) { // expected } }
@Test(expected = ConstraintViolationException.class) @FixFor( "MODE-2109" ) public void shouldNotAllowProjections() throws Exception { session.getRootNode().addNode("col", "test:smallCollection"); session.save(); session.getWorkspace().getFederationManager().createProjection("/col", "dummy", "/", "dummy"); }
@Test public void shouldValidatePermissionsForReadonlyProjections() throws Exception { federationManager.createProjection("/testRoot", "mock-source-readonly", MockConnector.DOC1_LOCATION, "fed1"); federationManager.createProjection("/testRoot", "mock-source-readonly", MockConnector.DOC2_LOCATION, "fed2"); assertPermission(true, "/testRoot", ModeShapePermissions.ADD_NODE); assertPermission(true, "/testRoot", ModeShapePermissions.ADD_NODE, ModeShapePermissions.READ); assertPermission(true, "/testRoot", ModeShapePermissions.READ); assertPermission(false, "/testRoot/fed1", ModeShapePermissions.ADD_NODE); assertPermission(false, "/testRoot/fed1", ModeShapePermissions.ADD_NODE, ModeShapePermissions.READ); assertPermission(true, "/testRoot/fed1", ModeShapePermissions.READ); assertPermission(true, "/testRoot/fed1", ModeShapePermissions.INDEX_WORKSPACE); assertPermission(true, "/testRoot/fed1", ModeShapePermissions.INDEX_WORKSPACE, ModeShapePermissions.READ); assertPermission(false, "/testRoot/fed2", ModeShapePermissions.ADD_NODE); assertPermission(false, "/testRoot/fed2", ModeShapePermissions.ADD_NODE, ModeShapePermissions.READ); assertPermission(true, "/testRoot/fed2", ModeShapePermissions.READ); assertPermission(true, "/testRoot/fed2", ModeShapePermissions.INDEX_WORKSPACE); assertPermission(true, "/testRoot/fed2", ModeShapePermissions.INDEX_WORKSPACE, ModeShapePermissions.READ); assertPermission(false, "/testRoot/fed2/federated3", ModeShapePermissions.ADD_NODE); assertPermission(false, "/testRoot/fed2/federated3", ModeShapePermissions.ADD_NODE, ModeShapePermissions.READ); assertPermission(true, "/testRoot/fed2/federated3", ModeShapePermissions.READ); assertPermission(true, "/testRoot/fed2/federated3", ModeShapePermissions.INDEX_WORKSPACE); assertPermission(true, "/testRoot/fed2/federated3", ModeShapePermissions.INDEX_WORKSPACE, ModeShapePermissions.READ); }