1d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng/*
2d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * Copyright 2016, The Android Open Source Project
3d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng *
4d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * Licensed under the Apache License, Version 2.0 (the "License");
5d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * you may not use this file except in compliance with the License.
6d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * You may obtain a copy of the License at
7d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng *
8d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng *     http://www.apache.org/licenses/LICENSE-2.0
9d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng *
10d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * Unless required by applicable law or agreed to in writing, software
11d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * distributed under the License is distributed on an "AS IS" BASIS,
12d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * See the License for the specific language governing permissions and
14d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * limitations under the License.
15d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng */
16d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngpackage com.android.managedprovisioning.model;
17d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
187079df5a3fb155947004843ee8ec25b36127e3edSteven Ngimport static com.android.managedprovisioning.TestUtils.createTestAdminExtras;
197079df5a3fb155947004843ee8ec25b36127e3edSteven Ng
20d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.accounts.Account;
21d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.app.admin.DevicePolicyManager;
22d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.content.ComponentName;
23d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.os.Bundle;
24d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.os.Parcel;
25d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.os.PersistableBundle;
26d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.test.AndroidTestCase;
27d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.test.MoreAsserts;
28d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.test.suitebuilder.annotation.SmallTest;
29d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
30d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport com.android.managedprovisioning.model.WifiInfo;
31d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport com.android.managedprovisioning.model.PackageDownloadInfo;
32d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
33d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport java.lang.Exception;
34d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport java.util.Locale;
35d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
36d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng/** Tests for {@link ProvisioningParams} */
37d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngpublic class ProvisioningParamsTest extends AndroidTestCase {
38d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PROVISIONING_ACTION =
39d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE;
40d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
41d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PACKAGE_NAME = "com.afwsamples.testdpc";
42d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final ComponentName TEST_COMPONENT_NAME =
43d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            ComponentName.unflattenFromString(
44d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    "com.afwsamples.testdpc/com.afwsamples.testdpc.DeviceAdminReceiver");
45d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final long TEST_LOCAL_TIME = 1456939524713L;
46d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final Locale TEST_LOCALE = Locale.UK;
47d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_TIME_ZONE = "GMT";
48d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final Integer TEST_MAIN_COLOR = 65280;
49d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final boolean TEST_STARTED_BY_TRUSTED_SOURCE = true;
50d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final boolean TEST_LEAVE_ALL_SYSTEM_APP_ENABLED = true;
51d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final boolean TEST_SKIP_ENCRYPTION = true;
52d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final boolean TEST_SKIP_USER_SETUP = true;
53d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final Account TEST_ACCOUNT_TO_MIGRATE =
54d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            new Account("user@gmail.com", "com.google");
55d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
56d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    // Wifi info
57d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_SSID = "TestWifi";
58d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final boolean TEST_HIDDEN = true;
59d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_SECURITY_TYPE = "WPA2";
60d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PASSWORD = "GoogleRock";
61d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PROXY_HOST = "testhost.com";
62d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final int TEST_PROXY_PORT = 7689;
63d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PROXY_BYPASS_HOSTS = "http://host1.com;https://host2.com";
64d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PAC_URL = "pac.test.com";
65d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final WifiInfo TEST_WIFI_INFO = WifiInfo.Builder.builder()
66d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            .setSsid(TEST_SSID)
67d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            .setHidden(TEST_HIDDEN)
68d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            .setSecurityType(TEST_SECURITY_TYPE)
69d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            .setPassword(TEST_PASSWORD)
70d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            .setProxyHost(TEST_PROXY_HOST)
71d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            .setProxyPort(TEST_PROXY_PORT)
72d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
73d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            .setPacUrl(TEST_PAC_URL)
74d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            .build();
75d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
76d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    // Device admin package download info
77d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_DOWNLOAD_LOCATION =
78d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            "http://example/dpc.apk";
79d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_COOKIE_HEADER =
80d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            "Set-Cookie: sessionToken=foobar; Expires=Thu, 18 Feb 2016 23:59:59 GMT";
81d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final byte[] TEST_PACKAGE_CHECKSUM = new byte[] { '1', '2', '3', '4', '5' };
82d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final byte[] TEST_SIGNATURE_CHECKSUM = new byte[] { '5', '4', '3', '2', '1' };
83d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final int TEST_MIN_SUPPORT_VERSION = 17689;
84d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final PackageDownloadInfo TEST_DOWNLOAD_INFO =
85d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            PackageDownloadInfo.Builder.builder()
86d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    .setLocation(TEST_DOWNLOAD_LOCATION)
87d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    .setCookieHeader(TEST_COOKIE_HEADER)
88d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    .setPackageChecksum(TEST_PACKAGE_CHECKSUM)
89d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM)
90d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    .setMinVersion(TEST_MIN_SUPPORT_VERSION)
91d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    .build();
92d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
93d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    @SmallTest
94d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    public void testFailToConstructProvisioningParamsWithoutPackageNameOrComponentName() {
95d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // WHEN the ProvisioningParams is constructed by with neither a package name nor a component
96d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // name
97d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        try {
98d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            ProvisioningParams provisioningParams = ProvisioningParams.Builder.builder()
99d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    .setProvisioningAction(TEST_PROVISIONING_ACTION)
100d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    .build();
101d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            fail("Package name or component name is mandatory.");
102d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        } catch (IllegalArgumentException e) {
103d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            // THEN the ProvisioningParams fails to construct.
104d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        }
105d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    }
106d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
107d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    @SmallTest
108d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    public void testFailToConstructProvisioningParamsWithoutProvisioningAction() {
109d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // WHEN the ProvisioningParams is constructed by without a provisioning action.
110d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        try {
111d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            ProvisioningParams provisioningParams = ProvisioningParams.Builder.builder()
112d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    .setDeviceAdminComponentName(TEST_COMPONENT_NAME)
113d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                    .build();
114d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            fail("Provisioning action is mandatory");
115d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        } catch (NullPointerException e) {
116d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng            // THEN the ProvisioningParams fails to construct.
117d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        }
118d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    }
119d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
120d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    @SmallTest
121d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    public void testEquals() {
122d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // GIVEN 2 ProvisioningParams objects created by the same set of parameters
123d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        ProvisioningParams provisioningParams1 = ProvisioningParams.Builder.builder()
124d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProvisioningAction(TEST_PROVISIONING_ACTION)
125d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminPackageName(TEST_PACKAGE_NAME)
126d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminComponentName(TEST_COMPONENT_NAME)
127d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO)
128d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLocalTime(TEST_LOCAL_TIME)
129d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLocale(TEST_LOCALE)
130d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setTimeZone(TEST_TIME_ZONE)
131d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setMainColor(TEST_MAIN_COLOR)
132d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setStartedByTrustedSource(TEST_STARTED_BY_TRUSTED_SOURCE)
133d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLeaveAllSystemAppsEnabled(TEST_LEAVE_ALL_SYSTEM_APP_ENABLED)
134d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSkipEncryption(TEST_SKIP_ENCRYPTION)
135d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSkipUserSetup(TEST_SKIP_USER_SETUP)
136d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE)
137d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setWifiInfo(TEST_WIFI_INFO)
138d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setAdminExtrasBundle(createTestAdminExtras())
139d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
140d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        ProvisioningParams provisioningParams2 = ProvisioningParams.Builder.builder()
141d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProvisioningAction(TEST_PROVISIONING_ACTION)
142d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminPackageName(TEST_PACKAGE_NAME)
143d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminComponentName(TEST_COMPONENT_NAME)
144d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO)
145d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLocalTime(TEST_LOCAL_TIME)
146d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLocale(TEST_LOCALE)
147d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setTimeZone(TEST_TIME_ZONE)
148d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setMainColor(TEST_MAIN_COLOR)
149d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setStartedByTrustedSource(TEST_STARTED_BY_TRUSTED_SOURCE)
150d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLeaveAllSystemAppsEnabled(TEST_LEAVE_ALL_SYSTEM_APP_ENABLED)
151d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSkipEncryption(TEST_SKIP_ENCRYPTION)
152d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSkipUserSetup(TEST_SKIP_USER_SETUP)
153d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE)
154d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setWifiInfo(TEST_WIFI_INFO)
155d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setAdminExtrasBundle(createTestAdminExtras())
156d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
157d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
158d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // WHEN these two objects compare.
159d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // THEN they are the same.
160d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(provisioningParams1, provisioningParams2);
161d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    }
162d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
163d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    @SmallTest
164d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    public void testNotEquals() {
165d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // GIVEN 2 ProvisioningParams objects created by different sets of parameters
166d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        ProvisioningParams provisioningParams1 = ProvisioningParams.Builder.builder()
167d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProvisioningAction(TEST_PROVISIONING_ACTION)
168d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminPackageName(TEST_PACKAGE_NAME)
169d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminComponentName(TEST_COMPONENT_NAME)
170d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO)
171d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLocalTime(TEST_LOCAL_TIME)
172d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLocale(TEST_LOCALE)
173d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setTimeZone(TEST_TIME_ZONE)
174d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setMainColor(TEST_MAIN_COLOR)
175d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setStartedByTrustedSource(TEST_STARTED_BY_TRUSTED_SOURCE)
176d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLeaveAllSystemAppsEnabled(TEST_LEAVE_ALL_SYSTEM_APP_ENABLED)
177d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSkipEncryption(TEST_SKIP_ENCRYPTION)
178d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSkipUserSetup(TEST_SKIP_USER_SETUP)
179d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE)
180d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setWifiInfo(TEST_WIFI_INFO)
181d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setAdminExtrasBundle(createTestAdminExtras())
182d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
183d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        ProvisioningParams provisioningParams2 = ProvisioningParams.Builder.builder()
184d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProvisioningAction("different.action")
185d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminPackageName(TEST_PACKAGE_NAME)
186d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminComponentName(TEST_COMPONENT_NAME)
187d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO)
188d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLocalTime(TEST_LOCAL_TIME)
189d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLocale(TEST_LOCALE)
190d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setTimeZone(TEST_TIME_ZONE)
191d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setMainColor(TEST_MAIN_COLOR)
192d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setStartedByTrustedSource(TEST_STARTED_BY_TRUSTED_SOURCE)
193d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLeaveAllSystemAppsEnabled(TEST_LEAVE_ALL_SYSTEM_APP_ENABLED)
194d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSkipEncryption(TEST_SKIP_ENCRYPTION)
195d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSkipUserSetup(TEST_SKIP_USER_SETUP)
196d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE)
197d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setWifiInfo(TEST_WIFI_INFO)
198d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setAdminExtrasBundle(createTestAdminExtras())
199d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
200d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
201d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // WHEN these two objects compare.
202d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // THEN they are not the same.
203d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        MoreAsserts.assertNotEqual(provisioningParams1, provisioningParams2);
204d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    }
205d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
206d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    @SmallTest
207d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    public void testParceable() {
208d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // GIVEN a ProvisioningParams object.
209d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        ProvisioningParams expectedProvisioningParams = ProvisioningParams.Builder.builder()
210d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProvisioningAction(TEST_PROVISIONING_ACTION)
211d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminPackageName(TEST_PACKAGE_NAME)
212d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminComponentName(TEST_COMPONENT_NAME)
213d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO)
214d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLocalTime(TEST_LOCAL_TIME)
215d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLocale(TEST_LOCALE)
216d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setTimeZone(TEST_TIME_ZONE)
217d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setMainColor(TEST_MAIN_COLOR)
218d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setStartedByTrustedSource(TEST_STARTED_BY_TRUSTED_SOURCE)
219d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setLeaveAllSystemAppsEnabled(TEST_LEAVE_ALL_SYSTEM_APP_ENABLED)
220d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSkipEncryption(TEST_SKIP_ENCRYPTION)
221d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSkipUserSetup(TEST_SKIP_USER_SETUP)
222d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE)
223d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setWifiInfo(TEST_WIFI_INFO)
224d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setAdminExtrasBundle(createTestAdminExtras())
225d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
226d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
227d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // WHEN the ProvisioningParams is written to parcel and then read back.
228d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        Parcel parcel = Parcel.obtain();
229d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        expectedProvisioningParams.writeToParcel(parcel, 0);
230d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        parcel.setDataPosition(0);
231d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        ProvisioningParams actualProvisioningParams =
232d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                ProvisioningParams.CREATOR.createFromParcel(parcel);
233d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
234d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // THEN the same ProvisioningParams is obtained.
235d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(expectedProvisioningParams, actualProvisioningParams);
236d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    }
237d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng}
238