/*******************************************************************************
* Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Marc R. Hoffmann - initial API and implementation
*
*******************************************************************************/
package org.jacoco.core.internal.instr;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.jar.Manifest;
import org.junit.Before;
import org.junit.Test;
/**
* Unit tests for {@link SignatureRemover}.
*/
public class SignatureRemoverTest {
private SignatureRemover remover;
@Before
public void setup() {
remover = new SignatureRemover();
}
@Test
public void testRemoveNegative1() {
assertFalse(remover.removeEntry("META-INF/ALIAS.MF"));
}
@Test
public void testRemoveNegative2() {
assertFalse(remover.removeEntry("META-INF/sub/ALIAS.SF"));
}
@Test
public void testRemoveNegative3() {
remover.setActive(false);
assertFalse(remover.removeEntry("META-INF/SIG-ALIAS"));
}
@Test
public void testRemovePositive1() {
assertTrue(remover.removeEntry("META-INF/ALIAS.SF"));
}
@Test
public void testRemovePositive2() {
assertTrue(remover.removeEntry("META-INF/ALIAS.RSA"));
}
@Test
public void testRemovePositive3() {
assertTrue(remover.removeEntry("META-INF/ALIAS.DSA"));
}
@Test
public void testRemovePositive4() {
assertTrue(remover.removeEntry("META-INF/SIG-ALIAS"));
}
@Test
public void testFilterNegative1() throws IOException {
assertFalse(remover.filterEntry("MANIFEST.MF", null, null));
}
@Test
public void testFilterNegative2() throws IOException {
remover.setActive(false);
assertFalse(remover.filterEntry("META-INF/MANIFEST.MF", null, null));
}
@Test
public void testFilterPositive1() throws IOException {
String original = "Manifest-Version: 1.0\r\n"
+ "Created-By: Apache Maven\r\n" //
+ "Bundle-SymbolicName: org.jacoco.core\r\n" //
+ "\r\n"//
+ "Name: org/jacoco/example/A.class\r\n" //
+ "SHA1-Digest: z1ly8OewPb9LOCpfNaIAhEgXZ5I=\r\n" //
+ "\r\n" //
+ "Name: org/jacoco/example/B.class\r\n" //
+ "SHA1-Digest: nfE4+Vmekj0pE5z0m0frpb10Gl0=\r\n" //
+ "OtherInfo: keep this\r\n" //
+ "\r\n" //
+ "Name: org/jacoco/example/C.class\r\n" //
+ "SHA1-Digest: xaNEXNWCrlTVcqPrXL0TwTcsvXU=\r\n";
InputStream in = new ByteArrayInputStream(
original.getBytes("ISO-8859-1"));
ByteArrayOutputStream out = new ByteArrayOutputStream();
assertTrue(remover.filterEntry("META-INF/MANIFEST.MF", in, out));
String expected = "Manifest-Version: 1.0\r\n"
+ "Created-By: Apache Maven\r\n" //
+ "Bundle-SymbolicName: org.jacoco.core\r\n" //
+ "\r\n"//
+ "Name: org/jacoco/example/B.class\r\n" //
+ "OtherInfo: keep this\r\n" //
+ "\r\n";
assertEquals(
createManifest(expected.getBytes("ISO-8859-1")),
createManifest(out.toByteArray()));
}
private static Manifest createManifest(final byte[] bytes)
throws IOException {
return new Manifest(
new ByteArrayInputStream(bytes));
}
}