diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java b/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java new file mode 100644 index 00000000..95585fde --- /dev/null +++ b/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.tools.ant.taskdefs; + +import java.io.File; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.BuildFileRule; +import org.apache.tools.ant.util.JavaEnvUtils; +import org.junit.Assume; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +/** + * Testcase for the Signjar task + * + */ +public class SignJarTest { + + @Rule + public BuildFileRule buildRule = new BuildFileRule(); + + @Before + public void setUp() { + buildRule.configureProject("src/etc/testcases/taskdefs/signjar.xml"); + } + + /** + * check for being offline + * @return true if the system property "offline" is "true" + */ + private boolean isOffline() { + return Boolean.getBoolean("offline"); + } + + @Test + public void testSigFile() { + buildRule.executeTarget("sigfile"); + SignJarChild sj = new SignJarChild(); + sj.setAlias("testonly"); + sj.setKeystore("testkeystore"); + sj.setStorepass("apacheant"); + File jar = new File(buildRule.getProject().getProperty("test.jar")); + sj.setJar(jar); + assertFalse("mustn't find signature without sigfile attribute", + sj.isSigned()); + sj.setSigfile("TEST"); + assertTrue("must find signature with sigfile attribute", + sj.isSigned()); + } + + @Test + public void testInvalidChars() { + buildRule.executeTarget("invalidchars"); + SignJarChild sj = new SignJarChild(); + sj.setAlias("test@nly"); + sj.setKeystore("testkeystore"); + sj.setStorepass("apacheant"); + File jar = new File(buildRule.getProject().getProperty("test.jar")); + sj.setJar(jar); + assertTrue(sj.isSigned()); + } + + /** + * subclass in order to get access to protected isSigned method if + * tests and task come from different classloaders. + */ + private static class SignJarChild extends SignJar { + public boolean isSigned() { + return isSigned(jar); + } + } + + @Test + public void testURLKeystoreFile() { + buildRule.executeTarget("urlKeystoreFile"); + } + + @Test + public void testURLKeystoreHTTP() { + Assume.assumeFalse("Test is set offline", isOffline()); + buildRule.executeTarget("urlKeystoreHTTP"); + } + + @Test + public void testTsaLocalhost() { + Assume.assumeTrue("Only runs on Java 1.5+", JavaEnvUtils.getJavaVersionNumber()>=15); + try { + buildRule.executeTarget("testTsaLocalhost"); + fail("Should have thrown exception - no TSA at localhost:0"); + } catch(BuildException ex) { + assertEquals("jarsigner returned: 1", ex.getMessage()); + } + } + + /** + * @see <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=50081">bug 50081</a> + */ + @Test + public void testSignUnnormalizedJar() throws Exception { + buildRule.executeTarget("jar"); + File testJar = new File(buildRule.getProject().getProperty("test.jar")); + File testJarParent = testJar.getParentFile(); + File f = new File(testJarParent, + "../" + testJarParent.getName() + "/" + + testJar.getName()); + assertFalse(testJar.equals(f)); + assertEquals(testJar.getCanonicalPath(), f.getCanonicalPath()); + SignJar s = new SignJar(); + s.setProject(buildRule.getProject()); + s.setJar(f); + s.setAlias("testonly"); + s.setStorepass("apacheant"); + s.setKeystore("testkeystore"); + s.execute(); + } +} |