From cc2a4c80d9a5f22833e40e5d845f88468c701d25 Mon Sep 17 00:00:00 2001 From: felmer <franz-josef.elmer@id.ethz.ch> Date: Mon, 16 Sep 2019 12:34:12 +0200 Subject: [PATCH] SSDM-8734: fixing and extending UserManagerTest --- .../task/UserManagerExpectationsBuilder.java | 10 +++- .../systemtest/task/UserManagerTest.java | 52 +++++++++++++++++-- 2 files changed, 58 insertions(+), 4 deletions(-) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/task/UserManagerExpectationsBuilder.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/task/UserManagerExpectationsBuilder.java index f571b263d8c..fafbfba6308 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/task/UserManagerExpectationsBuilder.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/task/UserManagerExpectationsBuilder.java @@ -93,6 +93,8 @@ class UserManagerExpectationsBuilder private Map<String, Map<AuthorizationLevel, Set<String>>> usersByLevelBySpace = new TreeMap<>(); + private boolean deactivation = true; + UserManagerExpectationsBuilder(IApplicationServerInternalApi v3api, UserManagerTestService testService, IOpenBisSessionManager sessionManager, Map<Role, List<String>> commonSpaces) { @@ -109,6 +111,12 @@ class UserManagerExpectationsBuilder this.testService = testService; this.sessionManager = sessionManager; } + + public UserManagerExpectationsBuilder noDeactivation() + { + deactivation = false; + return this; + } public UserManagerExpectationsBuilder globalSpaces(List<String> globalSpaces) { @@ -359,7 +367,7 @@ class UserManagerExpectationsBuilder for (Person person : v3api.getPersons(sessionToken, personIds, fetchOptions).values()) { String userId = person.getUserId(); - assertEquals(person.isActive(), Boolean.FALSE, "Active flag of " + person); + assertEquals(person.isActive(), Boolean.valueOf(deactivation == false), "Active flag of " + person); assertEquals(person.getSpace(), null, "Home space of " + person); assertEquals(person.getRoleAssignments().size(), 0, "Role assignments of " + person); for (Entry<String, Set<String>> entry : usersByGroupId.entrySet()) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/task/UserManagerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/task/UserManagerTest.java index 55af3743a21..542c4962da8 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/task/UserManagerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/task/UserManagerTest.java @@ -81,7 +81,7 @@ public class UserManagerTest extends AbstractTest private File workingDir; private File mappingFile; - + private UserManagerReport report; private static Map<Role, List<String>> commonSpaces() @@ -1243,6 +1243,7 @@ public class UserManagerTest extends AbstractTest assertEquals(manage(userManager).getErrorReport(), ""); // 2. U2 is no longer known by the authentication service userManager = new UserManagerBuilder(v3api, logger, report()).unknownUser(U2).commonSpaces(commonSpaces).get(); + userManager.addGroup(new UserGroupAsBuilder("G2").admins(U1.getUserId()), users(U1, U3)); // When UserManagerReport report = manage(userManager); @@ -1264,6 +1265,42 @@ public class UserManagerTest extends AbstractTest builder.assertExpectations(); } + @Test + public void testUserFromAGroupHasLeftedNoDeactivation() + { + // Given + // 1. create group G2 with users U1 (admin), U2 and U3 + MockLogger logger = new MockLogger(); + Map<Role, List<String>> commonSpaces = commonSpaces(); + UserManager userManager = new UserManagerBuilder(v3api, logger, report()).commonSpaces(commonSpaces).get(); + userManager.addGroup(new UserGroupAsBuilder("G2").admins(U1.getUserId()), users(U1, U2, U3)); + assertEquals(manage(userManager).getErrorReport(), ""); + // 2. U2 is no longer known + userManager = new UserManagerBuilder(v3api, logger, report()).unknownUser(U2).commonSpaces(commonSpaces).noDeactivation().get(); + userManager.addGroup(new UserGroupAsBuilder("G2").admins(U1.getUserId()), users(U1, U3)); + + // When + UserManagerReport report = manage(userManager); + + // Then + assertEquals(report.getErrorReport(), ""); + assertEquals(report.getAuditLog(), "1970-01-01 01:00:00 [REMOVE-USER-FROM-AUTHORIZATION-GROUP] group: G2, user: u2\n" + + "1970-01-01 01:00:01 [UNASSIGN-ROLE-FORM-USER] user: u2, role: SPACE_ADMIN for G2_U2\n" + + "1970-01-01 01:00:02 [REMOVE-HOME-SPACE-FROM-USER] u2\n"); + UserManagerExpectationsBuilder builder = createBuilder().noDeactivation(); + builder.groups("G2").commonSpaces(commonSpaces).users(U1, U3); + builder.space("G2_ALPHA").admin(U1).user(U3); + builder.space("G2_BETA").admin(U1).user(U3); + builder.space("G2_GAMMA").admin(U1).observer(U3); + builder.space("G2_U1").admin(U1).non(U3); + builder.space("G2_U2").admin(U1).non(U3); + builder.space("G2_U3").admin(U1).admin(U3); + builder.homeSpace(U1, "G2_U1"); + builder.unknownUser(U2); + builder.homeSpace(U3, "G2_U3"); + builder.assertExpectations(); + } + @Test public void testReuseSameUserId() { @@ -1380,7 +1417,7 @@ public class UserManagerTest extends AbstractTest } return map; } - + private UserManagerReport report() { report = new UserManagerReport(new MockTimeProvider(0, 1000)); @@ -1414,7 +1451,7 @@ public class UserManagerTest extends AbstractTest private ISimpleLogger logger; private UserManagerReport report; - + private Set<String> usersUnknownByAuthenticationService = new TreeSet<>(); private List<String> globalSpaces = new ArrayList<>(); @@ -1427,6 +1464,8 @@ public class UserManagerTest extends AbstractTest private File shareIdsMappingFile; + private boolean deactivateUnknownUsers = true; + UserManagerBuilder(IApplicationServerInternalApi service, ISimpleLogger logger, UserManagerReport report) { this.service = service; @@ -1451,9 +1490,16 @@ public class UserManagerTest extends AbstractTest UserManager userManager = new UserManager(authenticationService, service, shareIdsMappingFile, logger, report); userManager.setGlobalSpaces(globalSpaces); userManager.setCommon(commonSpacesByRole, commonSamples, commonExperiments); + userManager.setDeactivateUnknwonUsers(deactivateUnknownUsers); return userManager; } + private UserManagerBuilder noDeactivation() + { + deactivateUnknownUsers = false; + return this; + } + private UserManagerBuilder unknownUser(Principal user) { usersUnknownByAuthenticationService.add(user.getUserId()); -- GitLab