mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Fix ALF-2499 (Deleting a web project also deletes similarly named web projects - Potential Data Loss)
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19918 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -948,7 +948,7 @@ public final class SandboxFactory extends WCMUtil
|
||||
String storeName = store.getName();
|
||||
|
||||
// list main stores - not preview stores or workflow stores or locally deployed "live" ASR servers (LIVE or TEST)
|
||||
if ((storeName.startsWith(wpStoreId)) &&
|
||||
if ((WCMUtil.getWebProjectStoreId(storeName).equals(wpStoreId)) &&
|
||||
(! WCMUtil.isPreviewStore(storeName)) &&
|
||||
((includeLocalhostDeployed || (! WCMUtil.isLocalhostDeployedStore(wpStoreId, storeName)))) &&
|
||||
((includeWorkflowSandboxes || (! WCMUtil.isWorkflowStore(storeName))))
|
||||
|
@@ -251,14 +251,17 @@ public class SandboxServiceImpl implements SandboxService
|
||||
{
|
||||
sbInfos = new ArrayList<SandboxInfo>(1);
|
||||
|
||||
SandboxInfo authorSandbox = getAuthorSandbox(wpStoreId, currentUser);
|
||||
|
||||
if (authorSandbox != null)
|
||||
if (userRole != null)
|
||||
{
|
||||
sbInfos.add(authorSandbox);
|
||||
SandboxInfo authorSandbox = getAuthorSandbox(wpStoreId, currentUser);
|
||||
|
||||
if (authorSandbox != null)
|
||||
{
|
||||
sbInfos.add(authorSandbox);
|
||||
}
|
||||
|
||||
sbInfos.add(getSandbox(WCMUtil.buildStagingStoreName(wpStoreId))); // get staging sandbox
|
||||
}
|
||||
|
||||
sbInfos.add(getSandbox(WCMUtil.buildStagingStoreName(wpStoreId))); // get staging sandbox
|
||||
}
|
||||
|
||||
return sbInfos;
|
||||
|
@@ -254,9 +254,15 @@ public class SandboxServiceImplTest extends AbstractWCMServiceImplTest
|
||||
WebProjectInfo wpInfo = wpService.createWebProject(TEST_SANDBOX+"-list", TEST_WEBPROJ_NAME+" list", TEST_WEBPROJ_TITLE, TEST_WEBPROJ_DESCRIPTION);
|
||||
String wpStoreId = wpInfo.getStoreId();
|
||||
|
||||
List<SandboxInfo> sbInfos = sbService.listSandboxes(wpInfo.getStoreId());
|
||||
// Create ANOther web project
|
||||
WebProjectInfo wpAnoInfo = wpService.createWebProject(TEST_SANDBOX+"-list ano", TEST_WEBPROJ_NAME+" list ano", TEST_WEBPROJ_TITLE, TEST_WEBPROJ_DESCRIPTION);
|
||||
String wpStoreAnoId = wpAnoInfo.getStoreId();
|
||||
|
||||
List<SandboxInfo> sbInfos = sbService.listSandboxes(wpStoreId);
|
||||
assertEquals(2, sbInfos.size()); // staging sandbox, author sandbox (for admin)
|
||||
|
||||
assertEquals(2, sbService.listSandboxes(wpStoreAnoId).size());
|
||||
|
||||
String expectedUserSandboxId = TEST_SANDBOX+"-list" + "--" + AuthenticationUtil.getAdminUserName();
|
||||
|
||||
// Do detailed check of the sandbox info objects
|
||||
@@ -432,7 +438,12 @@ public class SandboxServiceImplTest extends AbstractWCMServiceImplTest
|
||||
WebProjectInfo wpInfo = wpService.createWebProject(TEST_SANDBOX+"-delete", TEST_WEBPROJ_NAME+" delete", TEST_WEBPROJ_TITLE, TEST_WEBPROJ_DESCRIPTION);
|
||||
String wpStoreId = wpInfo.getStoreId();
|
||||
|
||||
// Create ANOther web project
|
||||
WebProjectInfo wpAnoInfo = wpService.createWebProject(TEST_SANDBOX+"-delete ano", TEST_WEBPROJ_NAME+" delete ano", TEST_WEBPROJ_TITLE, TEST_WEBPROJ_DESCRIPTION);
|
||||
String wpStoreAnoId = wpAnoInfo.getStoreId();
|
||||
|
||||
assertEquals(2, sbService.listSandboxes(wpStoreId).size());
|
||||
assertEquals(2, sbService.listSandboxes(wpStoreAnoId).size());
|
||||
|
||||
// Get staging sandbox
|
||||
SandboxInfo sbInfo = sbService.getStagingSandbox(wpStoreId);
|
||||
@@ -460,10 +471,11 @@ public class SandboxServiceImplTest extends AbstractWCMServiceImplTest
|
||||
}
|
||||
|
||||
// Get admin author sandbox
|
||||
sbInfo = sbService.getAuthorSandbox(wpInfo.getStoreId());
|
||||
sbInfo = sbService.getAuthorSandbox(wpStoreId);
|
||||
sbService.deleteSandbox(sbInfo.getSandboxId());
|
||||
|
||||
assertEquals(1, sbService.listSandboxes(wpInfo.getStoreId()).size());
|
||||
assertEquals(1, sbService.listSandboxes(wpStoreId).size());
|
||||
assertEquals(2, sbService.listSandboxes(wpStoreAnoId).size());
|
||||
|
||||
// Invite web users
|
||||
wpService.inviteWebUser(wpStoreId, USER_ONE, WCMUtil.ROLE_CONTENT_MANAGER);
|
||||
|
@@ -482,6 +482,13 @@ public class WebProjectServiceImplTest extends AbstractWCMServiceImplTest
|
||||
String wpStoreId = wpInfo.getStoreId();
|
||||
assertNotNull(wpService.getWebProject(wpStoreId));
|
||||
|
||||
// Create ANOther web project
|
||||
WebProjectInfo wpAnoInfo = wpService.createWebProject(TEST_WEBPROJ_DNS+"-delete ano", TEST_WEBPROJ_NAME+"-delete ano", TEST_WEBPROJ_TITLE, TEST_WEBPROJ_DESCRIPTION, TEST_WEBPROJ_DEFAULT_WEBAPP, true, null);
|
||||
String wpStoreAnoId = wpAnoInfo.getStoreId();
|
||||
|
||||
assertEquals(2, sbService.listSandboxes(wpStoreId).size());
|
||||
assertEquals(2, sbService.listSandboxes(wpStoreAnoId).size());
|
||||
|
||||
// Switch to USER_ONE
|
||||
AuthenticationUtil.setFullyAuthenticatedUser(USER_ONE);
|
||||
|
||||
@@ -517,6 +524,9 @@ public class WebProjectServiceImplTest extends AbstractWCMServiceImplTest
|
||||
wpService.deleteWebProject(wpStoreId);
|
||||
assertNull(wpService.getWebProject(wpStoreId));
|
||||
|
||||
assertEquals(0, sbService.listSandboxes(wpStoreId).size());
|
||||
assertEquals(2, sbService.listSandboxes(wpStoreAnoId).size());
|
||||
|
||||
try
|
||||
{
|
||||
// Try to delete a web project that isn't there (-ve test)
|
||||
|
Reference in New Issue
Block a user