/* * 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.harmony.security.tests.java.security; import dalvik.annotation.TestTargetClass; import dalvik.annotation.TestTargets; import dalvik.annotation.TestLevel; import dalvik.annotation.TestTargetNew; import java.net.URL; import java.security.CodeSigner; import java.security.CodeSource; import java.security.Timestamp; import java.security.cert.CertPath; import java.security.cert.Certificate; import java.util.Arrays; import java.util.Date; import org.apache.harmony.security.tests.support.TestCertUtils; @TestTargetClass(CodeSource.class) public class CodeSource2Test extends junit.framework.TestCase { /** * @throws Exception * @tests java.security.CodeSource#CodeSource(java.net.URL, * java.security.cert.Certificate[]) */ @TestTargetNew( level = TestLevel.PARTIAL, notes = "Verifies constructor with valid URL and null certificate array", method = "CodeSource", args = {java.net.URL.class, java.security.cert.Certificate[].class} ) public void test_ConstructorLjava_net_URL$Ljava_security_cert_Certificate() throws Exception { // Test for method java.security.CodeSource(java.net.URL, // java.security.cert.Certificate []) new CodeSource(new java.net.URL("file:///test"), (Certificate[]) null); } /** * @throws Exception * @tests java.security.CodeSource#CodeSource(java.net.URL, * java.security.CodeSigner[]) */ @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "CodeSource", args = {java.net.URL.class, java.security.CodeSigner[].class} ) public void test_ConstructorLjava_net_URL$Ljava_security_CodeSigner() { // Test for method java.security.CodeSource(java.net.URL, // java.security.cert.CodeSigner []) try { new CodeSource(new URL("file:///test"), (CodeSigner[]) null); } catch (Exception e) { fail("Unexpected Exception"); } try { new CodeSource(null, (CodeSigner[]) null); } catch (Exception e) { fail("Unexpected Exception"); } CertPath cpath = TestCertUtils.genCertPath(3, 0); Date now = new Date(); Timestamp ts = new Timestamp(now, cpath); CodeSigner cs = new CodeSigner(cpath, ts); try { CodeSource codeSource = new CodeSource(new URL("file:///test"), new CodeSigner[] { cs }); assertNotNull(codeSource.getCertificates()); assertNotNull(codeSource.getCodeSigners()); assertTrue(Arrays.equals(new CodeSigner[] { cs }, codeSource.getCodeSigners())); assertEquals(new URL("file:///test"), codeSource.getLocation()); } catch (Exception e) { fail("Unexpected Exception"); } } /** * @tests java.security.CodeSource#equals(java.lang.Object) */ @TestTargetNew( level = TestLevel.PARTIAL, notes = "CodeSource object was created with CodeSource(URL url, Certificate[] certs) only", method = "equals", args = {java.lang.Object.class} ) public void test_equalsLjava_lang_Object() throws Exception { // Test for method boolean // java.security.CodeSource.equals(java.lang.Object) CodeSource cs1 = new CodeSource(new java.net.URL("file:///test"), (Certificate[]) null); CodeSource cs2 = new CodeSource(new java.net.URL("file:///test"), (Certificate[]) null); assertTrue("Identical objects were not equal()!", cs1.equals(cs2)); } /** * @tests java.security.CodeSource#hashCode() */ @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "hashCode", args = {} ) public void test_hashCode() throws Exception { URL url = new java.net.URL("file:///test"); CodeSource cs = new CodeSource(url, (Certificate[]) null); assertEquals("Did not get expected hashCode!", cs.hashCode(), url .hashCode()); } /** * @tests java.security.CodeSource#getCertificates() */ @TestTargetNew( level = TestLevel.PARTIAL, notes = "Verifies case for null certificates only", method = "getCertificates", args = {} ) public void test_getCertificates() throws Exception { CodeSource cs = new CodeSource(new java.net.URL("file:///test"), (Certificate[]) null); assertNull("Should have gotten null certificate list.", cs .getCertificates()); } /** * @tests java.security.CodeSource#getLocation() */ @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "getLocation", args = {} ) public void test_getLocation() throws Exception { // Test for method java.net.URL java.security.CodeSource.getLocation() CodeSource cs = new CodeSource(new java.net.URL("file:///test"), (Certificate[]) null); assertEquals("Did not get expected location!", "file:/test", cs .getLocation().toString()); assertNotNull("Host should not be null", cs.getLocation().getHost()); } /** * @tests java.security.CodeSource#implies(java.security.CodeSource) */ @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "implies", args = {java.security.CodeSource.class} ) public void test_impliesLjava_security_CodeSource() throws Exception { // Test for method boolean // java.security.CodeSource.implies(java.security.CodeSource) CodeSource cs1 = new CodeSource(new URL("file:/d:/somedir"), (Certificate[]) null); CodeSource cs2 = new CodeSource(new URL("file:/d:/somedir/"), (Certificate[]) null); assertTrue("Does not add /", cs1.implies(cs2)); cs1 = new CodeSource(new URL("file", null, -1, "/d:/somedir/"), (Certificate[]) null); cs2 = new CodeSource(new URL("file:/d:/somedir/"), (Certificate[]) null); assertTrue("null host should imply host", cs1.implies(cs2)); assertFalse("host should not imply null host", cs2.implies(cs1)); } }