1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.core5.http.nio.entity;
29
30 import java.nio.charset.StandardCharsets;
31 import java.util.List;
32
33 import org.apache.hc.core5.http.ContentType;
34 import org.apache.hc.core5.http.Header;
35 import org.apache.hc.core5.http.WritableByteChannelMock;
36 import org.apache.hc.core5.http.nio.BasicDataStreamChannel;
37 import org.junit.jupiter.api.Assertions;
38 import org.junit.jupiter.api.Test;
39
40 public class TestDigestingEntityProducer {
41
42 @Test
43 public void testProduceData() throws Exception {
44
45 final DigestingEntityProducer producer = new DigestingEntityProducer("MD5",
46 new StringAsyncEntityProducer("12345", ContentType.TEXT_PLAIN));
47
48 final WritableByteChannelMock byteChannel = new WritableByteChannelMock(1024);
49 final BasicDataStreamChannel dataStreamChannel = new BasicDataStreamChannel(byteChannel);
50 while (byteChannel.isOpen()) {
51 producer.produce(dataStreamChannel);
52 }
53
54 Assertions.assertEquals("12345", byteChannel.dump(StandardCharsets.US_ASCII));
55 final List<Header> trailers = dataStreamChannel.getTrailers();
56 Assertions.assertNotNull(trailers);
57 Assertions.assertEquals(2, trailers.size());
58
59 Assertions.assertEquals("digest-algo", trailers.get(0).getName());
60 Assertions.assertEquals("MD5", trailers.get(0).getValue());
61 Assertions.assertEquals("digest", trailers.get(1).getName());
62 Assertions.assertEquals("827ccb0eea8a706c4c34a16891f84e7b", trailers.get(1).getValue());
63 }
64
65 }