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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||||
import org.alfresco.repo.site.SiteModel;
|
import org.alfresco.repo.site.SiteModel;
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
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.SiteInfo;
|
||||||
import org.alfresco.service.cmr.site.SiteService;
|
import org.alfresco.service.cmr.site.SiteService;
|
||||||
import org.alfresco.service.cmr.site.SiteVisibility;
|
import org.alfresco.service.cmr.site.SiteVisibility;
|
||||||
@@ -192,6 +194,23 @@ public class TemporarySites extends AbstractPersonRule
|
|||||||
AuthenticationUtil.pushAuthentication();
|
AuthenticationUtil.pushAuthentication();
|
||||||
AuthenticationUtil.setFullyAuthenticatedUser(siteCreator);
|
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>>()
|
List<String> userNames = transactionHelper.doInTransaction(new RetryingTransactionCallback<List<String>>()
|
||||||
{
|
{
|
||||||
public List<String> execute() throws Throwable
|
public List<String> execute() throws Throwable
|
||||||
@@ -218,7 +237,7 @@ public class TemporarySites extends AbstractPersonRule
|
|||||||
AuthenticationUtil.popAuthentication();
|
AuthenticationUtil.popAuthentication();
|
||||||
|
|
||||||
|
|
||||||
return new TestSiteAndMemberInfo(result, userNames.get(0),
|
return new TestSiteAndMemberInfo(result, doclibFolder, userNames.get(0),
|
||||||
userNames.get(1),
|
userNames.get(1),
|
||||||
userNames.get(2),
|
userNames.get(2),
|
||||||
userNames.get(3));
|
userNames.get(3));
|
||||||
@@ -232,14 +251,16 @@ public class TemporarySites extends AbstractPersonRule
|
|||||||
public static class TestSiteAndMemberInfo
|
public static class TestSiteAndMemberInfo
|
||||||
{
|
{
|
||||||
public final SiteInfo siteInfo;
|
public final SiteInfo siteInfo;
|
||||||
|
public final NodeRef doclib;
|
||||||
public final String siteManager;
|
public final String siteManager;
|
||||||
public final String siteCollaborator;
|
public final String siteCollaborator;
|
||||||
public final String siteContributor;
|
public final String siteContributor;
|
||||||
public final String siteConsumer;
|
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.siteInfo = siteInfo;
|
||||||
|
this.doclib = siteDocLib;
|
||||||
this.siteManager = siteManager;
|
this.siteManager = siteManager;
|
||||||
this.siteCollaborator = siteCollaborator;
|
this.siteCollaborator = siteCollaborator;
|
||||||
this.siteContributor = siteContributor;
|
this.siteContributor = siteContributor;
|
||||||
|
@@ -21,11 +21,13 @@ package org.alfresco.util.test.junitrules;
|
|||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.repo.site.SiteModel;
|
import org.alfresco.repo.site.SiteModel;
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
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.SiteInfo;
|
||||||
import org.alfresco.service.cmr.site.SiteService;
|
import org.alfresco.service.cmr.site.SiteService;
|
||||||
import org.alfresco.service.cmr.site.SiteVisibility;
|
import org.alfresco.service.cmr.site.SiteVisibility;
|
||||||
@@ -68,6 +70,7 @@ public class TemporarySitesTest
|
|||||||
|
|
||||||
// Various services
|
// Various services
|
||||||
private static NamespaceService NAMESPACE_SERVICE;
|
private static NamespaceService NAMESPACE_SERVICE;
|
||||||
|
private static NodeService NODE_SERVICE;
|
||||||
private static SiteService SITE_SERVICE;
|
private static SiteService SITE_SERVICE;
|
||||||
private static RetryingTransactionHelper TRANSACTION_HELPER;
|
private static RetryingTransactionHelper TRANSACTION_HELPER;
|
||||||
|
|
||||||
@@ -78,6 +81,7 @@ public class TemporarySitesTest
|
|||||||
@BeforeClass public static void initStaticData() throws Exception
|
@BeforeClass public static void initStaticData() throws Exception
|
||||||
{
|
{
|
||||||
NAMESPACE_SERVICE = APP_CONTEXT_INIT.getApplicationContext().getBean("namespaceService", NamespaceService.class);
|
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);
|
SITE_SERVICE = APP_CONTEXT_INIT.getApplicationContext().getBean("siteService", SiteService.class);
|
||||||
TRANSACTION_HELPER = APP_CONTEXT_INIT.getApplicationContext().getBean("retryingTransactionHelper", RetryingTransactionHelper.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_CONTRIBUTOR, SITE_SERVICE.getMembersRole(shortName, testSiteWithMembers.siteContributor));
|
||||||
assertEquals(SiteModel.SITE_CONSUMER, SITE_SERVICE.getMembersRole(shortName, testSiteWithMembers.siteConsumer));
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user