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
This commit is contained in:
Neil McErlean
2012-07-25 14:34:42 +00:00
parent b5b0cd7ab9
commit 7ba6470483
2 changed files with 35 additions and 5 deletions

View File

@@ -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<NodeRef>()
{
@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<String> userNames = transactionHelper.doInTransaction(new RetryingTransactionCallback<List<String>>()
{
public List<String> execute() throws Throwable
@@ -218,7 +237,7 @@ public class TemporarySites extends AbstractPersonRule
AuthenticationUtil.popAuthentication();
return new TestSiteAndMemberInfo(result, userNames.get(0),
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;

View File

@@ -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;
}
});