/******************************************************************************* * 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)); } }