From 028dfb47a282a6d9e1ca8148c6ea2a17d7839bb0 Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Tue, 20 Oct 2009 14:10:08 +0000 Subject: [PATCH] ETHREEOH-2936: Added to site groups detele from admin console after deleting site git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@17049 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/repo/site/SiteServiceImpl.java | 12 ++++- .../repo/site/SiteServiceImplTest.java | 45 ++++++++++++++++--- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java index 8a2fb129df..0fcd847695 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java @@ -958,7 +958,17 @@ public class SiteServiceImpl implements SiteService, SiteModel { public Object doWork() throws Exception { - authorityService.deleteAuthority(getSiteGroup(shortName, true), true); + // Delete the master site group + authorityService.deleteAuthority(getSiteGroup(shortName, true), false); + + // Iterate over the role related groups and delete then + Set permissions = permissionService.getSettablePermissions(SiteModel.TYPE_SITE); + for (String permission : permissions) + { + String siteRoleGroup = getSiteRoleGroup(shortName, permission, true); + authorityService.deleteAuthority(siteRoleGroup); + } + return null; } }, AuthenticationUtil.getSystemUserName()); diff --git a/source/java/org/alfresco/repo/site/SiteServiceImplTest.java b/source/java/org/alfresco/repo/site/SiteServiceImplTest.java index 8ed44bd595..6b7fc26d83 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImplTest.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImplTest.java @@ -28,6 +28,7 @@ import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; @@ -44,6 +45,7 @@ import org.alfresco.service.cmr.repository.ScriptLocation; import org.alfresco.service.cmr.repository.ScriptService; import org.alfresco.service.cmr.security.AuthorityService; import org.alfresco.service.cmr.security.AuthorityType; +import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteService; @@ -51,6 +53,7 @@ import org.alfresco.service.cmr.site.SiteVisibility; import org.alfresco.service.cmr.tagging.TaggingService; import org.alfresco.service.namespace.QName; import org.alfresco.util.BaseAlfrescoSpringTest; +import org.alfresco.util.GUID; import org.alfresco.util.PropertyMap; /** @@ -82,6 +85,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest private PersonService personService; private AuthorityService authorityService; private FileFolderService fileFolderService; + private PermissionService permissionService; private String groupOne; private String groupTwo; @@ -104,6 +108,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest this.personService = (PersonService)this.applicationContext.getBean("PersonService"); this.authorityService = (AuthorityService)this.applicationContext.getBean("AuthorityService"); this.fileFolderService = (FileFolderService)this.applicationContext.getBean("FileFolderService"); + this.permissionService = (PermissionService)this.applicationContext.getBean("PermissionService"); // Create the test users createUser(USER_ONE); @@ -494,6 +499,8 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest public void testDeleteSite() { + SiteService smallSiteService = (SiteService)this.applicationContext.getBean("siteService"); + // delete a site that isn't there try { @@ -505,14 +512,42 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest // Expected } + // Create a test group + final String testGroupName = "siteServiceImplTestGroup_" + GUID.generate(); + String testGroup = AuthenticationUtil.runAs( + new AuthenticationUtil.RunAsWork() + { + public String doWork() throws Exception + { + return authorityService.createAuthority(AuthorityType.GROUP, testGroupName); + } + + }, AuthenticationUtil.getAdminUserName()); + // Create a test site - this.siteService.createSite(TEST_SITE_PRESET, "testUpdateSite", TEST_TITLE, TEST_DESCRIPTION, SiteVisibility.PUBLIC); - assertNotNull(this.siteService.getSite("testUpdateSite")); + String siteShortName = "testUpdateSite"; + this.siteService.createSite(TEST_SITE_PRESET, siteShortName, TEST_TITLE, TEST_DESCRIPTION, SiteVisibility.PUBLIC); + assertNotNull(this.siteService.getSite(siteShortName)); + + // Add the test group as a member of the site + this.siteService.setMembership(siteShortName, testGroup, SiteModel.SITE_CONTRIBUTOR); // Delete the site - this.siteService.deleteSite("testUpdateSite"); - assertNull(this.siteService.getSite("testUpdateSite")); - } + this.siteService.deleteSite(siteShortName); + assertNull(this.siteService.getSite(siteShortName)); + + // Ensure that all the related site groups are deleted + assertFalse(authorityService.authorityExists(((SiteServiceImpl)smallSiteService).getSiteGroup(siteShortName, true))); + Set permissions = permissionService.getSettablePermissions(SiteModel.TYPE_SITE); + for (String permission : permissions) + { + String siteRoleGroup = ((SiteServiceImpl)smallSiteService).getSiteRoleGroup(siteShortName, permission, true); + assertFalse(authorityService.authorityExists(siteRoleGroup)); + } + + // Ensure that the added "normal" groups have not been deleted + assertTrue(authorityService.authorityExists(testGroup)); + } public void testIsPublic() {