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.Header;
34 import org.apache.hc.core5.http.WritableByteChannelMock;
35 import org.apache.hc.core5.http.ContentType;
36 import org.apache.hc.core5.http.nio.BasicDataStreamChannel;
37 import org.junit.Assert;
38 import org.junit.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 WritableByteChannelMocknelMock.html#WritableByteChannelMock">WritableByteChannelMock byteChannel = new WritableByteChannelMock(1024);
49 final BasicDataStreamChannelannel.html#BasicDataStreamChannel">BasicDataStreamChannel dataStreamChannel = new BasicDataStreamChannel(byteChannel);
50 while (byteChannel.isOpen()) {
51 producer.produce(dataStreamChannel);
52 }
53
54 Assert.assertEquals("12345", byteChannel.dump(StandardCharsets.US_ASCII));
55 final List<Header> trailers = dataStreamChannel.getTrailers();
56 Assert.assertNotNull(trailers);
57 Assert.assertEquals(2, trailers.size());
58
59 Assert.assertEquals("digest-algo", trailers.get(0).getName());
60 Assert.assertEquals("MD5", trailers.get(0).getValue());
61 Assert.assertEquals("digest", trailers.get(1).getName());
62 Assert.assertEquals("0827c0cb0e0ea08a706c4c340a1680910f84e7b", trailers.get(1).getValue());
63 }
64
65 }