package org.gcube.common.scope; import static org.junit.Assert.*; import java.net.URL; import java.net.URLClassLoader; import org.gcube.common.scope.api.ScopeProvider; import org.junit.After; import org.junit.Test; public class ConfigurationTest { private ClassLoader loader = Thread.currentThread().getContextClassLoader(); @Test public void alternativeProvidersCanBeConfigured() { addJarToClasspath("alternativeprovider.jar"); assertEquals("AlternativeScopeProvider",ScopeProvider.instance.getClass().getSimpleName()); } @Test public void multipleAlternativeProvidersCannotBeConfigured() { try { addJarToClasspath("multiplealternativeproviders.jar"); ScopeProvider.instance.set("shouldfail"); fail(); } catch(Error e) {} } private void addJarToClasspath(String jar) { URL jarURL = loader.getResource(jar); URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{jarURL},loader); Thread.currentThread().setContextClassLoader(urlClassLoader); } @After public void teardown() { Thread.currentThread().setContextClassLoader(loader); } }