diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AuthorizationGroupBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AuthorizationGroupBO.java index bd5f6a3baf429b79a6888aa3b1c460d8d872cef4..22cb0061572b9bfce899602b17bf833b0b67ff6c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AuthorizationGroupBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AuthorizationGroupBO.java @@ -128,6 +128,11 @@ public class AuthorizationGroupBO extends AbstractBusinessObject implements IAut String code = authorizationGroup.getCode(); try { + PersonPE[] persons = authorizationGroup.getPersons().toArray(new PersonPE[0]); + for (PersonPE personPE : persons) + { + authorizationGroup.removePerson(personPE); + } getAuthorizationGroupDAO().delete(authorizationGroup); getEventDAO().persist(createDeletionEvent(code, session.tryGetPerson(), reason)); } catch (final DataAccessException ex) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java index 9daf0db17a038ceb014d8788dcb5fde997fcbeb0..3aa5c1b0791c931c038dde43799d44d92ff7a358 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java @@ -19,19 +19,24 @@ package ch.systemsx.cisd.openbis.systemtest; import static org.testng.AssertJUnit.assertEquals; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.Predicate; import org.testng.annotations.Test; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Attachment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AuthorizationGroup; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityTypePropertyType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAuthorizationGroup; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; /** @@ -40,6 +45,39 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; public class CommonServerTest extends SystemTestCase { + @Test + public void testDeleteGroupWithPersons() + { + String groupCode = "AUTHORIZATION_TEST_GROUP"; + String sessionToken = authenticateAs("test"); + + // create a group + + NewAuthorizationGroup newGroup = new NewAuthorizationGroup(); + newGroup.setCode(groupCode); + commonServer.registerAuthorizationGroup(sessionToken, newGroup); + List<AuthorizationGroup> groups = commonServer.listAuthorizationGroups(sessionToken); + TechId authorizationGroupTechId = new TechId(findAuthorizationGroup(groups, groupCode).getId()); + + // add user to the group + commonServer.addPersonsToAuthorizationGroup(sessionToken, authorizationGroupTechId, Arrays.asList("test_space", "test_role", "test")); + + commonServer.deleteAuthorizationGroups(sessionToken, Arrays.asList(authorizationGroupTechId), "no reason"); + } + + private AuthorizationGroup findAuthorizationGroup(List<AuthorizationGroup> spaces, final String spaceCode) + { + return CollectionUtils.find(spaces, new Predicate<AuthorizationGroup>() + { + @Override + public boolean evaluate(AuthorizationGroup object) + { + return object.getCode().equals(spaceCode); + } + + }); + } + @Test public void testGetSampleWithAssignedPropertyTypesAndProperties() { diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SessionUpdateTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SessionUpdateTest.java index 3256f13712df9948f50489523c4f12bb7f806737..1b9f49e13237421a37b05972dfd50ee6a72fb449 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SessionUpdateTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SessionUpdateTest.java @@ -87,8 +87,8 @@ public class SessionUpdateTest extends SystemTestCase assertUserCantAccessSpace(sessionTokenUser, "TESTGROUP"); // cleanup - commonServer.deleteAuthorizationGroups(sessionToken, Arrays.asList(authorizationGroupTechId), "no reason"); + commonServer.deleteAuthorizationGroups(sessionToken, Arrays.asList(authorizationGroupTechId), "no reason"); } @Test