Author: andrew.plotnikov
Date: 2012-01-10 09:36:40 -0500 (Tue, 10 Jan 2012)
New Revision: 5434
Modified:
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/reading/TestWorkspace.java
Log:
EXOJCR-1703: Writed tests to class WorkspaceImpl
Modified:
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/reading/TestWorkspace.java
===================================================================
---
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/reading/TestWorkspace.java 2012-01-10
13:39:25 UTC (rev 5433)
+++
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/reading/TestWorkspace.java 2012-01-10
14:36:40 UTC (rev 5434)
@@ -19,7 +19,27 @@
package org.exoplatform.services.jcr.api.reading;
import org.exoplatform.services.jcr.JcrAPIBaseTest;
+import org.exoplatform.services.jcr.core.CredentialsImpl;
+import org.exoplatform.services.jcr.impl.core.WorkspaceImpl;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.jcr.ImportUUIDBehavior;
+import javax.jcr.ItemExistsException;
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.version.Version;
+import javax.jcr.version.VersionException;
+
/**
* Created by The eXo Platform SAS.
*
@@ -61,4 +81,228 @@
assertNotNull(workspace.getAccessibleWorkspaceNames());
}
+ public void testCannotGetImportContentHandlerWhenNodeIsProtected() throws
ItemExistsException,
+ PathNotFoundException, NoSuchNodeTypeException, LockException, VersionException,
ConstraintViolationException,
+ RepositoryException
+ {
+ workspace.getSession().getRootNode().addNode("someNode",
"exo:myTypeJCR1703");
+
+ try
+ {
+ workspace.getImportContentHandler("/someNode/exo:myChildNode", 0);
+ fail();
+ }
+ catch (ConstraintViolationException e)
+ {
+ }
+ }
+
+ public void testCannotGetImportContentHandlerWhenNodeIsLocked() throws
ItemExistsException, PathNotFoundException,
+ VersionException, ConstraintViolationException, RepositoryException
+ {
+ Node someNode =
workspace.getSession().getRootNode().addNode("someNode");
+ someNode.addMixin("mix:lockable");
+ session.save();
+
+ someNode.lock(true, false);
+
+ Session session2 =
+ repository.login(new CredentialsImpl("admin",
"admin".toCharArray()), session.getWorkspace().getName());
+
+ try
+ {
+ session2.getWorkspace().getImportContentHandler("/someNode", 0);
+ fail();
+ }
+ catch (LockException e)
+ {
+ }
+ finally
+ {
+ session2.logout();
+ someNode.unlock();
+ }
+ }
+
+ public void testImportXML() throws ItemExistsException, PathNotFoundException,
VersionException,
+ ConstraintViolationException, LockException, RepositoryException, IOException
+ {
+ Node folder = root.addNode("folder");
+ Node file = folder.addNode("file");
+ session.save();
+
+ File destFile = File.createTempFile("testExportImportValuesSysView",
".xml");
+ destFile.deleteOnExit();
+ OutputStream outStream = new FileOutputStream(destFile);
+ session.exportSystemView(file.getPath(), outStream, false, false);
+ outStream.close();
+
+ folder.remove();
+ session.save();
+
+ ((WorkspaceImpl)workspace).importXML(root.getPath(), new
FileInputStream(destFile),
+ ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW, false);
+
+ session.save();
+
+ assertNotNull(root.getNode("file"));
+ }
+
+ public void testImportXMLInProtectedNode() throws ItemExistsException,
PathNotFoundException, VersionException,
+ ConstraintViolationException, LockException, RepositoryException, IOException
+ {
+ Node folder = workspace.getSession().getRootNode().addNode("folder");
+ Node file = folder.addNode("file");
+ Node protectedNode = folder.addNode("someNode",
"exo:myTypeJCR1703").getNode("exo:myChildNode");
+ session.save();
+
+ File destFile = File.createTempFile("testExportImportValuesSysView",
".xml");
+ destFile.deleteOnExit();
+ OutputStream outStream = new FileOutputStream(destFile);
+ session.exportSystemView(file.getPath(), outStream, false, false);
+ outStream.close();
+ file.remove();
+ session.save();
+
+ try
+ {
+ ((WorkspaceImpl)workspace).importXML(protectedNode.getPath(), new
FileInputStream(destFile),
+ ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW, false);
+ fail();
+ }
+ catch (ConstraintViolationException e)
+ {
+ }
+ }
+
+ public void testImportXMLInLockedNode() throws ItemExistsException,
PathNotFoundException, VersionException,
+ ConstraintViolationException, LockException, RepositoryException, IOException
+ {
+ Node folder = workspace.getSession().getRootNode().addNode("folder");
+ Node file = folder.addNode("file");
+ Node lockedNode = folder.addNode("someNode");
+ lockedNode.addMixin("mix:lockable");
+ session.save();
+
+ lockedNode.lock(true, false);
+
+ File destFile = File.createTempFile("testExportImportValuesSysView",
".xml");
+ destFile.deleteOnExit();
+ OutputStream outStream = new FileOutputStream(destFile);
+ session.exportSystemView(file.getPath(), outStream, false, false);
+ outStream.close();
+ file.remove();
+ session.save();
+
+ Session session2 =
+ repository.login(new CredentialsImpl("admin",
"admin".toCharArray()), session.getWorkspace().getName());
+
+ try
+ {
+ ((WorkspaceImpl)session2.getWorkspace()).importXML(lockedNode.getPath(), new
FileInputStream(destFile),
+ ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW, false);
+ fail();
+ }
+ catch (LockException e)
+ {
+ }
+ finally
+ {
+ session2.logout();
+ lockedNode.unlock();
+ }
+ }
+
+ public void testMoveNodeWhenParentNodeIsLocked() throws ItemExistsException,
PathNotFoundException,
+ VersionException, ConstraintViolationException, LockException, RepositoryException
+ {
+ Node folder = workspace.getSession().getRootNode().addNode("folder");
+ Node file = folder.addNode("file");
+ Node lockedNode = folder.addNode("someNode");
+ lockedNode.addMixin("mix:lockable");
+ session.save();
+
+ lockedNode.lock(true, false);
+
+ Session session2 =
+ repository.login(new CredentialsImpl("admin",
"admin".toCharArray()), session.getWorkspace().getName());
+
+ try
+ {
+ ((WorkspaceImpl)session2.getWorkspace()).move(lockedNode.getPath(),
file.getPath());
+ }
+ catch (LockException e)
+ {
+ }
+ }
+
+ public void testCloneNodeWhenClonedInTheSameNode() throws ItemExistsException,
PathNotFoundException,
+ VersionException, ConstraintViolationException, LockException, RepositoryException
+ {
+ Node testNode =
workspace.getSession().getRootNode().addNode("testNode");
+ session.save();
+
+ try
+ {
+ ((WorkspaceImpl)workspace).clone(workspace.getName(), testNode.getPath(),
testNode.getPath(), false);
+ }
+ catch (RepositoryException e)
+ {
+ }
+ }
+
+ public void testResotoreVersionWhenArrayVersionsHaventSomeVersion() throws
ItemExistsException,
+ PathNotFoundException, VersionException, ConstraintViolationException,
LockException, RepositoryException
+ {
+ Node nodeA =
workspace.getSession().getRootNode().addNode("versionableNodeA");
+ nodeA.addMixin("mix:versionable");
+ root.save();
+ nodeA.checkin();// v.1
+ nodeA.checkout();
+
+ Node nodeB = nodeA.addNode("Subnode B");
+ nodeA.save();
+ nodeB.addMixin("mix:versionable");
+ nodeA.save();
+ nodeB.checkin();
+
+ Node nodeC = nodeA.addNode("Subnode C");
+ nodeA.save();
+ nodeC.addMixin("mix:versionable");
+ nodeA.save();
+ nodeC.checkin();
+ nodeC.checkout();
+ nodeC.setProperty("Property Y", nodeB);
+ nodeC.save();
+ Version vC = nodeC.checkin();
+ nodeC.checkout();
+
+ nodeB.checkout();
+ nodeB.setProperty("Property X", nodeC);
+ nodeB.save();
+ Version vB = nodeB.checkin();
+ nodeB.checkout();
+
+ nodeA.setProperty("Property", "property of subnode");
+ nodeA.save();
+ Version vA = nodeA.checkin();
+ nodeA.checkout();
+
+ nodeB.remove();
+ nodeC.remove();
+ nodeA.save();
+
+ session.save();
+
+ Version[] vs = new Version[]{vB, vC};
+
+ try
+ {
+ ((WorkspaceImpl)session.getWorkspace()).restore(vs, true);
+ fail();
+ }
+ catch (VersionException e)
+ {
+ }
+ }
}