fixed initialization of security service for test set-up, helping TaggingServiceTest

This commit is contained in:
Axel Uhl
2020-04-26 22:59:02 +02:00
parent c509af4af9
commit 0d7811c852
3 changed files with 11 additions and 16 deletions
@@ -4,26 +4,28 @@ import java.util.logging.Logger;
import org.apache.shiro.SecurityUtils;
import com.sap.sse.replication.FullyInitializedReplicableTracker;
import com.sap.sse.security.SecurityService;
import com.sap.sse.security.impl.Activator;
import com.sap.sse.security.impl.SecurityServiceImpl;
import com.sap.sse.security.shared.UserGroupManagementException;
import com.sap.sse.security.shared.UserManagementException;
import com.sap.sse.security.userstore.mongodb.AccessControlStoreImpl;
import com.sap.sse.security.userstore.mongodb.UserStoreImpl;
import com.sap.sse.util.ServiceTrackerFactory;
public class SecurityBundleTestWrapper {
private static final Logger logger = Logger.getLogger(SecurityBundleTestWrapper.class.getName());
public SecurityService initializeSecurityServiceForTesting() throws UserGroupManagementException, UserManagementException, InterruptedException {
public SecurityService initializeSecurityServiceForTesting() throws Exception {
final SecurityService securityService;
if (Activator.getContext() == null) {
logger.info("Setup for TaggingServiceTest in a non-OSGi environment");
final UserStoreImpl store = new UserStoreImpl("defaultTenant");
store.ensureDefaultRolesExist();
store.ensureServerGroupExists();
final AccessControlStoreImpl accessControlStoreImpl = new AccessControlStoreImpl(store);
Activator.setTestStores(store, accessControlStoreImpl);
securityService = new SecurityServiceImpl(store, accessControlStoreImpl);
((SecurityServiceImpl) securityService).clearState();
securityService.initialize();
SecurityUtils.setSecurityManager(securityService.getSecurityManager());
Activator.setSecurityService(securityService);
} else {
@@ -31,7 +33,7 @@ public class SecurityBundleTestWrapper {
new UserStoreImpl("defaultTenant"); // only to trigger bundle loading and activation so that security service can find the bundle and its original user store
logger.info("Setup for TaggingServiceTest in an OSGi environment");
// Note: This timeout of 2 minutes is just for debugging purposes and should not be used in production!
securityService = ServiceTrackerFactory.createAndOpen(Activator.getContext(), SecurityService.class).waitForService(120 * 1000);
securityService = FullyInitializedReplicableTracker.createAndOpen(Activator.getContext(), SecurityService.class).getInitializedService(120 * 1000);
}
return securityService;
}