package gov.loc.repository.bagit.hash; import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.nio.file.Path; import java.nio.file.Paths; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import gov.loc.repository.bagit.PrivateConstructorTest; public class HasherTest extends PrivateConstructorTest { @Rule public TemporaryFolder folder= new TemporaryFolder(); @Test public void testClassIsWellDefined() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException{ assertUtilityClassWellDefined(Hasher.class); } @Test public void testBasicHash() throws IOException, NoSuchAlgorithmException{ Path path = Paths.get(new File("src/test/resources/bagitFiles/bagit-0.97.txt").toURI()); MessageDigest messageDigest = MessageDigest.getInstance("MD5"); String expectedHash = "41b89090f32a9ef33226b48f1b98dddf"; String hash = Hasher.hash(path, messageDigest); assertEquals(expectedHash, hash); } @Test(expected=IOException.class) public void testHashBadInput() throws IOException, NoSuchAlgorithmException{ Path path = folder.newFolder().toPath(); MessageDigest messageDigest = MessageDigest.getInstance("MD5"); Hasher.updateMessageDigests(path, Arrays.asList(messageDigest)); } }