From fa1818c5fae12f56226d8132f53df8aa1f83a142 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 2 Sep 2010 20:46:39 +0000 Subject: [PATCH] Start on Replication Service JS API unit tests (more still to test though) - ALF-4505 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@22208 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/replication-services-context.xml | 3 +- .../repo/jscript/ScriptTestUtils.java | 7 +- .../ReplicationServiceIntegrationTest.java | 38 +++++++++++ .../script/ScriptReplicationDefinition.java | 3 +- .../script/test_replicationService.js | 66 +++++++++++++++++++ 5 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 source/java/org/alfresco/repo/replication/script/test_replicationService.js diff --git a/config/alfresco/replication-services-context.xml b/config/alfresco/replication-services-context.xml index 07cc5b86c2..f1913222d4 100644 --- a/config/alfresco/replication-services-context.xml +++ b/config/alfresco/replication-services-context.xml @@ -77,14 +77,13 @@ - diff --git a/source/java/org/alfresco/repo/jscript/ScriptTestUtils.java b/source/java/org/alfresco/repo/jscript/ScriptTestUtils.java index 5a9f810038..3c8a08f4fe 100644 --- a/source/java/org/alfresco/repo/jscript/ScriptTestUtils.java +++ b/source/java/org/alfresco/repo/jscript/ScriptTestUtils.java @@ -33,7 +33,12 @@ public class ScriptTestUtils extends BaseScopableProcessorExtension public void assertEquals(Object expected, Object value, String message) { - if (expected.equals(value) == false) + if (expected == null && value == null) + { + return; + } + + if ((expected == null && value != null) || expected.equals(value) == false) { if (message == null) { diff --git a/source/java/org/alfresco/repo/replication/ReplicationServiceIntegrationTest.java b/source/java/org/alfresco/repo/replication/ReplicationServiceIntegrationTest.java index 3527cdf516..afe5882ca0 100644 --- a/source/java/org/alfresco/repo/replication/ReplicationServiceIntegrationTest.java +++ b/source/java/org/alfresco/repo/replication/ReplicationServiceIntegrationTest.java @@ -33,8 +33,10 @@ import junit.framework.TestCase; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.ActionImpl; +import org.alfresco.repo.jscript.ClasspathScriptLocation; import org.alfresco.repo.lock.JobLockService; import org.alfresco.repo.model.Repository; +import org.alfresco.repo.replication.script.ScriptReplicationDefinition; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.repo.transfer.TransferServiceImpl; @@ -42,6 +44,7 @@ import org.alfresco.repo.transfer.TransferTransmitter; import org.alfresco.repo.transfer.UnitTestInProcessTransmitterImpl; import org.alfresco.repo.transfer.UnitTestTransferManifestNodeFactory; import org.alfresco.repo.transfer.manifest.TransferManifestNodeFactory; +import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.action.ActionService; import org.alfresco.service.cmr.action.ActionStatus; import org.alfresco.service.cmr.action.ActionTrackingService; @@ -58,6 +61,8 @@ import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.Path; +import org.alfresco.service.cmr.repository.ScriptLocation; +import org.alfresco.service.cmr.repository.ScriptService; import org.alfresco.service.cmr.transfer.TransferDefinition; import org.alfresco.service.cmr.transfer.TransferException; import org.alfresco.service.cmr.transfer.TransferReceiver; @@ -88,6 +93,7 @@ public class ReplicationServiceIntegrationTest extends TestCase private TransferService transferService; private ContentService contentService; private JobLockService jobLockService; + private ScriptService scriptService; private ActionService actionService; private NodeService nodeService; private LockService lockService; @@ -127,6 +133,7 @@ public class ReplicationServiceIntegrationTest extends TestCase contentService = (ContentService) ctx.getBean("contentService"); jobLockService = (JobLockService) ctx.getBean("jobLockService"); actionService = (ActionService) ctx.getBean("actionService"); + scriptService = (ScriptService)ctx.getBean("scriptService"); nodeService = (NodeService) ctx.getBean("nodeService"); lockService = (LockService) ctx.getBean("lockService"); repositoryHelper = (Repository) ctx.getBean("repositoryHelper"); @@ -1135,6 +1142,37 @@ public class ReplicationServiceIntegrationTest extends TestCase assertEquals(ActionStatus.Failed, rd.getExecutionStatus()); } + public void DISABLEDtestJavascriptAPI() throws Exception + { + ServiceRegistry serviceRegistry = (ServiceRegistry)ctx.getBean("ServiceRegistry"); + + // Setup some replication tasks + ReplicationDefinition empty = replicationService.createReplicationDefinition(ACTION_NAME, "Empty"); + + ReplicationDefinition persisted = replicationService.createReplicationDefinition(ACTION_NAME2, "Persisted"); + persisted.setTargetName(TRANSFER_TARGET); + persisted.getPayload().add( + new NodeRef("workspace://SpacesStore/Testing") + ); + persisted.getPayload().add( + new NodeRef("workspace://SpacesStore/Testing2") + ); + replicationService.saveReplicationDefinition(persisted); + + // Call the test + Map model = new HashMap(); + model.put("Empty", new ScriptReplicationDefinition(serviceRegistry, replicationService, null, empty)); + model.put("EmptyName", ACTION_NAME); + model.put("Persisted", new ScriptReplicationDefinition(serviceRegistry, replicationService, null, persisted)); + model.put("PersistedName", ACTION_NAME2); + model.put("PersistedNodeRef", persisted.getNodeRef()); + + ScriptLocation location = new ClasspathScriptLocation("org/alfresco/repo/replication/script/test_replicationService.js"); + this.scriptService.executeScript(location, model); + } + + // ============================================= + private NodeRef makeNode(NodeRef parent, QName nodeType) { diff --git a/source/java/org/alfresco/repo/replication/script/ScriptReplicationDefinition.java b/source/java/org/alfresco/repo/replication/script/ScriptReplicationDefinition.java index 1121112219..b97cc2cff6 100644 --- a/source/java/org/alfresco/repo/replication/script/ScriptReplicationDefinition.java +++ b/source/java/org/alfresco/repo/replication/script/ScriptReplicationDefinition.java @@ -24,7 +24,6 @@ import org.alfresco.repo.jscript.ScriptAction; import org.alfresco.repo.jscript.ScriptNode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.action.Action; -import org.alfresco.service.cmr.action.ActionDefinition; import org.alfresco.service.cmr.replication.ReplicationDefinition; import org.alfresco.service.cmr.replication.ReplicationService; import org.alfresco.service.cmr.repository.NodeRef; @@ -46,7 +45,7 @@ public final class ScriptReplicationDefinition extends ScriptAction public ScriptReplicationDefinition(ServiceRegistry serviceRegistry, ReplicationService replicationService, Scriptable scope, ReplicationDefinition replicationDefinition) { - super(serviceRegistry, (Action)replicationDefinition, (ActionDefinition)replicationDefinition); + super(serviceRegistry, (Action)replicationDefinition, null); this.replicationService = replicationService; } diff --git a/source/java/org/alfresco/repo/replication/script/test_replicationService.js b/source/java/org/alfresco/repo/replication/script/test_replicationService.js new file mode 100644 index 0000000000..16dae7dc0e --- /dev/null +++ b/source/java/org/alfresco/repo/replication/script/test_replicationService.js @@ -0,0 +1,66 @@ +// Test that we can work with the definition properly +function testReplicationDefinition() +{ + // Check the empty one + test.assertEquals(EmptyName, Empty.replicationName); + test.assertEquals("Empty", Empty.description); + test.assertEquals(null, Empty.targetName); + test.assertEquals(0, Empty.payload.length); + + // Check the persisted one + test.assertEquals(PersistedName, Persisted.replicationName); + test.assertEquals("Persisted", Persisted.description); + test.assertEquals("TestTransferTarget", Persisted.targetName); + test.assertEquals(2, Persisted.payload.length); + + test.assertEquals("workspace://SpacesStore/Testing", Persisted.payload[0].nodeRef.toString()) + test.assertEquals("workspace://SpacesStore/Testing2", Persisted.payload[1].nodeRef.toString()) +} + +// Test listing +function testListing() +{ + // TODO +} + +// Test creating and saving +function testCreateSave() +{ + // Create + var definition = replicationService.createReplicationDefinition("JS","From JS"); + test.assertEquals("JS", definition.replicationName); + test.assertEquals("From JS", definition.description); + test.assertEquals(null, definition.targetName); + test.assertEquals(0, definition.payload.length); + + // Set some bits + definition.targetName = "TargetTarget"; + nodes = [ + Persisted.payload[0], Persisted.payload[1] + ] + definition.payload = nodes + + // Save + + // Load and re-check + definition = replicationService.loadReplicationDefinition("JS"); + test.assertEquals("JS", definition.replicationName); + test.assertEquals("From JS", definition.description); + test.assertEquals("TargetTarget", definition.targetName); + test.assertEquals(2, definition.payload.length); + + test.assertEquals("workspace://SpacesStore/Testing", definition.payload[0].nodeRef.toString()) + test.assertEquals("workspace://SpacesStore/Testing2", definition.payload[1].nodeRef.toString()) +} + +// Tests running (without a full definition) +function testRunReplication() +{ + // TODO +} + +// Execute Tests +testReplicationDefinition(); +testListing(); +testCreateSave(); +testRunReplication(); \ No newline at end of file