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