mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-13 22:15:26 +00:00
bug4006: added more tests for user store merging
This commit is contained in:
1 parent
a7caec7d2c
commit
08ac982d8c
3 files changed
+35
-2
No files matched your search
+33
-2
@@ -9,7 +9,9 @@ import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import org.bson.Document;
|
||||
import org.junit.After;
|
||||
@@ -26,6 +28,7 @@ import com.sap.sse.security.SecurityService;
|
||||
import com.sap.sse.security.interfaces.AccessControlStore;
|
||||
import com.sap.sse.security.interfaces.UserImpl;
|
||||
import com.sap.sse.security.interfaces.UserStore;
|
||||
import com.sap.sse.security.shared.RoleDefinition;
|
||||
import com.sap.sse.security.shared.UserGroupManagementException;
|
||||
import com.sap.sse.security.shared.UserManagementException;
|
||||
import com.sap.sse.security.shared.impl.User;
|
||||
@@ -138,8 +141,12 @@ public class TestSimpleUserAndPreferenceMerge {
|
||||
assertNotNull(targetUserStore.getUserByName("YCaT"));
|
||||
assertNotNull(targetUserStore.getUserByName("YCaT-member1"));
|
||||
assertNotNull(targetUserStore.getUserByName("YCaT-member2"));
|
||||
assertNotNull(targetUserStore.getUserByName("uhl3"));
|
||||
final User uhl5InTarget = targetUserStore.getUserByName("uhl5");
|
||||
assertNotNull(uhl5InTarget); // an equal-named user also exists in source, but with different e-mail
|
||||
final User uhl3InTargetUserStore = targetUserStore.getUserByName("uhl3");
|
||||
assertNotNull(uhl3InTargetUserStore);
|
||||
assertNull(targetUserStore.getUserByName("uhl4"));
|
||||
assertNull(targetUserStore.getUserGroupByName("test-server"));
|
||||
assertEquals(1, Util.size(targetUserStore.getUserGroupByName("uhl-tenant").getUsers()));
|
||||
assertSame(targetUserStore.getUserByName("uhl"), targetUserStore.getUserGroupByName("uhl-tenant").getUsers().iterator().next());
|
||||
final AccessControlStore targetAccessControlStore = merger.getTargetAccessControlStore();
|
||||
@@ -151,10 +158,18 @@ public class TestSimpleUserAndPreferenceMerge {
|
||||
assertNotNull(sourceUserStore.getUserByName("<all>"));
|
||||
assertNotNull(sourceUserStore.getUserByName("uhl"));
|
||||
assertNotNull(sourceUserStore.getUserByName("uhl3"));
|
||||
assertEquals(targetUserStore.getUserByName("uhl3").getEmail(), sourceUserStore.getUserByName("uhl3").getEmail());
|
||||
assertNotNull(sourceUserStore.getUserByName("axel.uhl"));
|
||||
assertNotNull(sourceUserStore.getUserByName("uhl4"));
|
||||
assertNotNull(sourceUserStore.getUserByName("uhl5")); // an equal-named user also exists in target, but with different e-mail
|
||||
assertTrue(StreamSupport
|
||||
.stream(sourceUserStore.getUserByName("uhl5").getRoles().spliterator(), /* parallel */ false)
|
||||
.filter(r -> r.getName().equals("user") && r.getQualifiedForTenant() != null &&
|
||||
r.getQualifiedForTenant().getName().equals("uhl4-tenant"))
|
||||
.findAny().isPresent());
|
||||
assertNotNull(sourceUserStore.getUserGroupByName("test-server"));
|
||||
// check result in target user store:
|
||||
assertNotNull(targetUserStore.getUserByName("uhl3"));
|
||||
assertSame(uhl3InTargetUserStore, targetUserStore.getUserByName("uhl3")); // merged, so no new user in this case
|
||||
assertNotNull(targetUserStore.getUserByName("uhl4")); // in particular new user uhl4 is expected to be present now
|
||||
// the uhl-tenant group is expected to have been merged: the uhl4 user is part of that group in source1
|
||||
assertEquals(3, Util.size(targetUserStore.getUserGroupByName("uhl-tenant").getUsers()));
|
||||
@@ -166,5 +181,21 @@ public class TestSimpleUserAndPreferenceMerge {
|
||||
final User uhl4InTarget = targetUserStore.getUserByName("uhl4");
|
||||
assertTrue(Util.contains(targetUserStore.getUserGroupByName("uhl-tenant").getUsers(), uhl4InTarget));
|
||||
assertSame(uhl4InTarget, targetAccessControlStore.getOwnership(uhl4InTarget.getIdentifier()).getAnnotation().getUserOwner());
|
||||
final UserGroup testServerGroupInTargetAfterMerge = targetUserStore.getUserGroupByName("test-server");
|
||||
assertNotNull(testServerGroupInTargetAfterMerge);
|
||||
final Map<RoleDefinition, Boolean> rolesOnTestServerGroup = testServerGroupInTargetAfterMerge.getRoleDefinitionMap();
|
||||
final Optional<RoleDefinition> sailingViewerRoleInTarget = StreamSupport.stream(targetUserStore.getRoleDefinitions().spliterator(), /* parallel */ false).
|
||||
filter(rd->rd.getName().equals("sailing_viewer")).findAny();
|
||||
assertTrue(sailingViewerRoleInTarget.isPresent());
|
||||
assertTrue(rolesOnTestServerGroup.containsKey(sailingViewerRoleInTarget.get()));
|
||||
assertTrue(rolesOnTestServerGroup.get(sailingViewerRoleInTarget.get()));
|
||||
assertSame(uhl5InTarget, targetUserStore.getUserByName("uhl5")); // still the same
|
||||
// Now ensure that no merge took place, particularly by validating that no "user" role with uhl4-tenant as group
|
||||
// qualification was merged
|
||||
assertFalse(StreamSupport
|
||||
.stream(targetUserStore.getUserByName("uhl5").getRoles().spliterator(), /* parallel */ false)
|
||||
.filter(r -> r.getName().equals("user") && r.getQualifiedForTenant() != null &&
|
||||
r.getQualifiedForTenant().getName().equals("uhl4-tenant"))
|
||||
.findAny().isPresent());
|
||||
}
|
||||
}
|
||||
@@ -4,3 +4,4 @@
|
||||
{"_id":{"$oid":"5ddfe8ebc0825924ce5d374b"},"NAME":"uhl3","EMAIL":"axel.uhl@sap.com","FULLNAME":null,"COMPANY":null,"LOCALE":null,"EMAIL_VALIDATED":false,"PASSWORD_RESET_SECRET":null,"VALIDATION_SECRET":null,"ACCOUNTS":{"USERNAME_PASSWORD":{"NAME":"uhl3","SALTED_PW":"07vtuiUbOZF3b9DvqnkKPu7jXOhNpOWba90y9R8BFZk=","SALT":{"$binary":"cokHTYjlShneyh8GtPYICA==","$type":"00"}}},"ROLE_IDS":[{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":null,"QUALIFYING_TENANT_NAME":null,"QUALIFYING_USERNAME":"uhl3"},{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":{"$binary":"jUctEl255OAdcqbVAQ39iQ==","$type":"03"},"QUALIFYING_TENANT_NAME":"uhl3-tenant","QUALIFYING_USERNAME":null}],"PERMISSIONS":[],"DEFAULT_TENANT_IDS":[{"DEFAULT_TENANT_SERVER":"unknown server name","DEFAULT_TENANT_GROUP":{"$binary":"jUctEl255OAdcqbVAQ39iQ==","$type":"03"}}]}
|
||||
{"_id":{"$oid":"5ddfe908c0825924ce5d3777"},"NAME":"axel.uhl","EMAIL":"axel.uhl@gmx.de","FULLNAME":null,"COMPANY":null,"LOCALE":null,"EMAIL_VALIDATED":false,"PASSWORD_RESET_SECRET":null,"VALIDATION_SECRET":null,"ACCOUNTS":{"USERNAME_PASSWORD":{"NAME":"axel.uhl","SALTED_PW":"AFsE38rLBLw+5OetCJ0FzzdYCoisKXMdOCo1rfUFcmg=","SALT":{"$binary":"Qlvq6LrLVAIHPqpzmZ1dWw==","$type":"00"}}},"ROLE_IDS":[{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":null,"QUALIFYING_TENANT_NAME":null,"QUALIFYING_USERNAME":"axel.uhl"},{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":{"$binary":"n0gWmJnznMC66i2QrmR2pQ==","$type":"03"},"QUALIFYING_TENANT_NAME":"axel.uhl-tenant","QUALIFYING_USERNAME":null}],"PERMISSIONS":[],"DEFAULT_TENANT_IDS":[{"DEFAULT_TENANT_SERVER":"unknown server name","DEFAULT_TENANT_GROUP":{"$binary":"n0gWmJnznMC66i2QrmR2pQ==","$type":"03"}}]}
|
||||
{"_id":{"$oid":"5ddfe91dc0825924ce5d379f"},"NAME":"uhl4","EMAIL":"uhl@homemp3.dyndns.org","FULLNAME":null,"COMPANY":null,"LOCALE":null,"EMAIL_VALIDATED":false,"PASSWORD_RESET_SECRET":null,"VALIDATION_SECRET":null,"ACCOUNTS":{"USERNAME_PASSWORD":{"NAME":"uhl4","SALTED_PW":"lJDWFQJsS8x6weFXQ14SxiD1Jzp65kKcSelrbUOx5uc=","SALT":{"$binary":"E/mG5VmAqCbeYuOHotskAg==","$type":"00"}}},"ROLE_IDS":[{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":null,"QUALIFYING_TENANT_NAME":null,"QUALIFYING_USERNAME":"uhl4"},{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":{"$binary":"eUpFMrUM/Be80bndlCu9vg==","$type":"03"},"QUALIFYING_TENANT_NAME":"uhl4-tenant","QUALIFYING_USERNAME":null}],"PERMISSIONS":[],"DEFAULT_TENANT_IDS":[{"DEFAULT_TENANT_SERVER":"unknown server name","DEFAULT_TENANT_GROUP":{"$binary":"eUpFMrUM/Be80bndlCu9vg==","$type":"03"}}]}
|
||||
{"_id":{"$oid":"5ddfe91dc4825924ce5d379f"},"NAME":"uhl5","EMAIL":"uhl5@homemp3.dyndns.org","FULLNAME":null,"COMPANY":null,"LOCALE":null,"EMAIL_VALIDATED":false,"PASSWORD_RESET_SECRET":null,"VALIDATION_SECRET":null,"ACCOUNTS":{"USERNAME_PASSWORD":{"NAME":"uhl5","SALTED_PW":"lJDWFQJsS8x6weFXQ14SxiD1Jzp65kKcSelrbUOx5uc=","SALT":{"$binary":"E/mG5VmAqCbeYuOHotskAg==","$type":"00"}}},"ROLE_IDS":[{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":null,"QUALIFYING_TENANT_NAME":null,"QUALIFYING_USERNAME":"uhl5"},{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":{"$binary":"eUpFMrUM/Be80bndlCu9vg==","$type":"03"},"QUALIFYING_TENANT_NAME":"uhl4-tenant","QUALIFYING_USERNAME":null}],"PERMISSIONS":[],"DEFAULT_TENANT_IDS":[{"DEFAULT_TENANT_SERVER":"unknown server name","DEFAULT_TENANT_GROUP":{"$binary":"eUpFMrUM/Be80bndlCu9vg==","$type":"03"}}]}
|
||||
@@ -8,3 +8,4 @@
|
||||
{"_id":{"$oid":"5ddfe666c0825924ce5d2cd5"},"NAME":"YCaT-member1","EMAIL":"ycat-member1@example.com","FULLNAME":null,"COMPANY":null,"LOCALE":null,"EMAIL_VALIDATED":false,"PASSWORD_RESET_SECRET":null,"VALIDATION_SECRET":null,"ACCOUNTS":{"USERNAME_PASSWORD":{"NAME":"YCaT-member1","SALTED_PW":"nlq1XlkGio2EPEfcfGdQAPOpaRwAQqGU9GnKYG6b2VY=","SALT":{"$binary":"NWHtENfQ/S5E3F0zWJeSsQ==","$type":"00"}}},"ROLE_IDS":[{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":null,"QUALIFYING_TENANT_NAME":null,"QUALIFYING_USERNAME":"YCaT-member1"},{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":{"$binary":"t0MJug6uIOVW0enVXk6fuw==","$type":"03"},"QUALIFYING_TENANT_NAME":"YCaT-member1-tenant","QUALIFYING_USERNAME":null}],"PERMISSIONS":[],"DEFAULT_TENANT_IDS":[{"DEFAULT_TENANT_SERVER":"unknown server name","DEFAULT_TENANT_GROUP":{"$binary":"t0MJug6uIOVW0enVXk6fuw==","$type":"03"}}]}
|
||||
{"_id":{"$oid":"5ddfe676c0825924ce5d2cf7"},"NAME":"YCaT-member2","EMAIL":"ycat-member2@example.com","FULLNAME":null,"COMPANY":null,"LOCALE":null,"EMAIL_VALIDATED":false,"PASSWORD_RESET_SECRET":null,"VALIDATION_SECRET":null,"ACCOUNTS":{"USERNAME_PASSWORD":{"NAME":"YCaT-member2","SALTED_PW":"pWVtsXlYaKHS3howWGOraiCm2dhtykUQWBJ2pE9gSb8=","SALT":{"$binary":"RAeoNaY8wQOr9iIN85LHxg==","$type":"00"}}},"ROLE_IDS":[{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":null,"QUALIFYING_TENANT_NAME":null,"QUALIFYING_USERNAME":"YCaT-member2"},{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":{"$binary":"s0SQCOyHewgex4Wc/jPStg==","$type":"03"},"QUALIFYING_TENANT_NAME":"YCaT-member2-tenant","QUALIFYING_USERNAME":null}],"PERMISSIONS":[],"DEFAULT_TENANT_IDS":[{"DEFAULT_TENANT_SERVER":"unknown server name","DEFAULT_TENANT_GROUP":{"$binary":"s0SQCOyHewgex4Wc/jPStg==","$type":"03"}}]}
|
||||
{"_id":{"$oid":"5ddfeb89c0825924ce5d3f80"},"NAME":"uhl3","EMAIL":"axel.uhl@sap.com","FULLNAME":null,"COMPANY":null,"LOCALE":null,"EMAIL_VALIDATED":false,"PASSWORD_RESET_SECRET":null,"VALIDATION_SECRET":null,"ACCOUNTS":{"USERNAME_PASSWORD":{"NAME":"uhl3","SALTED_PW":"nviD3KYsbpot9EnPfaPgUbLiAG2GIvkq24V5Q2IgrO0=","SALT":{"$binary":"sgSYmS82ChmHnRu4L5M8EQ==","$type":"00"}}},"ROLE_IDS":[{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":null,"QUALIFYING_TENANT_NAME":null,"QUALIFYING_USERNAME":"uhl3"},{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":{"$binary":"h0kp50s+ke89MTQhwezkjA==","$type":"03"},"QUALIFYING_TENANT_NAME":"uhl3-tenant","QUALIFYING_USERNAME":null}],"PERMISSIONS":[],"DEFAULT_TENANT_IDS":[{"DEFAULT_TENANT_SERVER":"unknown server name","DEFAULT_TENANT_GROUP":{"$binary":"h0kp50s+ke89MTQhwezkjA==","$type":"03"}}]}
|
||||
{"_id":{"$oid":"5ddfeb89c0825934ce5d3f80"},"NAME":"uhl5","EMAIL":"axel.uhl@sap.com","FULLNAME":null,"COMPANY":null,"LOCALE":null,"EMAIL_VALIDATED":false,"PASSWORD_RESET_SECRET":null,"VALIDATION_SECRET":null,"ACCOUNTS":{"USERNAME_PASSWORD":{"NAME":"uhl5","SALTED_PW":"nviD3KYsbpot9EnPfaPgUbLiAG2GIvkq24V5Q2IgrO0=","SALT":{"$binary":"sgSYmS82ChmHnRu4L5M8EQ==","$type":"00"}}},"ROLE_IDS":[{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":null,"QUALIFYING_TENANT_NAME":null,"QUALIFYING_USERNAME":"uhl5"},{"ID":{"$binary":"ZEQ9sUhRHa0uTk1uOXzEkA==","$type":"03"},"NAME":"user","QUALIFYING_TENANT_ID":{"$binary":"h0kp50s+ke89MTQhwezkjA==","$type":"03"},"QUALIFYING_TENANT_NAME":"uhl3-tenant","QUALIFYING_USERNAME":null}],"PERMISSIONS":[],"DEFAULT_TENANT_IDS":[{"DEFAULT_TENANT_SERVER":"unknown server name","DEFAULT_TENANT_GROUP":{"$binary":"h0kp50s+ke89MTQhwezkjA==","$type":"03"}}]}
|
||||
Reference in new issue
Block a user