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