package gov.loc.repository.bagit; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import gov.loc.repository.bagit.domain.Bag; import gov.loc.repository.bagit.reader.BagReader; import gov.loc.repository.bagit.verify.BagVerifier; import gov.loc.repository.bagit.writer.BagWriter; public class ReaderWriterVerifierIntegrationTest { @Rule public TemporaryFolder folder= new TemporaryFolder(); @Test public void testReaderWriterVersion93() throws Exception{ BagVerifier verifier = new BagVerifier(); BagReader reader = new BagReader(); Path rootDir = Paths.get(this.getClass().getClassLoader().getResource("bags/v0_93/bag").toURI()); Path outputDir = Paths.get(folder.newFolder().toURI()); Bag bag = reader.read(rootDir); verifier.isValid(bag, true); BagWriter.write(bag, outputDir); testBagsEqual(rootDir, outputDir); verifier.isValid(reader.read(outputDir), true); } @Test public void testReaderWriterVersion94() throws Exception{ BagReader reader = new BagReader(); Path rootDir = Paths.get(this.getClass().getClassLoader().getResource("bags/v0_94/bag").toURI()); Bag bag = reader.read(rootDir); Path outputDir = Paths.get(folder.newFolder().toURI()); BagWriter.write(bag, outputDir); testBagsEqual(rootDir, outputDir); BagVerifier verifier = new BagVerifier(); verifier.isValid(reader.read(outputDir), true); } @Test public void testReaderWriterVersion95() throws Exception{ BagReader reader = new BagReader(); Path rootDir = Paths.get(this.getClass().getClassLoader().getResource("bags/v0_95/bag").toURI()); Bag bag = reader.read(rootDir); Path outputDir = Paths.get(folder.newFolder().toURI()); BagWriter.write(bag, outputDir); testBagsEqual(rootDir, outputDir); BagVerifier verifier = new BagVerifier(); verifier.isValid(reader.read(outputDir), true); } @Test public void testReaderWriterVersion96() throws Exception{ BagReader reader = new BagReader(); Path rootDir = Paths.get(this.getClass().getClassLoader().getResource("bags/v0_96/bag").toURI()); Bag bag = reader.read(rootDir); Path outputDir = Paths.get(folder.newFolder().toURI()); BagWriter.write(bag, outputDir); testBagsEqual(rootDir, outputDir); BagVerifier verifier = new BagVerifier(); verifier.isValid(reader.read(outputDir), true); } @Test public void testReaderWriterVersion97() throws Exception{ BagReader reader = new BagReader(); Path rootDir = Paths.get(this.getClass().getClassLoader().getResource("bags/v0_97/bag").toURI()); Bag bag = reader.read(rootDir); Path outputDir = Paths.get(folder.newFolder().toURI()); BagWriter.write(bag, outputDir); testBagsEqual(rootDir, outputDir); BagVerifier verifier = new BagVerifier(); verifier.isValid(reader.read(outputDir), true); } @Test public void testReaderWriterVersion2_0() throws Exception{ BagReader reader = new BagReader(); Path rootDir = Paths.get(this.getClass().getClassLoader().getResource("bags/v2_0/bag").toURI()); Bag bag = reader.read(rootDir); Path outputDir = Paths.get(folder.newFolder().toURI()); BagWriter.write(bag, outputDir); testBagsEqual(rootDir, outputDir); BagVerifier verifier = new BagVerifier(); verifier.isValid(reader.read(outputDir), true); } private void testBagsEqual(Path originalBag, Path newBag) throws IOException{ Files.walkFileTree(originalBag, new FileExistsVistor(originalBag, newBag)); } }