package info.freelibrary.util; import static org.junit.Assert.fail; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.HashSet; import java.util.Set; import java.util.UUID; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import org.junit.Before; import org.junit.Test; public class ZipUtilsTest { private final File myTmpDir = new File(System.getProperty("java.io.tmpdir")); private final Set<String> myFiles = new HashSet<String>(); @Before public void beforeTest() { final String[] files = new String[] { "/test_folder/test_folder2/test_file1.txt", "/test_folder/test_folder2/test_folder/test_file1.txt", "/test_folder/test_file1.txt", "/test_folder/test_folder/test_file1.txt", "/test_folder/test_folder/test_file2.txt" }; for (final String file : files) { myFiles.add(file); } } @Test public void testZipFileFile() throws IOException { final File zipFile = new File(myTmpDir, "ziptest-" + UUID.randomUUID().toString() + ".zip"); final File testDir = new File("src/test/resources"); final File dir = new File(testDir, "test_folder"); final ZipInputStream zipStream; zipFile.deleteOnExit(); ZipEntry zipEntry; ZipUtils.zip(dir, zipFile); zipStream = new ZipInputStream(new FileInputStream(zipFile)); while ((zipEntry = zipStream.getNextEntry()) != null) { final String name = zipEntry.getName(); if (!myFiles.remove(name)) { fail("Found an unexpected zip entry: " + name); } } IOUtils.closeQuietly(zipStream); if (myFiles.size() != 0) { fail("Failed to find all the zip entries"); } } @Test public void testZipFileFileFileArray() throws IOException { final File zipFile = new File(myTmpDir, "ziptest-" + UUID.randomUUID().toString() + ".zip"); final File testDir = new File("src/test/resources"); final File dir = new File(testDir, "test_folder"); final File other = new File(testDir, "80_char_test_1.txt"); final ZipInputStream zipStream; zipFile.deleteOnExit(); ZipEntry zipEntry; ZipUtils.zip(dir, zipFile, other); zipStream = new ZipInputStream(new FileInputStream(zipFile)); myFiles.add("/test_folder/80_char_test_1.txt"); while ((zipEntry = zipStream.getNextEntry()) != null) { final String name = zipEntry.getName(); if (!myFiles.remove(name)) { fail("Found an unexpected zip entry: " + name); } } IOUtils.closeQuietly(zipStream); if (myFiles.size() != 0) { fail("Failed to find all the zip entries"); } } @Test public void testZipFileFileFilenameFilterFileArray() throws IOException { final File zipFile = new File(myTmpDir, "ziptest-" + UUID.randomUUID().toString() + ".zip"); final File testDir = new File("src/test/resources"); final File dir = new File(testDir, "test_folder"); final File other = new File(testDir, "80_char_test_1.txt"); final ZipInputStream zipStream; zipFile.deleteOnExit(); ZipEntry zipEntry; ZipUtils.zip(dir, zipFile, new FileExtFileFilter("txt"), other); zipStream = new ZipInputStream(new FileInputStream(zipFile)); myFiles.add("/test_folder/80_char_test_1.txt"); while ((zipEntry = zipStream.getNextEntry()) != null) { final String name = zipEntry.getName(); if (!myFiles.remove(name)) { fail("Found an unexpected zip entry: " + name); } } IOUtils.closeQuietly(zipStream); if (myFiles.size() != 0) { fail("Failed to find all the zip entries"); } } }