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
21 import java.io.ByteArrayInputStream;
22 import java.security.MessageDigest;
23
24 import org.apache.commons.codec.digest.DigestUtils;
25 import org.apache.commons.codec.digest.MessageDigestAlgorithms;
26 import org.apache.commons.io.input.MessageDigestCalculatingInputStream.Builder;
27 import org.junit.jupiter.api.Test;
28
29
30
31
32 @SuppressWarnings("deprecation")
33 public class MessageDigestCalculatingInputStreamTest {
34
35 @Test
36 public void testNormalUse() throws Exception {
37 for (int i = 256; i < 8192; i *= 2) {
38 final byte[] buffer = MessageDigestInputStreamTest.generateRandomByteStream(i);
39 final MessageDigest defaultMessageDigest = MessageDigestCalculatingInputStream.getDefaultMessageDigest();
40 final byte[] defaultExpect = defaultMessageDigest.digest(buffer);
41
42 try (MessageDigestCalculatingInputStream messageDigestInputStream = new MessageDigestCalculatingInputStream(new ByteArrayInputStream(buffer))) {
43 messageDigestInputStream.consume();
44 assertArrayEquals(defaultExpect, messageDigestInputStream.getMessageDigest().digest());
45 }
46 try (MessageDigestCalculatingInputStream messageDigestInputStream = MessageDigestCalculatingInputStream.builder()
47 .setInputStream(new ByteArrayInputStream(buffer)).get()) {
48 messageDigestInputStream.consume();
49 assertArrayEquals(defaultExpect, messageDigestInputStream.getMessageDigest().digest());
50 }
51 try (MessageDigestCalculatingInputStream messageDigestInputStream = MessageDigestCalculatingInputStream.builder().setByteArray(buffer).get()) {
52 messageDigestInputStream.consume();
53 assertArrayEquals(defaultExpect, messageDigestInputStream.getMessageDigest().digest());
54 }
55
56 final byte[] sha512Expect = DigestUtils.sha512(buffer);
57 {
58 final Builder builder = MessageDigestCalculatingInputStream.builder();
59 builder.setMessageDigest(MessageDigestAlgorithms.SHA_512);
60 builder.setInputStream(new ByteArrayInputStream(buffer));
61 try (MessageDigestCalculatingInputStream messageDigestInputStream = builder.get()) {
62 messageDigestInputStream.consume();
63 assertArrayEquals(sha512Expect, messageDigestInputStream.getMessageDigest().digest());
64 }
65 }
66 {
67 final Builder builder = MessageDigestCalculatingInputStream.builder();
68 builder.setMessageDigest(MessageDigestAlgorithms.SHA_512);
69 builder.setInputStream(new ByteArrayInputStream(buffer));
70 try (MessageDigestCalculatingInputStream messageDigestInputStream = builder.get()) {
71 messageDigestInputStream.consume();
72 assertArrayEquals(sha512Expect, messageDigestInputStream.getMessageDigest().digest());
73 }
74 }
75 }
76 }
77
78 }