mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
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:
@@ -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;
|
||||
|
@@ -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;
|
||||
}
|
||||
});
|
||||
|
Reference in New Issue
Block a user