VerificationParamsTest.java revision 706e8ba26bf0de19ad5f736516dae40c4c88c2d7
1706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings/* 2706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * Copyright (C) 2012 The Android Open Source Project 3706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * 4706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * Licensed under the Apache License, Version 2.0 (the "License"); 5706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * you may not use this file except in compliance with the License. 6706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * You may obtain a copy of the License at 7706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * 8706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * http://www.apache.org/licenses/LICENSE-2.0 9706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * 10706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * Unless required by applicable law or agreed to in writing, software 11706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * distributed under the License is distributed on an "AS IS" BASIS, 12706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * See the License for the specific language governing permissions and 14706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * limitations under the License. 15706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings */ 16706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 17706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich canningspackage android.content.pm; 18706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 19706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich canningsimport android.content.pm.ManifestDigest; 20706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich canningsimport android.content.pm.VerificationParams; 21706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich canningsimport android.net.Uri; 22706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich canningsimport android.os.Parcel; 23706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich canningsimport android.test.AndroidTestCase; 24706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 25706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings/** 26706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * Tests the android.content.pm.VerificationParams class 27706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * 28706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * To test run: 29706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings * ./development/testrunner/runtest.py frameworks-core -c android.content.pm.VerificationParamsTest 30706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings */ 31706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich canningspublic class VerificationParamsTest extends AndroidTestCase { 32706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 33706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings private final static String VERIFICATION_URI_STRING = "http://verification.uri/path"; 34706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings private final static String ORIGINATING_URI_STRING = "http://originating.uri/path"; 35706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings private final static String REFERRER_STRING = "http://referrer.uri/path"; 36706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings private final static byte[] DIGEST_BYTES = "fake digest".getBytes(); 37706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 38706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings private final static Uri VERIFICATION_URI = Uri.parse(VERIFICATION_URI_STRING); 39706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings private final static Uri ORIGINATING_URI = Uri.parse(ORIGINATING_URI_STRING); 40706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings private final static Uri REFERRER = Uri.parse(REFERRER_STRING); 41706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 42706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings private final static ManifestDigest MANIFEST_DIGEST = new ManifestDigest(DIGEST_BYTES); 43706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 44706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testParcel() throws Exception { 45706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams expected = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 46706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 47706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 48706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Parcel parcel = Parcel.obtain(); 49706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings expected.writeToParcel(parcel, 0); 50706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings parcel.setDataPosition(0); 51706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 52706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams actual = VerificationParams.CREATOR.createFromParcel(parcel); 53706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 54706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertEquals(VERIFICATION_URI, actual.getVerificationURI()); 55706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 56706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertEquals(ORIGINATING_URI, actual.getOriginatingURI()); 57706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 58706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertEquals(REFERRER, actual.getReferrer()); 59706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 60706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertEquals(MANIFEST_DIGEST, actual.getManifestDigest()); 61706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 62706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 63706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testEquals_Success() throws Exception { 64706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 65706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 66706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 67706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params2 = new VerificationParams( 68706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING), 69706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(REFERRER_STRING), new ManifestDigest(DIGEST_BYTES)); 70706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 71706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertEquals(params1, params2); 72706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 73706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 74706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testEquals_VerificationUri_Failure() throws Exception { 75706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 76706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 77706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 78706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params2 = new VerificationParams( 79706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse("http://a.different.uri/"), Uri.parse(ORIGINATING_URI_STRING), 80706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(REFERRER_STRING), new ManifestDigest(DIGEST_BYTES)); 81706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 82706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertFalse(params1.equals(params2)); 83706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 84706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 85706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testEquals_OriginatingUri_Failure() throws Exception { 86706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 87706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 88706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 89706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params2 = new VerificationParams( 90706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(VERIFICATION_URI_STRING), Uri.parse("http://a.different.uri/"), 91706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(REFERRER_STRING), new ManifestDigest(DIGEST_BYTES)); 92706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 93706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertFalse(params1.equals(params2)); 94706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 95706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 96706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testEquals_Referrer_Failure() throws Exception { 97706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 98706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 99706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 100706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params2 = new VerificationParams( 101706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING), 102706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse("http://a.different.uri/"), new ManifestDigest(DIGEST_BYTES)); 103706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 104706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertFalse(params1.equals(params2)); 105706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 106706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 107706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testEquals_ManifestDigest_Failure() throws Exception { 108706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 109706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 110706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 111706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params2 = new VerificationParams( 112706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING), 113706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(REFERRER_STRING), new ManifestDigest("a different digest".getBytes())); 114706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 115706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertFalse(params1.equals(params2)); 116706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 117706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 118706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testHashCode_Success() throws Exception { 119706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 120706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 121706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 122706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params2 = new VerificationParams( 123706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING), 124706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(REFERRER_STRING), new ManifestDigest(DIGEST_BYTES)); 125706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 126706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertEquals(params1.hashCode(), params2.hashCode()); 127706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 128706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 129706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testHashCode_VerificationUri_Failure() throws Exception { 130706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 131706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 132706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 133706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params2 = new VerificationParams(null, Uri.parse(ORIGINATING_URI_STRING), 134706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(REFERRER_STRING), new ManifestDigest(DIGEST_BYTES)); 135706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 136706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertFalse(params1.hashCode() == params2.hashCode()); 137706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 138706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 139706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testHashCode_OriginatingUri_Failure() throws Exception { 140706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 141706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 142706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 143706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params2 = new VerificationParams( 144706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(VERIFICATION_URI_STRING), Uri.parse("http://a.different.uri/"), 145706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(REFERRER_STRING), new ManifestDigest(DIGEST_BYTES)); 146706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 147706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertFalse(params1.hashCode() == params2.hashCode()); 148706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 149706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 150706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testHashCode_Referrer_Failure() throws Exception { 151706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 152706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 153706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 154706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params2 = new VerificationParams( 155706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING), null, 156706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings new ManifestDigest(DIGEST_BYTES)); 157706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 158706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertFalse(params1.hashCode() == params2.hashCode()); 159706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 160706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 161706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings public void testHashCode_ManifestDigest_Failure() throws Exception { 162706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI, 163706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings REFERRER, MANIFEST_DIGEST); 164706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 165706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings VerificationParams params2 = new VerificationParams( 166706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING), 167706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings Uri.parse(REFERRER_STRING), new ManifestDigest("a different digest".getBytes())); 168706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings 169706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings assertFalse(params1.hashCode() == params2.hashCode()); 170706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings } 171706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings} 172