View Javadoc
1   /*
2    * ====================================================================
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   * ====================================================================
20   *
21   * This software consists of voluntary contributions made by many
22   * individuals on behalf of the Apache Software Foundation.  For more
23   * information on the Apache Software Foundation, please see
24   * <http://www.apache.org/>.
25   *
26   */
27  
28  package org.apache.hc.core5.http.nio.entity;
29  
30  import java.io.IOException;
31  import java.nio.file.Files;
32  import java.nio.file.LinkOption;
33  import java.nio.file.Path;
34  import java.nio.file.Paths;
35  import java.nio.file.StandardOpenOption;
36  
37  import org.apache.hc.core5.http.ContentType;
38  import org.apache.hc.core5.http.Header;
39  import org.apache.hc.core5.http.message.BasicHeader;
40  import org.apache.hc.core5.http.nio.AsyncEntityProducer;
41  import org.junit.jupiter.api.Assertions;
42  import org.junit.jupiter.api.Test;
43  
44  /**
45   * Tests {@link AsyncEntityProducers}.
46   */
47  public class TestAsyncEntityProducers {
48  
49      @Test
50      public void testPathEntityProducer() throws IOException {
51          final Path path = Paths.get("src/test/resources/test-ssl.txt");
52          final AsyncEntityProducer producer = AsyncEntityProducers.create(path, ContentType.APPLICATION_OCTET_STREAM,
53                  StandardOpenOption.READ, LinkOption.NOFOLLOW_LINKS);
54          try {
55              Assertions.assertFalse(producer.isChunked());
56              Assertions.assertEquals(Files.size(path), producer.getContentLength());
57              Assertions.assertEquals(ContentType.APPLICATION_OCTET_STREAM.toString(), producer.getContentType());
58          } finally {
59              producer.releaseResources();
60          }
61      }
62  
63      @Test
64      public void testPathEntityProducerWithTrailers() throws IOException {
65          final Path path = Paths.get("src/test/resources/test-ssl.txt");
66          final Header header1 = new BasicHeader("Tailer1", "Value1");
67          final Header header2 = new BasicHeader("Tailer2", "Value2");
68          final AsyncEntityProducer producer = AsyncEntityProducers.create(path, ContentType.APPLICATION_OCTET_STREAM,
69                  header1, header2);
70          try {
71              Assertions.assertTrue(producer.isChunked());
72              Assertions.assertEquals(-1, producer.getContentLength());
73              Assertions.assertEquals(ContentType.APPLICATION_OCTET_STREAM.toString(), producer.getContentType());
74          } finally {
75              producer.releaseResources();
76          }
77      }
78  }