package net.ayld.facade.bundle.impl; import static junit.framework.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.util.Enumeration; import java.util.Set; import java.util.jar.JarEntry; import java.util.jar.JarFile; import net.ayld.facade.bundle.JarMaker; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import com.google.common.io.Resources; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath:META-INF/test-contexts/testManualJarMakerContext.xml"}) public class TestManualJarMaker { private static final Set<String> CORRECT_ZIPPED_ENTRY_NAMES = ImmutableSet.of( "net" + File.separator, Joiner.on(File.separator).join("net", "ayld") + File.separator, Joiner.on(File.separator).join("net", "ayld", "facade") + File.separator, Joiner.on(File.separator).join("net", "ayld", "facade", "model") + File.separator, Joiner.on(File.separator).join("net", "ayld", "facade", "model", "ClassName.class"), "org" + File.separator, Joiner.on(File.separator).join("org", "primefaces") + File.separator, Joiner.on(File.separator).join("org", "primefaces", "context") + File.separator, Joiner.on(File.separator).join("org", "primefaces", "context", "PrimePartialViewContext.class"), Joiner.on(File.separator).join("org", "apache") + File.separator, Joiner.on(File.separator).join("org", "apache", "commons") + File.separator, Joiner.on(File.separator).join("org", "apache", "commons", "lang3") + File.separator, Joiner.on(File.separator).join("org", "apache", "commons", "lang3", "CharRange$1.class") ); @Autowired private String workDir; @Autowired private JarMaker jarMaker; @Test public void zip() throws URISyntaxException, IOException { final Set<File> toZip = ImmutableSet.of( new File(Resources.getResource("test-classes/ClassName.class").toURI()), new File(Resources.getResource("test-classes/PrimePartialViewContext.class").toURI()), new File(Resources.getResource("test-classes/CharRange$1.class").toURI()) ); final JarFile jar = jarMaker.zip(toZip); assertTrue("zipped jar is null", jar != null); final Enumeration<JarEntry> entries = jar.entries(); while (entries.hasMoreElements()) { final JarEntry entry = entries.nextElement(); assertTrue("invalid entry: " + entry, CORRECT_ZIPPED_ENTRY_NAMES.contains(entry.getName())); } final File zipDir = new File(workDir); final Set<File> zipDirFiles = Sets.newHashSet(zipDir.listFiles()); assertTrue(jar.getName() + ", missing", zipDirFiles.contains(new File(jar.getName()))); } }