*/
package eu.etaxonomy.taxeditor.httpinvoker;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
import java.lang.reflect.Field;
-import java.net.URL;
import java.util.Map;
-import java.util.Properties;
import net.sf.ehcache.CacheManager;
import org.apache.log4j.Logger;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Platform;
-import org.junit.Assert;
import org.junit.BeforeClass;
-import org.osgi.framework.Bundle;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.context.SecurityContextImpl;
-import org.unitils.UnitilsJUnit4;
import org.unitils.database.DatabaseUnitils;
import org.unitils.database.annotations.Transactional;
import org.unitils.database.util.TransactionMode;
import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher;
import eu.etaxonomy.taxeditor.remoting.source.CdmPersistentRemoteSource;
import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSource;
-import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSourceException;
import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource;
import eu.etaxonomy.taxeditor.session.CdmEntitySession;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
*/
@Transactional(TransactionMode.DISABLED)
@SpringApplicationContext("file:./target/classes/eu/etaxonomy/cdm/testRemotingApplicationContext.xml")
-public abstract class BaseRemotingTest extends UnitilsJUnit4 {
- private static final Logger logger = Logger.getLogger(BaseRemotingTest.class);
-
-
- public static final Resource SERVER_PROPERTIES_FILE =
- new ClassPathResource("server.properties");
+public abstract class BaseRemotingTest extends ThreadedTest {
+ @SuppressWarnings("unused")
+ private static final Logger logger = Logger.getLogger(BaseRemotingTest.class);
private static ICdmRemoteSource cdmRemoteSource;
private static CdmPersistentRemoteSource remotePersistentSource;
-
- public static boolean useManagedServer = true;
-
-
protected static ICdmEntitySessionManager cdmEntitySessionManager;
- private final static String DEFAULT_USER = "admin";
- private final static String DEFAULT_PASSWORD = "00000";
-
- private static String userHomeKey = "user.home";
-
- private static String user = DEFAULT_USER;
- private static String password = DEFAULT_PASSWORD;
-
- protected static CDMServer cdmServer;
-
@BeforeClass
public static void initializeBaseRemotingTest() {
DatabaseUnitils.disableConstraints();
try {
- String userHomeDirPath;
- Bundle bundle = Platform.getBundle("eu.etaxonomy.taxeditor.test");
-
- URL userHomeDirURL = bundle.getEntry("src/test/resources");
- File userHomeDir = new File(FileLocator.resolve(userHomeDirURL).toURI());
- userHomeDirPath = userHomeDir.getAbsolutePath();
-
- URL serverPropertiesURL = bundle.getEntry("src/test/resources/server.properties");
- File serverPropertiesFile = new File(FileLocator.resolve(serverPropertiesURL).toURI());
- InputStream inputStream = new FileInputStream(serverPropertiesFile);
-
- Properties prop = new Properties();
- if (inputStream != null) {
- prop.load(inputStream);
- inputStream.close();
- }
-
- logger.info("Setting user.home to " + userHomeDirPath);
- System.setProperty(userHomeKey, userHomeDirPath);
-
-
- cdmServer = new CDMServer("cdmTest", serverPropertiesURL);
-
-
- if(prop.getProperty("user") != null) {
- user = prop.getProperty("user");
- }
-
- if(prop.getProperty("password") != null) {
- password = prop.getProperty("password");
- }
-
- initializeController(cdmServer.getName(),
- cdmServer.getHost(),
- cdmServer.getPort(),
- cdmServer.getContextPath(),
+ initializeController(sourceName,
+ host,
+ httpPort,
+ contextPath,
NomenclaturalCode.ICNAFP,
user,
password);
// Assert.fail("Server failed to start. Reason : " + e.getMessage());
}
- logger.info("Emptying all caches (except model cache) ");
- //emptyAllCachesExceptModelCache();
+
}
public static void emptyAllCachesExceptModelCache() {
null);
CdmApplicationState.setCurrentAppConfig(remoteApplicationController);
CdmApplicationState.setCdmServiceCacher(new CdmServiceCacher());
- try {
- remotePersistentSource = CdmPersistentRemoteSource.NewInstance(sourceName);
- } catch (CdmRemoteSourceException e) {
- Assert.fail("Default Remote Persistent Source failed to load. Reason : " + e.getMessage());
- }
+
cdmEntitySessionManager = getRemoteApplicationController().getCdmEntitySessionManager();
CdmApplicationState.setCurrentDataChangeService(new CdmDataChangeService());
+ authenticate(username, password);
+
+ }
+
+ protected static void authenticate(String username, String password) {
+
//FIXME:Remoting the authentication code should be replaced by a method call which actually
// does the authentication in the editor code so that the 'real' authentication can be tested
SecurityContextHolder.clearContext();
SecurityContextHolder.setContext(sc);
CdmApplicationState.setCurrentSecurityContext(SecurityContextHolder.getContext());
- }
+ }
protected static CdmApplicationRemoteController getRemoteApplicationController() {
}
protected static CdmEntitySession getActiveSession() {
- return (CdmEntitySession) getFieldValueViaReflection(cdmEntitySessionManager, "activeSession");
+ return ((InheritableThreadLocal<CdmEntitySession>) getFieldValueViaReflection(cdmEntitySessionManager, "tlActiveSession")).get();
}
protected static CdmTransientEntityCacher getCacher(ICdmEntitySessionEnabled sessionOwner) {
}
+ protected static void authenticateDefaultUser() {
+ authenticate(user, password);
+ }
}