1 /* 2 * Copyright 2016, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.managedprovisioning.parser; 17 18 import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_FINANCED_DEVICE; 19 import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE; 20 import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE; 21 import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE; 22 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE; 23 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE; 24 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME; 25 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE; 26 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM; 27 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER; 28 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION; 29 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME; 30 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM; 31 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DISCLAIMERS; 32 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DISCLAIMER_CONTENT; 33 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DISCLAIMER_HEADER; 34 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION; 35 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED; 36 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_LOCALE; 37 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_LOCAL_TIME; 38 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI; 39 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ORGANIZATION_NAME; 40 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_RETURN_BEFORE_POLICY_COMPLIANCE; 41 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_COOKIE_HEADER; 42 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION; 43 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_SENSORS_PERMISSION_GRANT_OPT_OUT; 44 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS; 45 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_SKIP_ENCRYPTION; 46 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_SKIP_OWNERSHIP_DISCLAIMER; 47 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_SUPPORTED_MODES; 48 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_SUPPORT_URL; 49 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_TIME_ZONE; 50 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_TRIGGER; 51 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_USE_MOBILE_DATA; 52 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY; 53 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE; 54 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_DOMAIN; 55 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_EAP_METHOD; 56 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_HIDDEN; 57 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_IDENTITY; 58 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PAC_URL; 59 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PASSWORD; 60 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PHASE2_AUTH; 61 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PROXY_BYPASS; 62 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PROXY_HOST; 63 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PROXY_PORT; 64 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_SECURITY_TYPE; 65 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_SSID; 66 import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE; 67 import static android.app.admin.DevicePolicyManager.FLAG_SUPPORTED_MODES_DEVICE_OWNER; 68 import static android.app.admin.DevicePolicyManager.FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED; 69 import static android.app.admin.DevicePolicyManager.FLAG_SUPPORTED_MODES_PERSONALLY_OWNED; 70 import static android.app.admin.DevicePolicyManager.PROVISIONING_MODE_FULLY_MANAGED_DEVICE; 71 import static android.app.admin.DevicePolicyManager.PROVISIONING_MODE_MANAGED_PROFILE; 72 import static android.app.admin.DevicePolicyManager.PROVISIONING_TRIGGER_MANAGED_ACCOUNT; 73 import static android.app.admin.DevicePolicyManager.PROVISIONING_TRIGGER_QR_CODE; 74 import static android.content.pm.PackageManager.FEATURE_MANAGED_USERS; 75 import static android.nfc.NfcAdapter.ACTION_NDEF_DISCOVERED; 76 77 import static com.android.managedprovisioning.TestUtils.createTestAdminExtras; 78 import static com.android.managedprovisioning.model.ProvisioningParams.DEFAULT_EXTRA_PROVISIONING_SUPPORTED_MODES; 79 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE_SHORT; 80 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE_SHORT; 81 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME_SHORT; 82 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE_SHORT; 83 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM_SHORT; 84 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER_SHORT; 85 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION_SHORT; 86 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME_SHORT; 87 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM_SHORT; 88 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DISCLAIMERS_SHORT; 89 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DISCLAIMER_CONTENT_SHORT; 90 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DISCLAIMER_HEADER_SHORT; 91 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION_SHORT; 92 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED_SHORT; 93 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_LOCALE_SHORT; 94 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_LOCAL_TIME_SHORT; 95 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_ORGANIZATION_NAME_SHORT; 96 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_SENSORS_PERMISSION_GRANT_OPT_OUT_SHORT; 97 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_SKIP_ENCRYPTION_SHORT; 98 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_SUPPORT_URL_SHORT; 99 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_TIME_ZONE_SHORT; 100 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_USE_MOBILE_DATA_SHORT; 101 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY_SHORT; 102 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE_SHORT; 103 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_DOMAIN_SHORT; 104 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_EAP_METHOD_SHORT; 105 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_HIDDEN_SHORT; 106 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_IDENTITY_SHORT; 107 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PAC_URL_SHORT; 108 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PASSWORD_SHORT; 109 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PHASE2_AUTH_SHORT; 110 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PROXY_BYPASS_SHORT; 111 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PROXY_HOST_SHORT; 112 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PROXY_PORT_SHORT; 113 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_SECURITY_TYPE_SHORT; 114 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_SSID_SHORT; 115 import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE_SHORT; 116 117 import static com.google.common.truth.Truth.assertThat; 118 119 import static org.mockito.ArgumentMatchers.eq; 120 import static org.mockito.Mockito.doReturn; 121 import static org.mockito.Mockito.spy; 122 import static org.mockito.Mockito.when; 123 import static org.testng.Assert.assertThrows; 124 125 import android.accounts.Account; 126 import android.app.admin.DevicePolicyManager; 127 import android.content.ComponentName; 128 import android.content.Context; 129 import android.content.Intent; 130 import android.content.pm.PackageManager; 131 import android.net.Uri; 132 import android.os.Bundle; 133 import android.os.Parcelable; 134 import android.os.UserHandle; 135 import android.test.AndroidTestCase; 136 import android.test.suitebuilder.annotation.SmallTest; 137 import android.util.Base64; 138 139 import com.android.managedprovisioning.common.Globals; 140 import com.android.managedprovisioning.common.IllegalProvisioningArgumentException; 141 import com.android.managedprovisioning.common.ManagedProvisioningSharedPreferences; 142 import com.android.managedprovisioning.common.SettingsFacade; 143 import com.android.managedprovisioning.common.StoreUtils; 144 import com.android.managedprovisioning.common.Utils; 145 import com.android.managedprovisioning.model.PackageDownloadInfo; 146 import com.android.managedprovisioning.model.ProvisioningParams; 147 import com.android.managedprovisioning.model.WifiInfo; 148 149 import org.mockito.Mock; 150 import org.mockito.MockitoAnnotations; 151 152 import java.lang.reflect.Field; 153 import java.util.ArrayList; 154 import java.util.Arrays; 155 import java.util.List; 156 import java.util.Locale; 157 import java.util.stream.Stream; 158 159 /** Tests for {@link ExtrasProvisioningDataParser}. */ 160 @SmallTest 161 public class ExtrasProvisioningDataParserTest extends AndroidTestCase { 162 private static final String TEST_PACKAGE_NAME = "com.afwsamples.testdpc"; 163 private static final ComponentName TEST_COMPONENT_NAME = 164 ComponentName.unflattenFromString( 165 "com.afwsamples.testdpc/com.afwsamples.testdpc.DeviceAdminReceiver"); 166 private static final ComponentName TEST_COMPONENT_NAME_2 = 167 ComponentName.unflattenFromString( 168 "com.afwsamples.testdpc2/com.afwsamples.testdpc.DeviceAdminReceiver"); 169 private static final long TEST_LOCAL_TIME = 1456939524713L; 170 private static final Locale TEST_LOCALE = Locale.UK; 171 private static final String TEST_TIME_ZONE = "GMT"; 172 private static final boolean TEST_LEAVE_ALL_SYSTEM_APP_ENABLED = true; 173 private static final boolean TEST_SKIP_ENCRYPTION = true; 174 private static final boolean TEST_KEEP_ACCOUNT_MIGRATED = true; 175 private static final long TEST_PROVISIONING_ID = 1000L; 176 private static final Account TEST_ACCOUNT_TO_MIGRATE = 177 new Account("user@gmail.com", "com.google"); 178 private static final String TEST_ORGANIZATION_NAME = "TestOrganizationName"; 179 private static final String TEST_SUPPORT_URL = "https://www.support.url/"; 180 private static final String TEST_ILL_FORMED_LOCALE = "aaa_"; 181 182 // Wifi info 183 private static final String TEST_SSID = "\"TestWifi\""; 184 private static final boolean TEST_HIDDEN = true; 185 private static final String TEST_SECURITY_TYPE = "WPA2"; 186 private static final String TEST_SECURITY_TYPE_EAP = "EAP"; 187 private static final String TEST_PASSWORD = "GoogleRock"; 188 private static final String TEST_PROXY_HOST = "testhost.com"; 189 private static final int TEST_PROXY_PORT = 7689; 190 private static final String TEST_PROXY_BYPASS_HOSTS = "http://host1.com;https://host2.com"; 191 private static final String TEST_PAC_URL = "pac.test.com"; 192 private static final String TEST_EAP_METHOD = "TTLS"; 193 private static final String TEST_PHASE2_AUTH = "PAP"; 194 private static final String TEST_CA_CERT = "certificate"; 195 private static final String TEST_USER_CERT = "certificate"; 196 private static final String TEST_IDENTITY = "TestUser"; 197 private static final String TEST_ANONYMOUS_IDENTITY = "TestAUser"; 198 private static final String TEST_DOMAIN = "google.com"; 199 private static final WifiInfo TEST_WIFI_INFO = WifiInfo.Builder.builder() 200 .setSsid(TEST_SSID) 201 .setHidden(TEST_HIDDEN) 202 .setSecurityType(TEST_SECURITY_TYPE) 203 .setPassword(TEST_PASSWORD) 204 .setProxyHost(TEST_PROXY_HOST) 205 .setProxyPort(TEST_PROXY_PORT) 206 .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS) 207 .setPacUrl(TEST_PAC_URL) 208 .build(); 209 210 // Device admin package download info 211 private static final String TEST_DOWNLOAD_LOCATION = 212 "http://example/dpc.apk"; 213 private static final String TEST_COOKIE_HEADER = 214 "Set-Cookie: sessionToken=foobar; Expires=Thu, 18 Feb 2016 23:59:59 GMT"; 215 private static final byte[] TEST_PACKAGE_CHECKSUM = new byte[] { '1', '2', '3', '4', '5' }; 216 private static final byte[] TEST_SIGNATURE_CHECKSUM = new byte[] { '5', '4', '3', '2', '1' }; 217 private static final String TEST_SIGNATURE_CHECKSUM_STRING = buildTestSignatureChecksum(); 218 private static final int TEST_MIN_SUPPORT_VERSION = 17689; 219 private static final PackageDownloadInfo TEST_DOWNLOAD_INFO = 220 PackageDownloadInfo.Builder.builder() 221 .setLocation(TEST_DOWNLOAD_LOCATION) 222 .setCookieHeader(TEST_COOKIE_HEADER) 223 .setPackageChecksum(TEST_PACKAGE_CHECKSUM) 224 .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM) 225 .setMinVersion(TEST_MIN_SUPPORT_VERSION) 226 .build(); 227 private static final boolean TEST_USE_MOBILE_DATA = true; 228 private static final Uri TEST_URI = Uri.parse("https://www.google.com/"); 229 private static final String TEST_DISCLAMER_HEADER = "Google"; 230 private static final int INVALID_SUPPORTED_MODES = 123; 231 232 @Mock 233 private Context mContext; 234 235 @Mock 236 private DevicePolicyManager mDpm; 237 238 @Mock 239 private ManagedProvisioningSharedPreferences mSharedPreferences; 240 241 @Mock 242 private SettingsFacade mSettingsFacade; 243 244 @Mock 245 private PackageManager mPackageManager; 246 247 private ExtrasProvisioningDataParser mExtrasProvisioningDataParser; 248 249 private Utils mUtils; 250 251 @Override setUp()252 public void setUp() { 253 // this is necessary for mockito to work 254 System.setProperty("dexmaker.dexcache", getContext().getCacheDir().toString()); 255 256 MockitoAnnotations.initMocks(this); 257 when(mContext.getSystemServiceName(DevicePolicyManager.class)) 258 .thenReturn(Context.DEVICE_POLICY_SERVICE); 259 when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE)).thenReturn(mDpm); 260 when(mContext.getContentResolver()).thenReturn(getContext().getContentResolver()); 261 when(mContext.getFilesDir()).thenReturn(getContext().getFilesDir()); 262 when(mSharedPreferences.incrementAndGetProvisioningId()).thenReturn(TEST_PROVISIONING_ID); 263 when(mPackageManager.hasSystemFeature(eq(FEATURE_MANAGED_USERS))).thenReturn(true); 264 when(mContext.getPackageManager()).thenReturn(mPackageManager); 265 mUtils = spy(new Utils()); 266 mExtrasProvisioningDataParser = new ExtrasProvisioningDataParser(mContext, mUtils, 267 new ParserUtils(), mSettingsFacade, mSharedPreferences); 268 } 269 testParse_trustedSourceProvisioningIntent()270 public void testParse_trustedSourceProvisioningIntent() throws Exception { 271 // GIVEN parsing happens during the setup wizard 272 when(mSettingsFacade.isDuringSetupWizard(mContext)).thenReturn(true); 273 // GIVEN a ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE intent and other extras. 274 Intent intent = new Intent(ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE) 275 // GIVEN a device admin package name and component name 276 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 277 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 278 .putExtras(getTestTimeTimeZoneAndLocaleExtras()) 279 .putExtras(getTestWifiInfoExtras()) 280 .putExtras(getTestDeviceAdminDownloadExtras()) 281 .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) 282 .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) 283 .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) 284 .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, 285 TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 286 .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE) 287 .putExtra(EXTRA_PROVISIONING_ORGANIZATION_NAME, TEST_ORGANIZATION_NAME) 288 .putExtra(EXTRA_PROVISIONING_SUPPORT_URL, TEST_SUPPORT_URL); 289 290 // WHEN the intent is parsed by the parser. 291 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 292 293 // THEN ProvisionParams is constructed as expected. 294 assertThat( 295 ProvisioningParams.Builder.builder() 296 // THEN ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE is translated to 297 // ACTION_PROVISION_MANAGED_DEVICE 298 .setProvisioningAction(ACTION_PROVISION_MANAGED_DEVICE) 299 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 300 .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO) 301 .setProvisioningId(TEST_PROVISIONING_ID) 302 .setLocalTime(TEST_LOCAL_TIME) 303 .setLocale(TEST_LOCALE) 304 .setTimeZone(TEST_TIME_ZONE) 305 // THEN the trusted source is set to true. 306 .setStartedByTrustedSource(true) 307 .setSkipEncryption(TEST_SKIP_ENCRYPTION) 308 // THEN keep account migrated flag is ignored 309 .setKeepAccountMigrated(false) 310 .setLeaveAllSystemAppsEnabled(true) 311 .setWifiInfo(TEST_WIFI_INFO) 312 .setAdminExtrasBundle(createTestAdminExtras()) 313 .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) 314 .setOrganizationName(TEST_ORGANIZATION_NAME) 315 .setSupportUrl(TEST_SUPPORT_URL) 316 .setInitiatorRequestedProvisioningModes( 317 FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED) 318 .setAllowedProvisioningModes(new ArrayList<>(List.of( 319 PROVISIONING_MODE_MANAGED_PROFILE, 320 PROVISIONING_MODE_FULLY_MANAGED_DEVICE 321 ))) 322 .setReturnBeforePolicyCompliance(true) 323 .build()) 324 .isEqualTo(params); 325 } 326 testParse_financedDeviceProvisioningIntent()327 public void testParse_financedDeviceProvisioningIntent() throws Exception { 328 // GIVEN a ACTION_PROVISION_FINANCED_DEVICE intent and other extras. 329 Intent intent = new Intent(ACTION_PROVISION_FINANCED_DEVICE) 330 // GIVEN a device admin package name and component name 331 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 332 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 333 .putExtras(getTestDeviceAdminDownloadExtras()) 334 .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) 335 .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) 336 .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, 337 TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 338 .putExtra(EXTRA_PROVISIONING_ORGANIZATION_NAME, TEST_ORGANIZATION_NAME) 339 .putExtra(EXTRA_PROVISIONING_SUPPORT_URL, TEST_SUPPORT_URL); 340 341 // WHEN the intent is parsed by the parser. 342 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 343 344 // THEN ProvisionParams is constructed as expected. 345 assertThat( 346 ProvisioningParams.Builder.builder() 347 .setProvisioningAction(ACTION_PROVISION_FINANCED_DEVICE) 348 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 349 .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO) 350 .setProvisioningId(TEST_PROVISIONING_ID) 351 // THEN keep account migrated flag is ignored 352 .setKeepAccountMigrated(false) 353 // THEN leave all system apps is always true 354 .setLeaveAllSystemAppsEnabled(true) 355 .setAdminExtrasBundle(createTestAdminExtras()) 356 .setOrganizationName(TEST_ORGANIZATION_NAME) 357 .setSupportUrl(TEST_SUPPORT_URL) 358 .setReturnBeforePolicyCompliance(true) 359 .build()) 360 .isEqualTo(params); 361 } 362 testParse_resumeProvisioningIntent()363 public void testParse_resumeProvisioningIntent() throws Exception { 364 // GIVEN a ProvisioningParams stored in an intent 365 ProvisioningParams expected = ProvisioningParams.Builder.builder() 366 .setProvisioningAction(ACTION_PROVISION_MANAGED_DEVICE) 367 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 368 .build(); 369 Intent intent = new Intent(Globals.ACTION_RESUME_PROVISIONING) 370 .putExtra(ProvisioningParams.EXTRA_PROVISIONING_PARAMS, expected); 371 // WHEN the intent is parsed by the parser 372 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 373 // THEN we get back the original ProvisioningParams. 374 assertThat(expected).isEqualTo(params); 375 } 376 testParse_managedProfileIntent()377 public void testParse_managedProfileIntent() throws Exception { 378 // GIVEN a managed profile provisioning intent and other extras. 379 Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE) 380 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 381 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 382 .putExtras(getTestTimeTimeZoneAndLocaleExtras()) 383 .putExtras(getTestWifiInfoExtras()) 384 .putExtras(getTestDeviceAdminDownloadExtras()) 385 .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) 386 .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) 387 .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) 388 .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, 389 TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 390 .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); 391 392 // GIVEN the device admin is installed. 393 mockInstalledDeviceAdminForTestPackageName(); 394 395 // WHEN the intent is parsed by the parser. 396 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 397 398 // THEN ProvisionParams is constructed as expected. 399 assertThat( 400 ProvisioningParams.Builder.builder() 401 // THEN provisioning action is ACTION_PROVISION_MANAGED_PROFILE 402 .setProvisioningAction(ACTION_PROVISION_MANAGED_PROFILE) 403 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 404 .setProvisioningId(TEST_PROVISIONING_ID) 405 // THEN device admin package name is not supported. 406 .setDeviceAdminPackageName(null) 407 // THEN device admin download info is not supported. 408 .setDeviceAdminDownloadInfo(null) 409 // THEN wifi info is not supported. 410 .setWifiInfo(null) 411 .setSkipEncryption(TEST_SKIP_ENCRYPTION) 412 // THEN leave all system apps flag is ignored 413 .setLeaveAllSystemAppsEnabled(false) 414 .setKeepAccountMigrated(TEST_KEEP_ACCOUNT_MIGRATED) 415 .setAdminExtrasBundle(createTestAdminExtras()) 416 .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) 417 .build()) 418 .isEqualTo(params); 419 } 420 testParse_managedProfileIntent_CompProvisioning()421 public void testParse_managedProfileIntent_CompProvisioning() throws Exception { 422 // GIVEN a managed profile provisioning intent and other extras. 423 Intent intent = buildTestManagedProfileIntent(); 424 425 // GIVEN the device admin is installed. 426 mockInstalledDeviceAdminForTestPackageName(); 427 428 // GIVEN the device admin is also device owner in primary user. 429 when(mDpm.getDeviceOwnerComponentOnCallingUser()).thenReturn(TEST_COMPONENT_NAME); 430 431 // WHEN the intent is parsed by the parser. 432 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 433 434 // THEN ProvisionParams is constructed as expected. 435 assertThat( 436 ProvisioningParams.Builder.builder() 437 // THEN provisioning action is ACTION_PROVISION_MANAGED_PROFILE 438 .setProvisioningAction(ACTION_PROVISION_MANAGED_PROFILE) 439 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 440 .setProvisioningId(TEST_PROVISIONING_ID) 441 // THEN device admin package name is not supported. 442 .setDeviceAdminPackageName(null) 443 // THEN device admin download info is not supported. 444 .setDeviceAdminDownloadInfo(null) 445 // THEN wifi info is not supported. 446 .setWifiInfo(null) 447 .setSkipEncryption(TEST_SKIP_ENCRYPTION) 448 .setKeepAccountMigrated(TEST_KEEP_ACCOUNT_MIGRATED) 449 .setAdminExtrasBundle(createTestAdminExtras()) 450 .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) 451 .build()) 452 .isEqualTo(params); 453 } 454 testParse_managedProfileIntent_DeviceOwnerWithByodProvisioning()455 public void testParse_managedProfileIntent_DeviceOwnerWithByodProvisioning() throws Exception { 456 // GIVEN a managed profile provisioning intent and other extras. 457 Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE) 458 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 459 .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED); 460 461 // GIVEN the device admin is installed. 462 mockInstalledDeviceAdminForNullPackageName(); 463 464 // GIVEN a different device admin is a device owner in primary user. 465 when(mDpm.getDeviceOwnerComponentOnCallingUser()).thenReturn(TEST_COMPONENT_NAME_2); 466 467 // WHEN the intent is parsed by the parser. 468 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 469 470 // THEN ProvisionParams is constructed as expected. 471 assertThat( 472 ProvisioningParams.Builder.builder() 473 .setProvisioningAction(ACTION_PROVISION_MANAGED_PROFILE) 474 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 475 .setProvisioningId(TEST_PROVISIONING_ID) 476 .setKeepAccountMigrated(TEST_KEEP_ACCOUNT_MIGRATED) 477 .build()) 478 .isEqualTo(params); 479 } 480 testParse_shortExtras_sameAsLongExtras()481 public void testParse_shortExtras_sameAsLongExtras() throws Exception { 482 assertThat(mExtrasProvisioningDataParser.parse(buildIntentWithAllLongExtras())) 483 .isEqualTo(mExtrasProvisioningDataParser.parse(buildIntentWithAllShortExtras())); 484 } 485 testParse_managedDeviceIntent()486 public void testParse_managedDeviceIntent() throws Exception { 487 // GIVEN a managed device provisioning intent and other extras. 488 Intent intent = new Intent(ACTION_PROVISION_MANAGED_DEVICE) 489 // GIVEN a device admin package name and component name 490 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 491 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 492 .putExtras(getTestTimeTimeZoneAndLocaleExtras()) 493 .putExtras(getTestWifiInfoExtras()) 494 .putExtras(getTestDeviceAdminDownloadExtras()) 495 .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) 496 .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) 497 .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, 498 TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 499 .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); 500 501 // WHEN the intent is parsed by the parser. 502 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 503 504 // THEN ProvisionParams is constructed as expected. 505 assertThat( 506 ProvisioningParams.Builder.builder() 507 // THEN provisioning action is ACTION_PROVISION_MANAGED_DEVICE 508 .setProvisioningAction(ACTION_PROVISION_MANAGED_DEVICE) 509 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 510 .setProvisioningId(TEST_PROVISIONING_ID) 511 // THEN device admin package name is not supported in Device Owner 512 // provisioning. 513 .setDeviceAdminPackageName(null) 514 // THEN Device Admin download info is not supported. 515 .setDeviceAdminDownloadInfo(null) 516 .setSkipEncryption(TEST_SKIP_ENCRYPTION) 517 .setLeaveAllSystemAppsEnabled(true) 518 // THEN wifi configuration is not supported. 519 .setWifiInfo(null) 520 .setAdminExtrasBundle(createTestAdminExtras()) 521 .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) 522 .setReturnBeforePolicyCompliance(true) 523 .build()) 524 .isEqualTo(params); 525 } 526 testParse_nfcProvisioningIntentThrowsException()527 public void testParse_nfcProvisioningIntentThrowsException() { 528 // GIVEN a NFC provisioning intent and other extras. 529 Intent intent = new Intent(ACTION_NDEF_DISCOVERED) 530 // GIVEN a device admin package name and component name 531 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 532 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 533 .putExtras(getTestTimeTimeZoneAndLocaleExtras()) 534 .putExtras(getTestWifiInfoExtras()) 535 .putExtras(getTestDeviceAdminDownloadExtras()) 536 .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) 537 .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) 538 .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); 539 540 try { 541 // WHEN the intent is parsed by the parser. 542 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 543 fail("ExtrasProvisioningDataParser doesn't support NFC intent. " 544 + "IllegalProvisioningArgumentException should be thrown"); 545 } catch (IllegalProvisioningArgumentException e) { 546 // THEN IllegalProvisioningArgumentException is thrown. 547 } 548 } 549 testParse_illFormedLocaleThrowsException()550 public void testParse_illFormedLocaleThrowsException() throws Exception { 551 // GIVEN parsing happens during the setup wizard 552 when(mSettingsFacade.isDuringSetupWizard(mContext)).thenReturn(true); 553 554 // GIVEN a managed device provisioning intent and other extras. 555 Intent intent = new Intent(ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE) 556 // GIVEN a device admin package name and component name 557 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 558 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 559 // GIVEN a ill formed locale string. 560 .putExtras(getTestTimeTimeZoneAndLocaleExtras(TEST_ILL_FORMED_LOCALE)) 561 .putExtras(getTestWifiInfoExtras()) 562 .putExtras(getTestDeviceAdminDownloadExtras()) 563 .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) 564 .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) 565 .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); 566 567 try { 568 // WHEN the intent is parsed by the parser. 569 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 570 fail("ExtrasProvisioningDataParser parsing an ill formed locale string. " 571 + "IllegalProvisioningArgumentException should be thrown"); 572 } catch (IllegalProvisioningArgumentException e) { 573 // THEN IllegalProvisioningArgumentException is thrown. 574 } 575 } 576 testSetUseMobileData_forManagedProfile_alwaysFalse()577 public void testSetUseMobileData_forManagedProfile_alwaysFalse() throws Exception { 578 Intent intent = 579 buildTestManagedProfileIntent().putExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA, true); 580 mockInstalledDeviceAdminForTestPackageName(); 581 582 assertThat(mExtrasProvisioningDataParser.parse(intent).useMobileData).isFalse(); 583 } 584 testSetUseMobileData_fromTrustedSource_toFalse()585 public void testSetUseMobileData_fromTrustedSource_toFalse() throws Exception { 586 Intent intent = 587 buildTestTrustedSourceIntent().putExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA, true); 588 mockInstalledDeviceAdminForTestPackageName(); 589 590 assertThat(mExtrasProvisioningDataParser.parse(intent).useMobileData).isTrue(); 591 } 592 testSetUseMobileData_fromTrustedSource_toTrue()593 public void testSetUseMobileData_fromTrustedSource_toTrue() throws Exception { 594 Intent intent = 595 buildTestTrustedSourceIntent().putExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA, true); 596 mockInstalledDeviceAdminForTestPackageName(); 597 598 assertThat(mExtrasProvisioningDataParser.parse(intent).useMobileData).isTrue(); 599 } 600 testSetUseMobileData_fromTrustedSource_defaultsToFalse()601 public void testSetUseMobileData_fromTrustedSource_defaultsToFalse() throws Exception { 602 Intent intent = buildTestTrustedSourceIntent(); 603 intent.removeExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA); 604 mockInstalledDeviceAdminForTestPackageName(); 605 606 assertThat(mExtrasProvisioningDataParser.parse(intent).useMobileData).isFalse(); 607 } 608 testParse_WifiInfoWithCertificates()609 public void testParse_WifiInfoWithCertificates() throws Exception { 610 when(mSettingsFacade.isDuringSetupWizard(mContext)).thenReturn(true); 611 Intent intent = new Intent(ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE) 612 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 613 .putExtra(EXTRA_PROVISIONING_WIFI_SSID, TEST_SSID) 614 .putExtra(EXTRA_PROVISIONING_WIFI_HIDDEN, TEST_HIDDEN) 615 .putExtra(EXTRA_PROVISIONING_WIFI_SECURITY_TYPE, TEST_SECURITY_TYPE_EAP) 616 .putExtra(EXTRA_PROVISIONING_WIFI_PASSWORD, TEST_PASSWORD) 617 .putExtra(EXTRA_PROVISIONING_WIFI_EAP_METHOD, TEST_EAP_METHOD) 618 .putExtra(EXTRA_PROVISIONING_WIFI_PHASE2_AUTH, TEST_PHASE2_AUTH) 619 .putExtra(EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE, TEST_CA_CERT) 620 .putExtra(EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE, TEST_USER_CERT) 621 .putExtra(EXTRA_PROVISIONING_WIFI_IDENTITY, TEST_IDENTITY) 622 .putExtra(EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY, TEST_ANONYMOUS_IDENTITY) 623 .putExtra(EXTRA_PROVISIONING_WIFI_DOMAIN, TEST_DOMAIN) 624 .putExtra(EXTRA_PROVISIONING_WIFI_PROXY_HOST, TEST_PROXY_HOST) 625 .putExtra(EXTRA_PROVISIONING_WIFI_PROXY_PORT, TEST_PROXY_PORT) 626 .putExtra(EXTRA_PROVISIONING_WIFI_PROXY_BYPASS, TEST_PROXY_BYPASS_HOSTS) 627 .putExtra(EXTRA_PROVISIONING_WIFI_PAC_URL, TEST_PAC_URL); 628 629 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 630 631 assertThat(params).isEqualTo(createTestProvisioningParamsBuilder() 632 .setProvisioningAction(ACTION_PROVISION_MANAGED_DEVICE) 633 .setStartedByTrustedSource(true) 634 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 635 .setInitiatorRequestedProvisioningModes(FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED) 636 .setAllowedProvisioningModes(new ArrayList<>(List.of( 637 PROVISIONING_MODE_MANAGED_PROFILE, 638 PROVISIONING_MODE_FULLY_MANAGED_DEVICE))) 639 .setReturnBeforePolicyCompliance(true) 640 .setWifiInfo(WifiInfo.Builder.builder() 641 .setSsid(TEST_SSID) 642 .setHidden(TEST_HIDDEN) 643 .setSecurityType(TEST_SECURITY_TYPE_EAP) 644 .setPassword(TEST_PASSWORD) 645 .setEapMethod(TEST_EAP_METHOD) 646 .setPhase2Auth(TEST_PHASE2_AUTH) 647 .setCaCertificate(TEST_CA_CERT) 648 .setUserCertificate(TEST_USER_CERT) 649 .setIdentity(TEST_IDENTITY) 650 .setAnonymousIdentity(TEST_ANONYMOUS_IDENTITY) 651 .setDomain(TEST_DOMAIN) 652 .setProxyHost(TEST_PROXY_HOST) 653 .setProxyPort(TEST_PROXY_PORT) 654 .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS) 655 .setPacUrl(TEST_PAC_URL) 656 .build()) 657 .build()); 658 } 659 testParse_PermissionGrantOptOut()660 public void testParse_PermissionGrantOptOut() throws IllegalProvisioningArgumentException { 661 Intent provisionIntent = new Intent(ACTION_PROVISION_MANAGED_PROFILE) 662 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 663 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 664 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_SENSORS_PERMISSION_GRANT_OPT_OUT, 665 true); 666 mockInstalledDeviceAdminForTestPackageName(); 667 668 ProvisioningParams params = mExtrasProvisioningDataParser.parse(provisionIntent); 669 assertThat(params.deviceOwnerPermissionGrantOptOut).isEqualTo(true); 670 } 671 testShortNamesOfExtrasAreUnique()672 public void testShortNamesOfExtrasAreUnique() { 673 assertEquals(buildAllShortExtras().distinct().count(), buildAllShortExtras().count()); 674 } 675 testParse_organizationOwnedIsFalse()676 public void testParse_organizationOwnedIsFalse() throws Exception { 677 Intent intent = buildTestIntent(); 678 mockInstalledDeviceAdminForTestPackageName(); 679 680 assertThat(mExtrasProvisioningDataParser.parse(intent) 681 .isOrganizationOwnedProvisioning).isFalse(); 682 } 683 684 685 public void testParse_managedAccountProvisioningWithSkipEduExtra_skipEdu()686 testParse_managedAccountProvisioningWithSkipEduExtra_skipEdu() throws Exception { 687 Intent intent = buildTestProvisionManagedAccountIntent() 688 .putExtra(EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS, true); 689 mockInstalledDeviceAdminForTestPackageName(); 690 691 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 692 693 assertThat(params.skipEducationScreens).isTrue(); 694 } 695 696 public void testParse_managedAccountProvisioningWithoutSkipEduExtra_noSkipEdu()697 testParse_managedAccountProvisioningWithoutSkipEduExtra_noSkipEdu() throws Exception { 698 Intent intent = buildTestProvisionManagedAccountIntent(); 699 mockInstalledDeviceAdminForTestPackageName(); 700 701 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 702 703 assertThat(params.skipEducationScreens).isFalse(); 704 } 705 706 public void testParse_qrProvisioningWithSkipEduExtra_noSkipEdu()707 testParse_qrProvisioningWithSkipEduExtra_noSkipEdu() throws Exception { 708 Intent intent = buildTestQrCodeIntent() 709 .putExtra(EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS, true); 710 mockInstalledDeviceAdminForTestPackageName(); 711 712 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 713 714 assertThat(params.skipEducationScreens).isFalse(); 715 } 716 717 public void testParse_managedProfileProvisioningWithSkipEduExtra_noSkipEdu()718 testParse_managedProfileProvisioningWithSkipEduExtra_noSkipEdu() throws Exception { 719 Intent intent = buildTestManagedProfileIntent() 720 .putExtra(EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS, true); 721 mockInstalledDeviceAdminForTestPackageName(); 722 723 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 724 725 assertThat(params.skipEducationScreens).isFalse(); 726 } 727 728 public void testParse_trustedSourceWithPersonallyOwnedSupportedModes_areEqual()729 testParse_trustedSourceWithPersonallyOwnedSupportedModes_areEqual() throws Exception { 730 Intent intent = buildTestTrustedSourceIntent() 731 .putExtra(EXTRA_PROVISIONING_SUPPORTED_MODES, 732 FLAG_SUPPORTED_MODES_PERSONALLY_OWNED); 733 mockInstalledDeviceAdminForTestPackageName(); 734 735 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 736 737 assertThat(params.initiatorRequestedProvisioningModes) 738 .isEqualTo(FLAG_SUPPORTED_MODES_PERSONALLY_OWNED); 739 } 740 741 public void testParse_trustedSourceWithOrganizationOwnedSupportedModes_areEqual()742 testParse_trustedSourceWithOrganizationOwnedSupportedModes_areEqual() throws Exception { 743 Intent intent = buildTestTrustedSourceIntent() 744 .putExtra(EXTRA_PROVISIONING_SUPPORTED_MODES, 745 FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED); 746 mockInstalledDeviceAdminForTestPackageName(); 747 748 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 749 750 assertThat(params.initiatorRequestedProvisioningModes) 751 .isEqualTo(FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED); 752 } 753 testParse_trustedSourceWithOrganizationAndPersonallyOwnedSupportedModes_areEqual()754 public void testParse_trustedSourceWithOrganizationAndPersonallyOwnedSupportedModes_areEqual() 755 throws Exception { 756 Intent intent = buildTestTrustedSourceIntent() 757 .putExtra(EXTRA_PROVISIONING_SUPPORTED_MODES, 758 FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED 759 | FLAG_SUPPORTED_MODES_PERSONALLY_OWNED); 760 mockInstalledDeviceAdminForTestPackageName(); 761 762 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 763 764 assertThat(params.initiatorRequestedProvisioningModes) 765 .isEqualTo(FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED 766 | FLAG_SUPPORTED_MODES_PERSONALLY_OWNED); 767 } 768 testParse_trustedSourceWithDeviceOwnerSupportedMode_areEqual()769 public void testParse_trustedSourceWithDeviceOwnerSupportedMode_areEqual() 770 throws Exception { 771 Intent intent = buildTestTrustedSourceIntent() 772 .putExtra(EXTRA_PROVISIONING_SUPPORTED_MODES, FLAG_SUPPORTED_MODES_DEVICE_OWNER); 773 mockInstalledDeviceAdminForTestPackageName(); 774 775 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 776 777 assertThat(params.initiatorRequestedProvisioningModes) 778 .isEqualTo(FLAG_SUPPORTED_MODES_DEVICE_OWNER); 779 } 780 781 public void testParse_nonTrustedSourceIntentWithOrganizationOwnedSupportedModes_hasDefaultValue()782 testParse_nonTrustedSourceIntentWithOrganizationOwnedSupportedModes_hasDefaultValue() 783 throws Exception { 784 Intent intent = bildTestNonTrustedSourceIntent() 785 .putExtra(EXTRA_PROVISIONING_SUPPORTED_MODES, 786 FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED); 787 mockInstalledDeviceAdminForTestPackageName(); 788 789 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 790 791 assertThat(params.initiatorRequestedProvisioningModes) 792 .isEqualTo(DEFAULT_EXTRA_PROVISIONING_SUPPORTED_MODES); 793 } 794 testParse_trustedSourceWithoutSupportedModes_defaultsToOrganizationOwned()795 public void testParse_trustedSourceWithoutSupportedModes_defaultsToOrganizationOwned() 796 throws Exception { 797 Intent intent = buildTestTrustedSourceIntent(); 798 mockInstalledDeviceAdminForTestPackageName(); 799 800 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 801 802 assertThat(params.initiatorRequestedProvisioningModes) 803 .isEqualTo(FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED); 804 } 805 testParse_trustedSourceWithInvalidSupportedModes_throwsException()806 public void testParse_trustedSourceWithInvalidSupportedModes_throwsException() 807 throws IllegalProvisioningArgumentException { 808 Intent intent = buildTestTrustedSourceIntent() 809 .putExtra(EXTRA_PROVISIONING_SUPPORTED_MODES, INVALID_SUPPORTED_MODES); 810 mockInstalledDeviceAdminForTestPackageName(); 811 812 assertThrows( 813 IllegalProvisioningArgumentException.class, 814 () -> mExtrasProvisioningDataParser.parse(intent)); 815 } 816 testParse_trustedSourceWithSkipOwnershipDisclaimerTrue_areEqual()817 public void testParse_trustedSourceWithSkipOwnershipDisclaimerTrue_areEqual() 818 throws IllegalProvisioningArgumentException { 819 Intent intent = buildTestTrustedSourceIntent() 820 .putExtra(EXTRA_PROVISIONING_SKIP_OWNERSHIP_DISCLAIMER, true); 821 mockInstalledDeviceAdminForTestPackageName(); 822 823 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 824 825 assertThat(params.skipOwnershipDisclaimer).isTrue(); 826 } 827 testParse_trustedSourceWithSkipOwnershipDisclaimerFalse_areEqual()828 public void testParse_trustedSourceWithSkipOwnershipDisclaimerFalse_areEqual() 829 throws IllegalProvisioningArgumentException { 830 Intent intent = buildTestTrustedSourceIntent() 831 .putExtra(EXTRA_PROVISIONING_SKIP_OWNERSHIP_DISCLAIMER, false); 832 mockInstalledDeviceAdminForTestPackageName(); 833 834 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 835 836 assertThat(params.skipOwnershipDisclaimer).isFalse(); 837 } 838 testParse_trustedSourceWithoutSkipOwnershipDisclaimer_isFalse()839 public void testParse_trustedSourceWithoutSkipOwnershipDisclaimer_isFalse() 840 throws IllegalProvisioningArgumentException { 841 Intent intent = buildTestTrustedSourceIntent(); 842 mockInstalledDeviceAdminForTestPackageName(); 843 844 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 845 846 assertThat(params.skipOwnershipDisclaimer).isFalse(); 847 } 848 testParse_managedProfileWithSkipOwnershipDisclaimerTrue_isFalse()849 public void testParse_managedProfileWithSkipOwnershipDisclaimerTrue_isFalse() 850 throws IllegalProvisioningArgumentException { 851 Intent intent = buildTestManagedProfileIntent() 852 .putExtra(EXTRA_PROVISIONING_SKIP_OWNERSHIP_DISCLAIMER, true); 853 mockInstalledDeviceAdminForTestPackageName(); 854 855 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 856 857 assertThat(params.skipOwnershipDisclaimer).isFalse(); 858 } 859 testParse_trustedSourceWithReturnBeforePolicyComplianceTrue_isTrue()860 public void testParse_trustedSourceWithReturnBeforePolicyComplianceTrue_isTrue() 861 throws IllegalProvisioningArgumentException { 862 Intent intent = buildTestTrustedSourceIntent() 863 .putExtra(EXTRA_PROVISIONING_RETURN_BEFORE_POLICY_COMPLIANCE, true); 864 mockInstalledDeviceAdminForTestPackageName(); 865 866 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 867 868 assertThat(params.returnBeforePolicyCompliance).isTrue(); 869 } 870 testParse_trustedSourceWithReturnBeforePolicyComplianceFalse_isFalse()871 public void testParse_trustedSourceWithReturnBeforePolicyComplianceFalse_isFalse() 872 throws IllegalProvisioningArgumentException { 873 Intent intent = buildTestTrustedSourceIntent() 874 .putExtra(EXTRA_PROVISIONING_RETURN_BEFORE_POLICY_COMPLIANCE, false); 875 mockInstalledDeviceAdminForTestPackageName(); 876 877 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 878 879 assertThat(params.returnBeforePolicyCompliance).isFalse(); 880 } 881 testParse_trustedSourceWithReturnBeforePolicyComplianceNotSet_isTrue()882 public void testParse_trustedSourceWithReturnBeforePolicyComplianceNotSet_isTrue() 883 throws IllegalProvisioningArgumentException { 884 Intent intent = buildTestTrustedSourceIntent(); 885 mockInstalledDeviceAdminForTestPackageName(); 886 887 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 888 889 assertThat(params.returnBeforePolicyCompliance).isTrue(); 890 } 891 testParse_managedProfileWithReturnBeforePolicyComplianceTrue_afterSetupWizard_isFalse()892 public void testParse_managedProfileWithReturnBeforePolicyComplianceTrue_afterSetupWizard_isFalse() 893 throws IllegalProvisioningArgumentException { 894 when(mSettingsFacade.isDuringSetupWizard(mContext)).thenReturn(false); 895 Intent intent = buildTestManagedProfileIntent() 896 .putExtra(EXTRA_PROVISIONING_RETURN_BEFORE_POLICY_COMPLIANCE, true); 897 mockInstalledDeviceAdminForTestPackageName(); 898 899 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 900 901 assertThat(params.returnBeforePolicyCompliance).isFalse(); 902 } 903 testParse_managedProfileWithReturnBeforePolicyComplianceTrue_duringSetupWizard_isTrue()904 public void testParse_managedProfileWithReturnBeforePolicyComplianceTrue_duringSetupWizard_isTrue() 905 throws IllegalProvisioningArgumentException { 906 when(mSettingsFacade.isDuringSetupWizard(mContext)).thenReturn(true); 907 Intent intent = buildTestManagedProfileIntent() 908 .putExtra(EXTRA_PROVISIONING_RETURN_BEFORE_POLICY_COMPLIANCE, true); 909 mockInstalledDeviceAdminForTestPackageName(); 910 911 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 912 913 assertThat(params.returnBeforePolicyCompliance).isTrue(); 914 } 915 testParse_managedProfileWithReturnBeforePolicyComplianceNotSet_isFalse()916 public void testParse_managedProfileWithReturnBeforePolicyComplianceNotSet_isFalse() 917 throws IllegalProvisioningArgumentException { 918 Intent intent = buildTestManagedProfileIntent(); 919 mockInstalledDeviceAdminForTestPackageName(); 920 921 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 922 923 assertThat(params.returnBeforePolicyCompliance).isFalse(); 924 } 925 testParse_financedDeviceProvisioningWithReturnBeforePolicyComplianceTrue_isTrue()926 public void testParse_financedDeviceProvisioningWithReturnBeforePolicyComplianceTrue_isTrue() 927 throws IllegalProvisioningArgumentException { 928 Intent intent = buildTestFinancedDeviceIntent() 929 .putExtra(EXTRA_PROVISIONING_RETURN_BEFORE_POLICY_COMPLIANCE, true); 930 mockInstalledDeviceAdminForTestPackageName(); 931 932 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 933 934 assertThat(params.returnBeforePolicyCompliance).isTrue(); 935 } 936 testParse_financedDeviceProvisioningWithReturnBeforePolicyComplianceFalse_isTrue()937 public void testParse_financedDeviceProvisioningWithReturnBeforePolicyComplianceFalse_isTrue() 938 throws IllegalProvisioningArgumentException { 939 Intent intent = buildTestFinancedDeviceIntent() 940 .putExtra(EXTRA_PROVISIONING_RETURN_BEFORE_POLICY_COMPLIANCE, false); 941 mockInstalledDeviceAdminForTestPackageName(); 942 943 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 944 945 assertThat(params.returnBeforePolicyCompliance).isTrue(); 946 } 947 testParse_financedDeviceProvisioningWithReturnBeforePolicyComplianceNotSet_isTrue()948 public void testParse_financedDeviceProvisioningWithReturnBeforePolicyComplianceNotSet_isTrue() 949 throws IllegalProvisioningArgumentException { 950 Intent intent = buildTestFinancedDeviceIntent(); 951 mockInstalledDeviceAdminForTestPackageName(); 952 953 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 954 955 assertThat(params.returnBeforePolicyCompliance).isTrue(); 956 } 957 testParse_trustedSourceProvisioningWithAllowOfflineTrue_isTrue()958 public void testParse_trustedSourceProvisioningWithAllowOfflineTrue_isTrue() 959 throws IllegalProvisioningArgumentException { 960 Intent intent = buildTestTrustedSourceIntent() 961 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_ALLOW_OFFLINE, 962 /* value= */ true); 963 mockInstalledDeviceAdminForTestPackageName(); 964 965 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 966 967 assertThat(params.allowOffline).isTrue(); 968 } 969 testParse_trustedSourceProvisioningWithAllowOfflineFalse_isFalse()970 public void testParse_trustedSourceProvisioningWithAllowOfflineFalse_isFalse() 971 throws IllegalProvisioningArgumentException { 972 Intent intent = buildTestTrustedSourceIntent() 973 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_ALLOW_OFFLINE, 974 /* value= */ false); 975 mockInstalledDeviceAdminForTestPackageName(); 976 977 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 978 979 assertThat(params.allowOffline).isFalse(); 980 } 981 testParse_trustedSourceProvisioningWithAllowOfflineNotSet_isFalse()982 public void testParse_trustedSourceProvisioningWithAllowOfflineNotSet_isFalse() 983 throws IllegalProvisioningArgumentException { 984 Intent intent = buildTestTrustedSourceIntent(); 985 mockInstalledDeviceAdminForTestPackageName(); 986 987 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 988 989 assertThat(params.allowOffline).isFalse(); 990 } 991 testParse_managedProfileProvisioningWithAllowOfflineTrue_isTrue()992 public void testParse_managedProfileProvisioningWithAllowOfflineTrue_isTrue() 993 throws IllegalProvisioningArgumentException { 994 Intent intent = buildTestManagedProfileIntent() 995 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_ALLOW_OFFLINE, /* value= */ true); 996 mockInstalledDeviceAdminForTestPackageName(); 997 998 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 999 1000 assertThat(params.allowOffline).isTrue(); 1001 } 1002 testParse_financedDeviceProvisioningWithAllowOfflineTrue_isTrue()1003 public void testParse_financedDeviceProvisioningWithAllowOfflineTrue_isTrue() 1004 throws IllegalProvisioningArgumentException { 1005 Intent intent = buildTestFinancedDeviceIntent() 1006 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_ALLOW_OFFLINE, /* value= */ true); 1007 mockInstalledDeviceAdminForTestPackageName(); 1008 1009 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 1010 1011 assertThat(params.allowOffline).isTrue(); 1012 } 1013 testParse_trustedSourceProvisioningWithProvisioningShouldLaunchResultIntentTrue_isTrue()1014 public void testParse_trustedSourceProvisioningWithProvisioningShouldLaunchResultIntentTrue_isTrue() 1015 throws IllegalProvisioningArgumentException { 1016 Intent intent = buildTestTrustedSourceIntent() 1017 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_SHOULD_LAUNCH_RESULT_INTENT, 1018 /* value= */ true); 1019 mockInstalledDeviceAdminForTestPackageName(); 1020 1021 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 1022 1023 assertThat(params.provisioningShouldLaunchResultIntent).isTrue(); 1024 } 1025 testParse_trustedSourceProvisioningWithProvisioningShouldLaunchResultIntentFalse_isFalse()1026 public void testParse_trustedSourceProvisioningWithProvisioningShouldLaunchResultIntentFalse_isFalse() 1027 throws IllegalProvisioningArgumentException { 1028 Intent intent = buildTestTrustedSourceIntent() 1029 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_SHOULD_LAUNCH_RESULT_INTENT, 1030 /* value= */ false); 1031 mockInstalledDeviceAdminForTestPackageName(); 1032 1033 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 1034 1035 assertThat(params.provisioningShouldLaunchResultIntent).isFalse(); 1036 } 1037 testParse_trustedSourceProvisioningWithProvisioningShouldLaunchResultIntentNotSet_isFalse()1038 public void testParse_trustedSourceProvisioningWithProvisioningShouldLaunchResultIntentNotSet_isFalse() 1039 throws IllegalProvisioningArgumentException { 1040 Intent intent = buildTestTrustedSourceIntent(); 1041 mockInstalledDeviceAdminForTestPackageName(); 1042 1043 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 1044 1045 assertThat(params.provisioningShouldLaunchResultIntent).isFalse(); 1046 } 1047 testParse_managedProfileProvisioningWithProvisioningShouldLaunchResultIntentTrue_isTrue()1048 public void testParse_managedProfileProvisioningWithProvisioningShouldLaunchResultIntentTrue_isTrue() 1049 throws IllegalProvisioningArgumentException { 1050 Intent intent = buildTestManagedProfileIntent() 1051 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_SHOULD_LAUNCH_RESULT_INTENT, 1052 /* value= */ true); 1053 mockInstalledDeviceAdminForTestPackageName(); 1054 1055 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 1056 1057 assertThat(params.provisioningShouldLaunchResultIntent).isTrue(); 1058 } 1059 testDoesNotParse_financedDeviceProvisioningWithProvisioningShouldLaunchResultIntentTrue_isFalse()1060 public void testDoesNotParse_financedDeviceProvisioningWithProvisioningShouldLaunchResultIntentTrue_isFalse() 1061 throws IllegalProvisioningArgumentException { 1062 Intent intent = buildTestFinancedDeviceIntent() 1063 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_SHOULD_LAUNCH_RESULT_INTENT, 1064 /* value= */ true); 1065 mockInstalledDeviceAdminForTestPackageName(); 1066 1067 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 1068 1069 assertThat(params.provisioningShouldLaunchResultIntent).isFalse(); 1070 } 1071 testDoesNotParse_financedDeviceProvisioningWithProvisioningShouldLaunchResultIntentFalse_isFalse()1072 public void testDoesNotParse_financedDeviceProvisioningWithProvisioningShouldLaunchResultIntentFalse_isFalse() 1073 throws IllegalProvisioningArgumentException { 1074 Intent intent = buildTestFinancedDeviceIntent() 1075 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_SHOULD_LAUNCH_RESULT_INTENT, 1076 /* value= */ false); 1077 mockInstalledDeviceAdminForTestPackageName(); 1078 1079 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 1080 1081 assertThat(params.provisioningShouldLaunchResultIntent).isFalse(); 1082 } 1083 testParse_trustedSourceProvisioningWithRoleHolderDownloadInfo_works()1084 public void testParse_trustedSourceProvisioningWithRoleHolderDownloadInfo_works() 1085 throws IllegalProvisioningArgumentException { 1086 Intent intent = buildTestTrustedSourceIntent() 1087 .putExtra(EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION, 1088 TEST_DOWNLOAD_LOCATION) 1089 .putExtra(EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_COOKIE_HEADER, 1090 TEST_COOKIE_HEADER) 1091 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_ROLE_HOLDER_SIGNATURE_CHECKSUM, 1092 TEST_SIGNATURE_CHECKSUM_STRING); 1093 mockInstalledDeviceAdminForTestPackageName(); 1094 1095 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 1096 1097 assertThat(params.roleHolderDownloadInfo).isNotNull(); 1098 assertThat(params.roleHolderDownloadInfo.location).isEqualTo(TEST_DOWNLOAD_LOCATION); 1099 assertThat(params.roleHolderDownloadInfo.signatureChecksum) 1100 .isEqualTo(TEST_SIGNATURE_CHECKSUM); 1101 assertThat(params.roleHolderDownloadInfo.cookieHeader).isEqualTo(TEST_COOKIE_HEADER); 1102 } 1103 testParse_managedProfileProvisioningWithRoleHolderDownloadInfo_notParsed()1104 public void testParse_managedProfileProvisioningWithRoleHolderDownloadInfo_notParsed() 1105 throws IllegalProvisioningArgumentException { 1106 Intent intent = buildTestManagedProfileIntent() 1107 .putExtra(EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION, 1108 TEST_DOWNLOAD_LOCATION) 1109 .putExtra(EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_COOKIE_HEADER, 1110 TEST_COOKIE_HEADER) 1111 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_ROLE_HOLDER_SIGNATURE_CHECKSUM, 1112 TEST_SIGNATURE_CHECKSUM_STRING); 1113 mockInstalledDeviceAdminForTestPackageName(); 1114 1115 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 1116 1117 assertThat(params.roleHolderDownloadInfo).isNull(); 1118 } 1119 testParse_financedDeviceProvisioningWithRoleHolderDownloadInfo_notParsed()1120 public void testParse_financedDeviceProvisioningWithRoleHolderDownloadInfo_notParsed() 1121 throws IllegalProvisioningArgumentException { 1122 Intent intent = buildTestFinancedDeviceIntent() 1123 .putExtra(EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION, 1124 TEST_DOWNLOAD_LOCATION) 1125 .putExtra(EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_COOKIE_HEADER, 1126 TEST_COOKIE_HEADER) 1127 .putExtra(DevicePolicyManager.EXTRA_PROVISIONING_ROLE_HOLDER_SIGNATURE_CHECKSUM, 1128 TEST_SIGNATURE_CHECKSUM_STRING); 1129 mockInstalledDeviceAdminForTestPackageName(); 1130 1131 ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); 1132 1133 assertThat(params.roleHolderDownloadInfo).isNull(); 1134 } 1135 buildAllShortExtras()1136 private Stream<Field> buildAllShortExtras() { 1137 Field[] fields = ExtrasProvisioningDataParser.class.getDeclaredFields(); 1138 return Arrays.stream(fields) 1139 .filter(field -> field.getName().startsWith("EXTRA_") 1140 && field.getName().endsWith("_SHORT")); 1141 } 1142 createTestProvisioningParamsBuilder()1143 private ProvisioningParams.Builder createTestProvisioningParamsBuilder() { 1144 return ProvisioningParams.Builder.builder().setProvisioningId(TEST_PROVISIONING_ID); 1145 } 1146 buildIntentWithAllShortExtras()1147 private Intent buildIntentWithAllShortExtras() { 1148 Bundle bundleShort = new Bundle(); 1149 bundleShort.putString( 1150 EXTRA_PROVISIONING_DISCLAIMER_HEADER_SHORT, TEST_DISCLAMER_HEADER); 1151 bundleShort.putParcelable(EXTRA_PROVISIONING_DISCLAIMER_CONTENT_SHORT, TEST_URI); 1152 Parcelable[] parcelablesShort = {bundleShort}; 1153 return new Intent(ACTION_PROVISION_MANAGED_DEVICE) 1154 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME_SHORT, 1155 TEST_PACKAGE_NAME) 1156 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME_SHORT, 1157 TEST_COMPONENT_NAME) 1158 .putExtras(getShortTestTimeTimeZoneAndLocaleExtras()) 1159 .putExtras(getAllShortTestWifiInfoExtras()) 1160 .putExtras(getShortTestDeviceAdminDownloadExtras()) 1161 .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE_SHORT, 1162 createTestAdminExtras()) 1163 .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION_SHORT, TEST_SKIP_ENCRYPTION) 1164 .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED_SHORT, 1165 TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 1166 .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE_SHORT, TEST_ACCOUNT_TO_MIGRATE) 1167 .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION_SHORT, 1168 TEST_KEEP_ACCOUNT_MIGRATED) 1169 .putExtra(EXTRA_PROVISIONING_ORGANIZATION_NAME_SHORT, 1170 TEST_ORGANIZATION_NAME) 1171 .putExtra(EXTRA_PROVISIONING_SUPPORT_URL_SHORT, TEST_SUPPORT_URL) 1172 .putExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA_SHORT, 1173 TEST_USE_MOBILE_DATA) 1174 .putExtra(EXTRA_PROVISIONING_DISCLAIMERS_SHORT, parcelablesShort) 1175 .putExtra(EXTRA_PROVISIONING_SENSORS_PERMISSION_GRANT_OPT_OUT_SHORT, true); 1176 } 1177 buildIntentWithAllLongExtras()1178 private Intent buildIntentWithAllLongExtras() { 1179 Bundle bundleLong = new Bundle(); 1180 bundleLong.putString(EXTRA_PROVISIONING_DISCLAIMER_HEADER, TEST_DISCLAMER_HEADER); 1181 bundleLong.putParcelable(EXTRA_PROVISIONING_DISCLAIMER_CONTENT, TEST_URI); 1182 Parcelable[] parcelablesLong = {bundleLong}; 1183 return new Intent(ACTION_PROVISION_MANAGED_DEVICE) 1184 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 1185 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 1186 .putExtras(getTestTimeTimeZoneAndLocaleExtras()) 1187 .putExtras(getAllTestWifiInfoExtras()) 1188 .putExtras(getTestDeviceAdminDownloadExtras()) 1189 .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) 1190 .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) 1191 .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, 1192 TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 1193 .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE) 1194 .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) 1195 .putExtra(EXTRA_PROVISIONING_ORGANIZATION_NAME, TEST_ORGANIZATION_NAME) 1196 .putExtra(EXTRA_PROVISIONING_SUPPORT_URL, TEST_SUPPORT_URL) 1197 .putExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA, TEST_USE_MOBILE_DATA) 1198 .putExtra(EXTRA_PROVISIONING_LOGO_URI, TEST_URI) 1199 .putExtra(EXTRA_PROVISIONING_DISCLAIMERS, parcelablesLong) 1200 .putExtra(EXTRA_PROVISIONING_SENSORS_PERMISSION_GRANT_OPT_OUT, true); 1201 } 1202 buildTestManagedProfileIntent()1203 private static Intent buildTestManagedProfileIntent() { 1204 return new Intent(ACTION_PROVISION_MANAGED_PROFILE) 1205 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 1206 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 1207 .putExtras(getTestTimeTimeZoneAndLocaleExtras()) 1208 .putExtras(getTestWifiInfoExtras()) 1209 .putExtras(getTestDeviceAdminDownloadExtras()) 1210 .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) 1211 .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) 1212 .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) 1213 .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, 1214 TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 1215 .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); 1216 } 1217 buildTestFinancedDeviceIntent()1218 private static Intent buildTestFinancedDeviceIntent() { 1219 return new Intent(ACTION_PROVISION_FINANCED_DEVICE) 1220 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 1221 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME); 1222 } 1223 bildTestNonTrustedSourceIntent()1224 private static Intent bildTestNonTrustedSourceIntent() { 1225 return buildTestManagedProfileIntent(); 1226 } 1227 buildTestIntent()1228 private static Intent buildTestIntent() { 1229 return buildTestTrustedSourceIntent(); 1230 } 1231 buildTestTrustedSourceIntent()1232 private static Intent buildTestTrustedSourceIntent() { 1233 return new Intent(ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE) 1234 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) 1235 .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) 1236 .putExtras(getTestTimeTimeZoneAndLocaleExtras()) 1237 .putExtras(getTestWifiInfoExtras()) 1238 .putExtras(getTestDeviceAdminDownloadExtras()) 1239 .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) 1240 .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) 1241 .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) 1242 .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, 1243 TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 1244 .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE) 1245 .putExtra(EXTRA_PROVISIONING_ORGANIZATION_NAME, TEST_ORGANIZATION_NAME) 1246 .putExtra(EXTRA_PROVISIONING_SUPPORT_URL, TEST_SUPPORT_URL); 1247 } 1248 buildTestQrCodeIntent()1249 private Intent buildTestQrCodeIntent() { 1250 return buildTestTrustedSourceIntent() 1251 .putExtra(EXTRA_PROVISIONING_TRIGGER, PROVISIONING_TRIGGER_QR_CODE); 1252 } 1253 buildTestProvisionManagedAccountIntent()1254 private Intent buildTestProvisionManagedAccountIntent() { 1255 return buildTestTrustedSourceIntent() 1256 .putExtra(EXTRA_PROVISIONING_TRIGGER, PROVISIONING_TRIGGER_MANAGED_ACCOUNT); 1257 } 1258 getTestWifiInfoExtras()1259 private static Bundle getTestWifiInfoExtras() { 1260 Bundle wifiInfoExtras = new Bundle(); 1261 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_SSID, TEST_SSID); 1262 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_SECURITY_TYPE, TEST_SECURITY_TYPE); 1263 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PASSWORD, TEST_PASSWORD); 1264 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PROXY_HOST, TEST_PROXY_HOST); 1265 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PROXY_BYPASS, TEST_PROXY_BYPASS_HOSTS); 1266 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PAC_URL, TEST_PAC_URL); 1267 wifiInfoExtras.putInt(EXTRA_PROVISIONING_WIFI_PROXY_PORT, TEST_PROXY_PORT); 1268 wifiInfoExtras.putBoolean(EXTRA_PROVISIONING_WIFI_HIDDEN, TEST_HIDDEN); 1269 return wifiInfoExtras; 1270 } 1271 getAllTestWifiInfoExtras()1272 private static Bundle getAllTestWifiInfoExtras() { 1273 Bundle wifiInfoExtras = new Bundle(); 1274 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_SSID, TEST_SSID); 1275 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_SECURITY_TYPE, TEST_SECURITY_TYPE); 1276 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PASSWORD, TEST_PASSWORD); 1277 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_EAP_METHOD, TEST_EAP_METHOD); 1278 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PHASE2_AUTH, TEST_PHASE2_AUTH); 1279 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE, TEST_CA_CERT); 1280 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE, TEST_USER_CERT); 1281 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_IDENTITY, TEST_IDENTITY); 1282 wifiInfoExtras.putString( 1283 EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY, TEST_ANONYMOUS_IDENTITY); 1284 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_DOMAIN, TEST_DOMAIN); 1285 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PROXY_HOST, TEST_PROXY_HOST); 1286 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PROXY_BYPASS, TEST_PROXY_BYPASS_HOSTS); 1287 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PAC_URL, TEST_PAC_URL); 1288 wifiInfoExtras.putInt(EXTRA_PROVISIONING_WIFI_PROXY_PORT, TEST_PROXY_PORT); 1289 wifiInfoExtras.putBoolean(EXTRA_PROVISIONING_WIFI_HIDDEN, TEST_HIDDEN); 1290 return wifiInfoExtras; 1291 } 1292 getAllShortTestWifiInfoExtras()1293 private static Bundle getAllShortTestWifiInfoExtras() { 1294 Bundle wifiInfoExtras = new Bundle(); 1295 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_SSID_SHORT, TEST_SSID); 1296 wifiInfoExtras.putString( 1297 EXTRA_PROVISIONING_WIFI_SECURITY_TYPE_SHORT, TEST_SECURITY_TYPE); 1298 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PASSWORD_SHORT, TEST_PASSWORD); 1299 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_EAP_METHOD_SHORT, TEST_EAP_METHOD); 1300 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PHASE2_AUTH_SHORT, TEST_PHASE2_AUTH); 1301 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE_SHORT, TEST_CA_CERT); 1302 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE_SHORT, TEST_USER_CERT); 1303 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_IDENTITY_SHORT, TEST_IDENTITY); 1304 wifiInfoExtras.putString( 1305 EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY_SHORT, TEST_ANONYMOUS_IDENTITY); 1306 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_DOMAIN_SHORT, TEST_DOMAIN); 1307 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PROXY_HOST_SHORT, TEST_PROXY_HOST); 1308 wifiInfoExtras.putString( 1309 EXTRA_PROVISIONING_WIFI_PROXY_BYPASS_SHORT, TEST_PROXY_BYPASS_HOSTS); 1310 wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PAC_URL_SHORT, TEST_PAC_URL); 1311 wifiInfoExtras.putInt(EXTRA_PROVISIONING_WIFI_PROXY_PORT_SHORT, TEST_PROXY_PORT); 1312 wifiInfoExtras.putBoolean(EXTRA_PROVISIONING_WIFI_HIDDEN_SHORT, TEST_HIDDEN); 1313 return wifiInfoExtras; 1314 } 1315 mockInstalledDeviceAdminForTestPackageName()1316 private void mockInstalledDeviceAdminForTestPackageName() 1317 throws IllegalProvisioningArgumentException { 1318 mockInstalledDeviceAdmin(TEST_PACKAGE_NAME); 1319 } 1320 mockInstalledDeviceAdminForNullPackageName()1321 private void mockInstalledDeviceAdminForNullPackageName() 1322 throws IllegalProvisioningArgumentException { 1323 mockInstalledDeviceAdmin(null); 1324 } 1325 mockInstalledDeviceAdmin(String packageName)1326 private void mockInstalledDeviceAdmin(String packageName) 1327 throws IllegalProvisioningArgumentException { 1328 doReturn(TEST_COMPONENT_NAME) 1329 .when(mUtils) 1330 .findDeviceAdmin(packageName, TEST_COMPONENT_NAME, mContext, UserHandle.myUserId()); 1331 } 1332 buildTestLocaleString()1333 private static String buildTestLocaleString() { 1334 return StoreUtils.localeToString(TEST_LOCALE); 1335 } 1336 getTestTimeTimeZoneAndLocaleExtras()1337 private static Bundle getTestTimeTimeZoneAndLocaleExtras() { 1338 return getTestTimeTimeZoneAndLocaleExtrasInternal(buildTestLocaleString()); 1339 } 1340 getShortTestTimeTimeZoneAndLocaleExtras()1341 private static Bundle getShortTestTimeTimeZoneAndLocaleExtras() { 1342 return getShortTestTimeTimeZoneAndLocaleExtrasInternal(buildTestLocaleString()); 1343 } 1344 getTestTimeTimeZoneAndLocaleExtras(String locale)1345 private static Bundle getTestTimeTimeZoneAndLocaleExtras(String locale) { 1346 return getTestTimeTimeZoneAndLocaleExtrasInternal(locale); 1347 } 1348 getTestTimeTimeZoneAndLocaleExtrasInternal(String locale)1349 private static Bundle getTestTimeTimeZoneAndLocaleExtrasInternal(String locale){ 1350 Bundle timeTimezoneAndLocaleExtras = new Bundle(); 1351 timeTimezoneAndLocaleExtras.putLong(EXTRA_PROVISIONING_LOCAL_TIME, TEST_LOCAL_TIME); 1352 timeTimezoneAndLocaleExtras.putString(EXTRA_PROVISIONING_TIME_ZONE, TEST_TIME_ZONE); 1353 timeTimezoneAndLocaleExtras.putString(EXTRA_PROVISIONING_LOCALE, locale); 1354 return timeTimezoneAndLocaleExtras; 1355 } 1356 getShortTestTimeTimeZoneAndLocaleExtrasInternal(String locale)1357 private static Bundle getShortTestTimeTimeZoneAndLocaleExtrasInternal(String locale){ 1358 Bundle timeTimezoneAndLocaleExtras = new Bundle(); 1359 timeTimezoneAndLocaleExtras.putLong( 1360 EXTRA_PROVISIONING_LOCAL_TIME_SHORT, TEST_LOCAL_TIME); 1361 timeTimezoneAndLocaleExtras.putString( 1362 EXTRA_PROVISIONING_TIME_ZONE_SHORT, TEST_TIME_ZONE); 1363 timeTimezoneAndLocaleExtras.putString( 1364 EXTRA_PROVISIONING_LOCALE_SHORT, locale); 1365 return timeTimezoneAndLocaleExtras; 1366 } 1367 getTestDeviceAdminDownloadExtras()1368 private static Bundle getTestDeviceAdminDownloadExtras() { 1369 Bundle downloadInfoExtras = new Bundle(); 1370 downloadInfoExtras.putInt( 1371 EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE, TEST_MIN_SUPPORT_VERSION); 1372 downloadInfoExtras.putString( 1373 EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION, TEST_DOWNLOAD_LOCATION); 1374 downloadInfoExtras.putString( 1375 EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER, TEST_COOKIE_HEADER); 1376 downloadInfoExtras.putString( 1377 EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM, 1378 buildTestPackageChecksum()); 1379 downloadInfoExtras.putString( 1380 EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM, 1381 buildTestSignatureChecksum()); 1382 return downloadInfoExtras; 1383 } 1384 buildTestPackageChecksum()1385 private static String buildTestPackageChecksum() { 1386 return Base64.encodeToString(TEST_PACKAGE_CHECKSUM, 1387 Base64.URL_SAFE | Base64.NO_PADDING | Base64.NO_WRAP); 1388 } 1389 getShortTestDeviceAdminDownloadExtras()1390 private static Bundle getShortTestDeviceAdminDownloadExtras() { 1391 Bundle downloadInfoExtras = new Bundle(); 1392 downloadInfoExtras.putInt( 1393 EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE_SHORT, 1394 TEST_MIN_SUPPORT_VERSION); 1395 downloadInfoExtras.putString( 1396 EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION_SHORT, 1397 TEST_DOWNLOAD_LOCATION); 1398 downloadInfoExtras.putString( 1399 EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER_SHORT, 1400 TEST_COOKIE_HEADER); 1401 downloadInfoExtras.putString( 1402 EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM_SHORT, 1403 buildTestPackageChecksum()); 1404 downloadInfoExtras.putString( 1405 EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM_SHORT, 1406 buildTestSignatureChecksum()); 1407 return downloadInfoExtras; 1408 } 1409 buildTestSignatureChecksum()1410 private static String buildTestSignatureChecksum() { 1411 return Base64.encodeToString(TEST_SIGNATURE_CHECKSUM, 1412 Base64.URL_SAFE | Base64.NO_PADDING | Base64.NO_WRAP); 1413 } 1414 } 1415