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();
3713d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings    private final static int INSTALLER_UID = 42;
38706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
39706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    private final static Uri VERIFICATION_URI = Uri.parse(VERIFICATION_URI_STRING);
40706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    private final static Uri ORIGINATING_URI = Uri.parse(ORIGINATING_URI_STRING);
41706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    private final static Uri REFERRER = Uri.parse(REFERRER_STRING);
42706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
4337d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver    private final static int ORIGINATING_UID = 10042;
4437d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver
45706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    private final static ManifestDigest MANIFEST_DIGEST = new ManifestDigest(DIGEST_BYTES);
46706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
47706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testParcel() throws Exception {
48706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams expected = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
4937d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
50706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
51706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        Parcel parcel = Parcel.obtain();
52706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        expected.writeToParcel(parcel, 0);
53706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        parcel.setDataPosition(0);
54706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
55706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams actual = VerificationParams.CREATOR.createFromParcel(parcel);
56706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
57706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertEquals(VERIFICATION_URI, actual.getVerificationURI());
58706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
59706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertEquals(ORIGINATING_URI, actual.getOriginatingURI());
60706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
61706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertEquals(REFERRER, actual.getReferrer());
62706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
6337d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver        assertEquals(ORIGINATING_UID, actual.getOriginatingUid());
6437d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver
65706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertEquals(MANIFEST_DIGEST, actual.getManifestDigest());
66706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
67706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
68706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testEquals_Success() throws Exception {
69706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
7037d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
71706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
72706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params2 = new VerificationParams(
73706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings                Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING),
7437d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), ORIGINATING_UID, new ManifestDigest(DIGEST_BYTES));
75706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
76706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertEquals(params1, params2);
77706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
78706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
79706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testEquals_VerificationUri_Failure() throws Exception {
80706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
8137d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
82706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
83706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params2 = new VerificationParams(
84706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings                Uri.parse("http://a.different.uri/"), Uri.parse(ORIGINATING_URI_STRING),
8537d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), ORIGINATING_UID, new ManifestDigest(DIGEST_BYTES));
86706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
87706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertFalse(params1.equals(params2));
88706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
89706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
90706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testEquals_OriginatingUri_Failure() throws Exception {
91706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
9237d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
93706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
94706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params2 = new VerificationParams(
95706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings                Uri.parse(VERIFICATION_URI_STRING), Uri.parse("http://a.different.uri/"),
9637d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), ORIGINATING_UID, new ManifestDigest(DIGEST_BYTES));
97706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
98706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertFalse(params1.equals(params2));
99706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
100706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
101706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testEquals_Referrer_Failure() throws Exception {
102706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
10337d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
10437d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver
10537d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver        VerificationParams params2 = new VerificationParams(
10637d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING),
10737d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse("http://a.different.uri/"), ORIGINATING_UID,
10837d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                new ManifestDigest(DIGEST_BYTES));
10937d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver
11037d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver        assertFalse(params1.equals(params2));
11137d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver    }
11237d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver
11337d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver    public void testEquals_Originating_Uid_Failure() throws Exception {
11437d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
11537d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
116706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
117706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params2 = new VerificationParams(
118706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings                Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING),
11937d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), 12345, new ManifestDigest(DIGEST_BYTES));
120706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
121706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertFalse(params1.equals(params2));
122706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
123706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
124706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testEquals_ManifestDigest_Failure() throws Exception {
125706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
12637d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
127706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
128706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params2 = new VerificationParams(
129706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings                Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING),
13037d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), ORIGINATING_UID,
13137d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                new ManifestDigest("a different digest".getBytes()));
132706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
133706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertFalse(params1.equals(params2));
134706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
135706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
13613d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings    public void testEquals_InstallerUid_Failure() throws Exception {
13713d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
13837d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
13913d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings
14013d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings        VerificationParams params2 = new VerificationParams(
14113d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings                Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING),
14237d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), ORIGINATING_UID, new ManifestDigest(DIGEST_BYTES));
14313d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings        params2.setInstallerUid(INSTALLER_UID);
14413d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings
14513d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings        assertFalse(params1.equals(params2));
14613d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings    }
14713d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings
148706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testHashCode_Success() throws Exception {
149706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
15037d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
151706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
152706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params2 = new VerificationParams(
153706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings                Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING),
15437d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), ORIGINATING_UID, new ManifestDigest(DIGEST_BYTES));
155706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
156706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertEquals(params1.hashCode(), params2.hashCode());
157706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
158706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
159706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testHashCode_VerificationUri_Failure() throws Exception {
160706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
16137d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
162706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
163706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params2 = new VerificationParams(null, Uri.parse(ORIGINATING_URI_STRING),
16437d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), ORIGINATING_UID, new ManifestDigest(DIGEST_BYTES));
165706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
166706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertFalse(params1.hashCode() == params2.hashCode());
167706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
168706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
169706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testHashCode_OriginatingUri_Failure() throws Exception {
170706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
17137d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
172706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
173706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params2 = new VerificationParams(
174706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings                Uri.parse(VERIFICATION_URI_STRING), Uri.parse("http://a.different.uri/"),
17537d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), ORIGINATING_UID, new ManifestDigest(DIGEST_BYTES));
176706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
177706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertFalse(params1.hashCode() == params2.hashCode());
178706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
179706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
180706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testHashCode_Referrer_Failure() throws Exception {
181706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
18237d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
183706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
184706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params2 = new VerificationParams(
185706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings                Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING), null,
18637d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                ORIGINATING_UID, new ManifestDigest(DIGEST_BYTES));
18737d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver
18837d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver        assertFalse(params1.hashCode() == params2.hashCode());
18937d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver    }
19037d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver
19137d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver    public void testHashCode_Originating_Uid_Failure() throws Exception {
19237d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
19337d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
19437d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver
19537d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver        VerificationParams params2 = new VerificationParams(
19637d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING),
19737d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), 12345, new ManifestDigest(DIGEST_BYTES));
198706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
199706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertFalse(params1.hashCode() == params2.hashCode());
200706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
201706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
202706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    public void testHashCode_ManifestDigest_Failure() throws Exception {
203706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
20437d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
205706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
206706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        VerificationParams params2 = new VerificationParams(
207706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings                Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING),
20837d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), ORIGINATING_UID,
20937d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                new ManifestDigest("a different digest".getBytes()));
210706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings
211706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings        assertFalse(params1.hashCode() == params2.hashCode());
212706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings    }
21313d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings
21413d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings    public void testHashCode_InstallerUid_Failure() throws Exception {
21513d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings        VerificationParams params1 = new VerificationParams(VERIFICATION_URI, ORIGINATING_URI,
21637d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                REFERRER, ORIGINATING_UID, MANIFEST_DIGEST);
21713d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings
21813d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings        VerificationParams params2 = new VerificationParams(
21913d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings                Uri.parse(VERIFICATION_URI_STRING), Uri.parse(ORIGINATING_URI_STRING),
22037d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                Uri.parse(REFERRER_STRING), ORIGINATING_UID,
22137d83a3caf138e35fa1a355787d20c351f6b37a6Ben Gruver                new ManifestDigest("a different digest".getBytes()));
22213d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings        params2.setInstallerUid(INSTALLER_UID);
22313d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings
22413d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings        assertFalse(params1.hashCode() == params2.hashCode());
22513d428e8306d1bb1a3017045bc5d2f76edec32dfrich cannings    }
226706e8ba26bf0de19ad5f736516dae40c4c88c2d7rich cannings}
227