From 7ba64704834cf62b42ed7303dc30c8c2824d7c7a Mon Sep 17 00:00:00 2001 From: Neil McErlean Date: Wed, 25 Jul 2012 14:34:42 +0000 Subject: [PATCH] JUnit Rule enhancement. TemporarySites now ensures that sites created in test code have their doclib containers precreated and that this NodeRef is easily available to authors of test code. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@39746 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../util/test/junitrules/TemporarySites.java | 31 ++++++++++++++++--- .../test/junitrules/TemporarySitesTest.java | 9 ++++++ 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/source/java/org/alfresco/util/test/junitrules/TemporarySites.java b/source/java/org/alfresco/util/test/junitrules/TemporarySites.java index 961344d302..eb1ce49471 100644 --- a/source/java/org/alfresco/util/test/junitrules/TemporarySites.java +++ b/source/java/org/alfresco/util/test/junitrules/TemporarySites.java @@ -22,11 +22,13 @@ package org.alfresco.util.test.junitrules; import java.util.ArrayList; import java.util.List; +import org.alfresco.model.ContentModel; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.site.SiteModel; import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; +import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.cmr.site.SiteVisibility; @@ -192,6 +194,23 @@ public class TemporarySites extends AbstractPersonRule AuthenticationUtil.pushAuthentication(); AuthenticationUtil.setFullyAuthenticatedUser(siteCreator); + // ensure that the Document Library folder is pre-created so that test code can start creating content straight away. + // At the time of writing HEAD does not create this folder automatically, but Thor does. + // So to be safe, I'll pre-check if the node is there. + NodeRef doclibFolder = transactionHelper.doInTransaction(new RetryingTransactionCallback() + { + @Override public NodeRef execute() throws Throwable + { + NodeRef result = siteService.getContainer(siteShortName, SiteService.DOCUMENT_LIBRARY); + if (result == null) + { + result = siteService.createContainer(siteShortName, SiteService.DOCUMENT_LIBRARY, ContentModel.TYPE_FOLDER, null); + } + return result; + } + }); + + // Create users for this test site that cover the various roles. List userNames = transactionHelper.doInTransaction(new RetryingTransactionCallback>() { public List execute() throws Throwable @@ -218,10 +237,10 @@ public class TemporarySites extends AbstractPersonRule AuthenticationUtil.popAuthentication(); - return new TestSiteAndMemberInfo(result, userNames.get(0), - userNames.get(1), - userNames.get(2), - userNames.get(3)); + return new TestSiteAndMemberInfo(result, doclibFolder, userNames.get(0), + userNames.get(1), + userNames.get(2), + userNames.get(3)); } /** @@ -232,14 +251,16 @@ public class TemporarySites extends AbstractPersonRule public static class TestSiteAndMemberInfo { public final SiteInfo siteInfo; + public final NodeRef doclib; public final String siteManager; public final String siteCollaborator; public final String siteContributor; public final String siteConsumer; - public TestSiteAndMemberInfo(SiteInfo siteInfo, String siteManager, String siteCollaborator, String siteContributor, String siteConsumer) + public TestSiteAndMemberInfo(SiteInfo siteInfo, NodeRef siteDocLib, String siteManager, String siteCollaborator, String siteContributor, String siteConsumer) { this.siteInfo = siteInfo; + this.doclib = siteDocLib; this.siteManager = siteManager; this.siteCollaborator = siteCollaborator; this.siteContributor = siteContributor; diff --git a/source/java/org/alfresco/util/test/junitrules/TemporarySitesTest.java b/source/java/org/alfresco/util/test/junitrules/TemporarySitesTest.java index 581af6352c..00c357b1f5 100644 --- a/source/java/org/alfresco/util/test/junitrules/TemporarySitesTest.java +++ b/source/java/org/alfresco/util/test/junitrules/TemporarySitesTest.java @@ -21,11 +21,13 @@ package org.alfresco.util.test.junitrules; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.site.SiteModel; import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; +import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.cmr.site.SiteVisibility; @@ -68,6 +70,7 @@ public class TemporarySitesTest // Various services private static NamespaceService NAMESPACE_SERVICE; + private static NodeService NODE_SERVICE; private static SiteService SITE_SERVICE; private static RetryingTransactionHelper TRANSACTION_HELPER; @@ -78,6 +81,7 @@ public class TemporarySitesTest @BeforeClass public static void initStaticData() throws Exception { NAMESPACE_SERVICE = APP_CONTEXT_INIT.getApplicationContext().getBean("namespaceService", NamespaceService.class); + NODE_SERVICE = APP_CONTEXT_INIT.getApplicationContext().getBean("nodeService", NodeService.class); SITE_SERVICE = APP_CONTEXT_INIT.getApplicationContext().getBean("siteService", SiteService.class); TRANSACTION_HELPER = APP_CONTEXT_INIT.getApplicationContext().getBean("retryingTransactionHelper", RetryingTransactionHelper.class); } @@ -131,6 +135,11 @@ public class TemporarySitesTest assertEquals(SiteModel.SITE_CONTRIBUTOR, SITE_SERVICE.getMembersRole(shortName, testSiteWithMembers.siteContributor)); assertEquals(SiteModel.SITE_CONSUMER, SITE_SERVICE.getMembersRole(shortName, testSiteWithMembers.siteConsumer)); + assertNotNull(testSiteWithMembers.doclib); + assertTrue("Site doclib was not pre-created.", NODE_SERVICE.exists(testSiteWithMembers.doclib)); + assertEquals("Site doclib was in wrong place.", testSiteWithMembers.siteInfo.getNodeRef(), + NODE_SERVICE.getPrimaryParent(testSiteWithMembers.doclib).getParentRef()); + return null; } });