1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.io.input;
18
19 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
20 import static org.junit.jupiter.api.Assertions.assertThrows;
21
22 import java.io.ByteArrayInputStream;
23 import java.util.Random;
24
25 import org.apache.commons.codec.digest.DigestUtils;
26 import org.apache.commons.codec.digest.MessageDigestAlgorithms;
27 import org.junit.jupiter.api.Test;
28
29
30
31
32 public class MessageDigestInputStreamTest {
33
34 static byte[] generateRandomByteStream(final int pSize) {
35 final byte[] buffer = new byte[pSize];
36 final Random rnd = new Random();
37 rnd.nextBytes(buffer);
38 return buffer;
39 }
40
41 @Test
42 public void testNoDefault() throws Exception {
43 assertThrows(IllegalStateException.class, () -> MessageDigestInputStream.builder().get());
44 assertThrows(NullPointerException.class, () -> MessageDigestInputStream.builder().setInputStream(new ByteArrayInputStream(new byte[] { 1 })).get());
45 }
46
47 @Test
48 public void testNormalUse() throws Exception {
49 for (int i = 256; i < 8192; i *= 2) {
50 final byte[] buffer = generateRandomByteStream(i);
51 final byte[] expect = DigestUtils.sha512(buffer);
52 try (MessageDigestInputStream messageDigestInputStream = MessageDigestInputStream.builder().setMessageDigest(MessageDigestAlgorithms.SHA_512)
53 .setInputStream(new ByteArrayInputStream(buffer)).get()) {
54 messageDigestInputStream.consume();
55 assertArrayEquals(expect, messageDigestInputStream.getMessageDigest().digest());
56 }
57 try (MessageDigestInputStream messageDigestInputStream = MessageDigestInputStream.builder().setByteArray(buffer)
58 .setMessageDigest(DigestUtils.getSha512Digest()).get()) {
59 messageDigestInputStream.consume();
60 assertArrayEquals(expect, messageDigestInputStream.getMessageDigest().digest());
61 }
62 }
63 }
64
65 }