View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.commons.compress.archivers.sevenz;
20  
21  import static org.junit.jupiter.api.Assertions.assertEquals;
22  import static org.junit.jupiter.api.Assertions.assertThrows;
23  
24  import java.io.BufferedInputStream;
25  import java.io.IOException;
26  import java.io.InputStream;
27  import java.io.ObjectInputStream;
28  
29  import org.junit.jupiter.api.Test;
30  
31  /**
32   * Unit tests for class {@link AES256SHA256Decoder}.
33   *
34   * @see AES256SHA256Decoder
35   **/
36  public class AES256SHA256DecoderTest {
37  
38      @Test
39      public void testDecodeWithNonEmptyString() throws IOException {
40  
41          final AES256SHA256Decoder aES256SHA256Decoder = new AES256SHA256Decoder();
42          try (BufferedInputStream bufferedInputStream = new BufferedInputStream(null, 3138)) {
43              final byte[] byteArray = new byte[8];
44              byteArray[1] = (byte) -72;
45              final Coder coder = new Coder(null, 0, 0, byteArray);
46              try (InputStream inputStream = aES256SHA256Decoder.decode("x", bufferedInputStream, 3138, coder, coder.properties, Integer.MAX_VALUE)) {
47                  final IOException e = assertThrows(IOException.class, () -> new ObjectInputStream(inputStream), "Expecting exception: IOException");
48                  assertEquals("Salt size + IV size too long in x", e.getMessage());
49                  assertEquals("org.apache.commons.compress.archivers.sevenz.AES256SHA256Decoder$AES256SHA256DecoderInputStream",
50                          e.getStackTrace()[0].getClassName());
51              }
52          }
53      }
54  
55  }