package liquibase.servicelocator; import java.io.File; import java.lang.reflect.Modifier; import java.net.MalformedURLException; import java.net.URL; import liquibase.database.Database; import liquibase.parser.ChangeLogParser; import liquibase.resource.ClassLoaderResourceAccessor; import liquibase.resource.CompositeResourceAccessor; import liquibase.test.TestContext; import org.junit.After; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public class ServiceLocatorTest { private ServiceLocator serviceLocator; @Before public void setup() throws Exception{ CompositeResourceAccessor resourceAccessor = new CompositeResourceAccessor(new ClassLoaderResourceAccessor(), TestContext.getInstance().getTestResourceAccessor()); serviceLocator = ServiceLocator.getInstance(); serviceLocator.setResourceAccessor(resourceAccessor); } @After public void teardown() { ServiceLocator.reset(); } @Test public void reset() { ServiceLocator instance1 = ServiceLocator.getInstance(); ServiceLocator.reset(); assertFalse(instance1 == ServiceLocator.getInstance()); } @Test public void getClasses() throws Exception { Class[] classes = serviceLocator.findClasses(ChangeLogParser.class); assertTrue(classes.length > 0); } @Test public void findClass() throws Exception { Class[] classes = serviceLocator.findClasses(Database.class); for (Class clazz : classes) { assertFalse(clazz.getName()+" is abstract", Modifier.isAbstract(clazz.getModifiers())); assertFalse(clazz.getName()+" is an interface", Modifier.isInterface(clazz.getModifiers())); assertNotNull(clazz.getConstructors()); } assertTrue(classes.length > 0); } // @Test // public void extractZipFile() throws MalformedURLException { // File zipFile = ServiceLocator.extractZipFile(new URL( // "jar:file:/C:/My%20Projects/liquibase2/liquibase-integration-tests/src/test/resources/ext/jars/liquibase-samplesqlgenerator.jar!/liquibase/sqlgenerator")); // assertEquals("C:/My Projects/liquibase2/liquibase-integration-tests/src/test/resources/ext/jars/liquibase-samplesqlgenerator.jar", zipFile.toString().replace( // '\\', '/')); // zipFile = ServiceLocator.extractZipFile(new URL( // "jar:file:/home/myuser/liquibase2/liquibase-integration-tests/src/test/resources/ext/jars/liquibase-samplesqlgenerator.jar!/liquibase/sqlgenerator")); // assertEquals("/home/myuser/liquibase2/liquibase-integration-tests/src/test/resources/ext/jars/liquibase-samplesqlgenerator.jar", zipFile.toString().replace('\\', // '/')); // } }