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.model; 17 18 import static android.app.admin.DevicePolicyManager.PROVISIONING_MODE_FULLY_MANAGED_DEVICE; 19 import static android.app.admin.DevicePolicyManager.PROVISIONING_MODE_MANAGED_PROFILE; 20 import static android.app.admin.DevicePolicyManager.PROVISIONING_MODE_MANAGED_PROFILE_ON_PERSONAL_DEVICE; 21 import static android.app.admin.DevicePolicyManager.PROVISIONING_TRIGGER_CLOUD_ENROLLMENT; 22 import static android.app.admin.DevicePolicyManager.PROVISIONING_TRIGGER_PERSISTENT_DEVICE_OWNER; 23 import static android.app.admin.DevicePolicyManager.PROVISIONING_TRIGGER_QR_CODE; 24 import static android.app.admin.DevicePolicyManager.PROVISIONING_TRIGGER_UNSPECIFIED; 25 26 import static com.android.managedprovisioning.TestUtils.createTestAdminExtras; 27 import static com.android.managedprovisioning.model.ProvisioningParams.FLOW_TYPE_ADMIN_INTEGRATED; 28 import static com.android.managedprovisioning.model.ProvisioningParams.FLOW_TYPE_LEGACY; 29 import static com.android.managedprovisioning.model.ProvisioningParams.FLOW_TYPE_UNSPECIFIED; 30 31 import static com.google.common.truth.Truth.assertThat; 32 33 import static org.mockito.ArgumentMatchers.eq; 34 import static org.mockito.ArgumentMatchers.nullable; 35 import static org.mockito.Mockito.when; 36 37 import android.accounts.Account; 38 import android.app.admin.DevicePolicyManager; 39 import android.content.ComponentName; 40 import android.os.Parcel; 41 import android.os.UserHandle; 42 import android.test.AndroidTestCase; 43 44 import androidx.test.filters.SmallTest; 45 46 import com.android.managedprovisioning.common.IllegalProvisioningArgumentException; 47 import com.android.managedprovisioning.common.Utils; 48 49 import org.mockito.Mock; 50 import org.mockito.MockitoAnnotations; 51 52 import java.io.File; 53 import java.util.ArrayList; 54 import java.util.List; 55 import java.util.Locale; 56 57 /** Tests for {@link ProvisioningParams} */ 58 public class ProvisioningParamsTest extends AndroidTestCase { 59 private static final String TEST_PROVISIONING_ACTION = 60 DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE; 61 62 private static final String TEST_PACKAGE_NAME = "com.afwsamples.testdpc"; 63 private static final ComponentName TEST_COMPONENT_NAME = 64 ComponentName.unflattenFromString( 65 "com.afwsamples.testdpc/com.afwsamples.testdpc.DeviceAdminReceiver"); 66 private static final long TEST_LOCAL_TIME = 1456939524713L; 67 private static final Locale TEST_LOCALE = Locale.UK; 68 private static final String TEST_TIME_ZONE = "GMT"; 69 private static final boolean TEST_STARTED_BY_TRUSTED_SOURCE = true; 70 private static final boolean TEST_IS_NFC = true; 71 private static final boolean TEST_LEAVE_ALL_SYSTEM_APP_ENABLED = true; 72 private static final boolean TEST_SKIP_ENCRYPTION = true; 73 private static final Account TEST_ACCOUNT_TO_MIGRATE = 74 new Account("user@gmail.com", "com.google"); 75 private static final boolean TEST_USE_MOBILE_DATA = true; 76 77 // Wifi info 78 private static final String TEST_SSID = "TestWifi"; 79 private static final boolean TEST_HIDDEN = true; 80 private static final String TEST_SECURITY_TYPE = "WPA2"; 81 private static final String TEST_PASSWORD = "GoogleRock"; 82 private static final String TEST_PROXY_HOST = "testhost.com"; 83 private static final int TEST_PROXY_PORT = 7689; 84 private static final String TEST_PROXY_BYPASS_HOSTS = "http://host1.com;https://host2.com"; 85 private static final String TEST_PAC_URL = "pac.test.com"; 86 private static final WifiInfo TEST_WIFI_INFO = WifiInfo.Builder.builder() 87 .setSsid(TEST_SSID) 88 .setHidden(TEST_HIDDEN) 89 .setSecurityType(TEST_SECURITY_TYPE) 90 .setPassword(TEST_PASSWORD) 91 .setProxyHost(TEST_PROXY_HOST) 92 .setProxyPort(TEST_PROXY_PORT) 93 .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS) 94 .setPacUrl(TEST_PAC_URL) 95 .build(); 96 97 // Device admin package download info 98 private static final String TEST_DOWNLOAD_LOCATION = 99 "http://example/dpc.apk"; 100 private static final String TEST_COOKIE_HEADER = 101 "Set-Cookie: sessionToken=foobar; Expires=Thu, 18 Feb 2016 23:59:59 GMT"; 102 private static final byte[] TEST_PACKAGE_CHECKSUM = new byte[] { '1', '2', '3', '4', '5' }; 103 private static final byte[] TEST_SIGNATURE_CHECKSUM = new byte[] { '5', '4', '3', '2', '1' }; 104 private static final int TEST_MIN_SUPPORT_VERSION = 17689; 105 private static final PackageDownloadInfo TEST_DOWNLOAD_INFO = 106 PackageDownloadInfo.Builder.builder() 107 .setLocation(TEST_DOWNLOAD_LOCATION) 108 .setCookieHeader(TEST_COOKIE_HEADER) 109 .setPackageChecksum(TEST_PACKAGE_CHECKSUM) 110 .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM) 111 .setMinVersion(TEST_MIN_SUPPORT_VERSION) 112 .build(); 113 114 @Mock 115 private Utils mUtils; 116 117 @Override setUp()118 protected void setUp() throws Exception { 119 super.setUp(); 120 MockitoAnnotations.initMocks(this); 121 } 122 123 @SmallTest testFailToConstructProvisioningParamsWithoutPackageNameOrComponentName()124 public void testFailToConstructProvisioningParamsWithoutPackageNameOrComponentName() { 125 // WHEN the ProvisioningParams is constructed by with neither a package name nor a component 126 // name 127 try { 128 ProvisioningParams provisioningParams = ProvisioningParams.Builder.builder() 129 .setProvisioningAction(TEST_PROVISIONING_ACTION) 130 .build(); 131 fail("Package name or component name is mandatory."); 132 } catch (IllegalArgumentException e) { 133 // THEN the ProvisioningParams fails to construct. 134 } 135 } 136 137 @SmallTest testFailToConstructProvisioningParamsWithoutProvisioningAction()138 public void testFailToConstructProvisioningParamsWithoutProvisioningAction() { 139 // WHEN the ProvisioningParams is constructed by without a provisioning action. 140 try { 141 ProvisioningParams provisioningParams = ProvisioningParams.Builder.builder() 142 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 143 .build(); 144 fail("Provisioning action is mandatory"); 145 } catch (NullPointerException e) { 146 // THEN the ProvisioningParams fails to construct. 147 } 148 } 149 150 @SmallTest testEquals()151 public void testEquals() { 152 // GIVEN 2 ProvisioningParams objects created by the same set of parameters 153 ProvisioningParams provisioningParams1 = getCompleteProvisioningParams(); 154 ProvisioningParams provisioningParams2 = getCompleteProvisioningParams(); 155 156 // WHEN these two objects compare. 157 // THEN they are the same. 158 assertThat(provisioningParams1).isEqualTo(provisioningParams2); 159 } 160 161 @SmallTest testNotEquals()162 public void testNotEquals() { 163 // GIVEN 2 ProvisioningParams objects created by different sets of parameters 164 ProvisioningParams provisioningParams1 = ProvisioningParams.Builder.builder() 165 .setProvisioningAction(TEST_PROVISIONING_ACTION) 166 .setDeviceAdminPackageName(TEST_PACKAGE_NAME) 167 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 168 .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO) 169 .setLocalTime(TEST_LOCAL_TIME) 170 .setLocale(TEST_LOCALE) 171 .setTimeZone(TEST_TIME_ZONE) 172 .setStartedByTrustedSource(TEST_STARTED_BY_TRUSTED_SOURCE) 173 .setLeaveAllSystemAppsEnabled(TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 174 .setSkipEncryption(TEST_SKIP_ENCRYPTION) 175 .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) 176 .setWifiInfo(TEST_WIFI_INFO) 177 .setUseMobileData(TEST_USE_MOBILE_DATA) 178 .setAdminExtrasBundle(createTestAdminExtras()) 179 .build(); 180 ProvisioningParams provisioningParams2 = ProvisioningParams.Builder.builder() 181 .setProvisioningAction("different.action") 182 .setDeviceAdminPackageName(TEST_PACKAGE_NAME) 183 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 184 .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO) 185 .setLocalTime(TEST_LOCAL_TIME) 186 .setLocale(TEST_LOCALE) 187 .setTimeZone(TEST_TIME_ZONE) 188 .setStartedByTrustedSource(TEST_STARTED_BY_TRUSTED_SOURCE) 189 .setLeaveAllSystemAppsEnabled(TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 190 .setSkipEncryption(TEST_SKIP_ENCRYPTION) 191 .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) 192 .setWifiInfo(TEST_WIFI_INFO) 193 .setUseMobileData(TEST_USE_MOBILE_DATA) 194 .setAdminExtrasBundle(createTestAdminExtras()) 195 .build(); 196 197 // WHEN these two objects compare. 198 // THEN they are not the same. 199 assertThat(provisioningParams1).isNotEqualTo(provisioningParams2); 200 } 201 202 @SmallTest testSaveAndRestoreComplete()203 public void testSaveAndRestoreComplete() throws Exception { 204 testSaveAndRestore(getCompleteProvisioningParams()); 205 } 206 207 // Testing with a minimum set of parameters to cover all null use cases. 208 @SmallTest testSaveAndRestoreMinimalist()209 public void testSaveAndRestoreMinimalist() throws Exception { 210 testSaveAndRestore(ProvisioningParams.Builder.builder() 211 .setProvisioningAction(TEST_PROVISIONING_ACTION) 212 .setDeviceAdminPackageName(TEST_PACKAGE_NAME) 213 .build()); 214 } 215 testSaveAndRestore(ProvisioningParams original)216 private void testSaveAndRestore(ProvisioningParams original) { 217 // GIVEN a ProvisioningParams object 218 // WHEN the ProvisioningParams is written to xml and then read back 219 File file = new File(mContext.getFilesDir(), "test_store.xml"); 220 original.save(file); 221 ProvisioningParams copy = ProvisioningParams.load(file); 222 // THEN the same ProvisioningParams is obtained 223 assertThat(original).isEqualTo(copy); 224 } 225 226 @SmallTest testParceable()227 public void testParceable() { 228 // GIVEN a ProvisioningParams object. 229 ProvisioningParams expectedProvisioningParams = getCompleteProvisioningParams(); 230 231 // WHEN the ProvisioningParams is written to parcel and then read back. 232 Parcel parcel = Parcel.obtain(); 233 expectedProvisioningParams.writeToParcel(parcel, 0); 234 parcel.setDataPosition(0); 235 ProvisioningParams actualProvisioningParams = 236 ProvisioningParams.CREATOR.createFromParcel(parcel); 237 238 // THEN the same ProvisioningParams is obtained. 239 assertThat(expectedProvisioningParams).isEqualTo(actualProvisioningParams); 240 } 241 242 @SmallTest testInferDeviceAdminComponentName_componentNameIsGiven()243 public void testInferDeviceAdminComponentName_componentNameIsGiven() 244 throws IllegalProvisioningArgumentException { 245 ProvisioningParams provisioningParams = new 246 ProvisioningParams.Builder() 247 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 248 .setProvisioningAction(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE) 249 .build(); 250 251 assertThat(TEST_COMPONENT_NAME) 252 .isEqualTo(provisioningParams.inferDeviceAdminComponentName( 253 mUtils, mContext, UserHandle.myUserId())); 254 } 255 256 @SmallTest testInferDeviceAdminComponentName_componentNameIsNotGiven()257 public void testInferDeviceAdminComponentName_componentNameIsNotGiven() 258 throws IllegalProvisioningArgumentException { 259 ProvisioningParams provisioningParams = new 260 ProvisioningParams.Builder() 261 .setDeviceAdminPackageName(TEST_PACKAGE_NAME) 262 .setProvisioningAction(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE) 263 .build(); 264 265 when(mUtils.findDeviceAdmin(eq(TEST_PACKAGE_NAME), nullable(ComponentName.class), 266 eq(mContext), eq(UserHandle.myUserId()))).thenReturn(TEST_COMPONENT_NAME); 267 268 assertThat(TEST_COMPONENT_NAME) 269 .isEqualTo(provisioningParams.inferDeviceAdminComponentName( 270 mUtils, mContext, UserHandle.myUserId())); 271 } 272 273 @SmallTest testSetUseMobileData_true()274 public void testSetUseMobileData_true() { 275 ProvisioningParams provisioningParams = 276 createDefaultProvisioningParamsBuilder().setUseMobileData(true).build(); 277 assertThat(provisioningParams.useMobileData).isTrue(); 278 } 279 280 @SmallTest testSetUseMobileData_false()281 public void testSetUseMobileData_false() { 282 ProvisioningParams provisioningParams = 283 createDefaultProvisioningParamsBuilder().setUseMobileData(false).build(); 284 assertThat(provisioningParams.useMobileData).isFalse(); 285 } 286 287 @SmallTest testSetUseMobileData_defaultsToFalse()288 public void testSetUseMobileData_defaultsToFalse() { 289 assertThat(createDefaultProvisioningParamsBuilder().build().useMobileData).isFalse(); 290 } 291 292 @SmallTest testSetFlowType_legacy_areEqual()293 public void testSetFlowType_legacy_areEqual() { 294 ProvisioningParams provisioningParams = 295 createDefaultProvisioningParamsBuilder() 296 .setFlowType(FLOW_TYPE_LEGACY).build(); 297 298 assertThat(provisioningParams.flowType).isEqualTo(FLOW_TYPE_LEGACY); 299 } 300 301 @SmallTest testSetFlowType_adminIntegrated_areEqual()302 public void testSetFlowType_adminIntegrated_areEqual() { 303 ProvisioningParams provisioningParams = 304 createDefaultProvisioningParamsBuilder() 305 .setFlowType(FLOW_TYPE_ADMIN_INTEGRATED).build(); 306 307 assertThat(provisioningParams.flowType).isEqualTo(FLOW_TYPE_ADMIN_INTEGRATED); 308 } 309 310 @SmallTest testSetFlowType_defaultsToUnspecified()311 public void testSetFlowType_defaultsToUnspecified() { 312 assertThat(createDefaultProvisioningParamsBuilder().build().flowType) 313 .isEqualTo(FLOW_TYPE_UNSPECIFIED); 314 } 315 316 @SmallTest testSetProvisioningTrigger_cloudEnrollment_areEqual()317 public void testSetProvisioningTrigger_cloudEnrollment_areEqual() { 318 ProvisioningParams provisioningParams = 319 createDefaultProvisioningParamsBuilder() 320 .setProvisioningTrigger(PROVISIONING_TRIGGER_CLOUD_ENROLLMENT).build(); 321 322 assertThat(provisioningParams.provisioningTrigger) 323 .isEqualTo(PROVISIONING_TRIGGER_CLOUD_ENROLLMENT); 324 } 325 326 @SmallTest testSetProvisioningTrigger_qrCode_areEqual()327 public void testSetProvisioningTrigger_qrCode_areEqual() { 328 ProvisioningParams provisioningParams = 329 createDefaultProvisioningParamsBuilder() 330 .setProvisioningTrigger(PROVISIONING_TRIGGER_QR_CODE).build(); 331 332 assertThat(provisioningParams.provisioningTrigger).isEqualTo(PROVISIONING_TRIGGER_QR_CODE); 333 } 334 335 @SmallTest testSetProvisioningTrigger_persistentDeviceOwner_areEqual()336 public void testSetProvisioningTrigger_persistentDeviceOwner_areEqual() { 337 ProvisioningParams provisioningParams = 338 createDefaultProvisioningParamsBuilder() 339 .setProvisioningTrigger(PROVISIONING_TRIGGER_PERSISTENT_DEVICE_OWNER) 340 .build(); 341 342 assertThat(provisioningParams.provisioningTrigger) 343 .isEqualTo(PROVISIONING_TRIGGER_PERSISTENT_DEVICE_OWNER); 344 } 345 346 @SmallTest testSetProvisioningTrigger_defaultsToUnspecified()347 public void testSetProvisioningTrigger_defaultsToUnspecified() { 348 assertThat(createDefaultProvisioningParamsBuilder().build().provisioningTrigger) 349 .isEqualTo(PROVISIONING_TRIGGER_UNSPECIFIED); 350 } 351 352 @SmallTest testSetAllowedProvisioningModes_defaultsToEmptyArray()353 public void testSetAllowedProvisioningModes_defaultsToEmptyArray() { 354 assertThat(createDefaultProvisioningParamsBuilder().build().allowedProvisioningModes) 355 .isEmpty(); 356 } 357 358 @SmallTest testSetAllowedProvisioningModes_personallyOwned_areEqual()359 public void testSetAllowedProvisioningModes_personallyOwned_areEqual() { 360 ProvisioningParams params = 361 createDefaultProvisioningParamsBuilder() 362 .setAllowedProvisioningModes(new ArrayList<>(List.of( 363 PROVISIONING_MODE_MANAGED_PROFILE))) 364 .build(); 365 366 assertThat(params.allowedProvisioningModes) 367 .containsExactly(PROVISIONING_MODE_MANAGED_PROFILE); 368 } 369 370 @SmallTest testSetAllowedProvisioningModes_organizationOwned_areEqual()371 public void testSetAllowedProvisioningModes_organizationOwned_areEqual() { 372 ProvisioningParams params = 373 createDefaultProvisioningParamsBuilder() 374 .setAllowedProvisioningModes(new ArrayList<>(List.of( 375 PROVISIONING_MODE_MANAGED_PROFILE, 376 PROVISIONING_MODE_FULLY_MANAGED_DEVICE))) 377 .build(); 378 379 assertThat(params.allowedProvisioningModes).containsExactly( 380 PROVISIONING_MODE_MANAGED_PROFILE, 381 PROVISIONING_MODE_FULLY_MANAGED_DEVICE); 382 } 383 384 @SmallTest testSetAllowedProvisioningModes_organizationAndPersonallyOwned_areEqual()385 public void testSetAllowedProvisioningModes_organizationAndPersonallyOwned_areEqual() { 386 ProvisioningParams params = 387 createDefaultProvisioningParamsBuilder() 388 .setAllowedProvisioningModes(new ArrayList<>(List.of( 389 PROVISIONING_MODE_MANAGED_PROFILE, 390 PROVISIONING_MODE_FULLY_MANAGED_DEVICE, 391 PROVISIONING_MODE_MANAGED_PROFILE_ON_PERSONAL_DEVICE))) 392 .build(); 393 394 assertThat(params.allowedProvisioningModes).containsExactly( 395 PROVISIONING_MODE_MANAGED_PROFILE, 396 PROVISIONING_MODE_FULLY_MANAGED_DEVICE, 397 PROVISIONING_MODE_MANAGED_PROFILE_ON_PERSONAL_DEVICE); 398 } 399 400 @SmallTest testSetSkipOwnershipDisclaimer_setTrue_isTrue()401 public void testSetSkipOwnershipDisclaimer_setTrue_isTrue() { 402 ProvisioningParams provisioningParams = 403 createDefaultProvisioningParamsBuilder() 404 .setSkipOwnershipDisclaimer(true) 405 .build(); 406 407 assertThat(provisioningParams.skipOwnershipDisclaimer).isTrue(); 408 } 409 410 @SmallTest testSetSkipOwnershipDisclaimer_setFalse_isFalse()411 public void testSetSkipOwnershipDisclaimer_setFalse_isFalse() { 412 ProvisioningParams provisioningParams = 413 createDefaultProvisioningParamsBuilder() 414 .setSkipOwnershipDisclaimer(false) 415 .build(); 416 417 assertThat(provisioningParams.skipOwnershipDisclaimer).isFalse(); 418 } 419 420 @SmallTest testSetSkipOwnershipDisclaimer_notSet_isFalse()421 public void testSetSkipOwnershipDisclaimer_notSet_isFalse() { 422 ProvisioningParams provisioningParams = 423 createDefaultProvisioningParamsBuilder() 424 .build(); 425 426 assertThat(provisioningParams.skipOwnershipDisclaimer).isFalse(); 427 } 428 429 @SmallTest testSetReturnBeforePolicyCompliance_setTrue_isTrue()430 public void testSetReturnBeforePolicyCompliance_setTrue_isTrue() { 431 ProvisioningParams provisioningParams = 432 createDefaultProvisioningParamsBuilder() 433 .setReturnBeforePolicyCompliance(true) 434 .build(); 435 436 assertThat(provisioningParams.returnBeforePolicyCompliance).isTrue(); 437 } 438 439 @SmallTest testSetReturnBeforePolicyCompliance_setFalse_isFalse()440 public void testSetReturnBeforePolicyCompliance_setFalse_isFalse() { 441 ProvisioningParams provisioningParams = 442 createDefaultProvisioningParamsBuilder() 443 .setReturnBeforePolicyCompliance(false) 444 .build(); 445 446 assertThat(provisioningParams.returnBeforePolicyCompliance).isFalse(); 447 } 448 449 @SmallTest testSetReturnBeforePolicyCompliance_notSet_isFalse()450 public void testSetReturnBeforePolicyCompliance_notSet_isFalse() { 451 ProvisioningParams provisioningParams = 452 createDefaultProvisioningParamsBuilder() 453 .build(); 454 455 assertThat(provisioningParams.returnBeforePolicyCompliance).isFalse(); 456 } 457 458 @SmallTest testDeviceOwnerDoesNotOptOutOfSensorsPermissionGrantsByDefault()459 public void testDeviceOwnerDoesNotOptOutOfSensorsPermissionGrantsByDefault() { 460 ProvisioningParams params = createDefaultProvisioningParamsBuilder().build(); 461 assertThat(params.deviceOwnerPermissionGrantOptOut).isFalse(); 462 } 463 464 @SmallTest testDeviceOwnerCanOptOutOfSensorsPermissionGrants()465 public void testDeviceOwnerCanOptOutOfSensorsPermissionGrants() { 466 ProvisioningParams params = createDefaultProvisioningParamsBuilder() 467 .setDeviceOwnerPermissionGrantOptOut(true).build(); 468 assertThat(params.deviceOwnerPermissionGrantOptOut).isTrue(); 469 } 470 471 @SmallTest testSetAllowProvisioningAfterUserSetupComplete_setTrue_isTrue()472 public void testSetAllowProvisioningAfterUserSetupComplete_setTrue_isTrue() { 473 ProvisioningParams provisioningParams = 474 createDefaultProvisioningParamsBuilder() 475 .setAllowProvisioningAfterUserSetupComplete(true) 476 .build(); 477 478 assertThat(provisioningParams.allowProvisioningAfterUserSetupComplete).isTrue(); 479 } 480 481 @SmallTest testSetAllowProvisioningAfterUserSetupComplete_setFalse_isFalse()482 public void testSetAllowProvisioningAfterUserSetupComplete_setFalse_isFalse() { 483 ProvisioningParams provisioningParams = 484 createDefaultProvisioningParamsBuilder() 485 .setAllowProvisioningAfterUserSetupComplete(false) 486 .build(); 487 488 assertThat(provisioningParams.allowProvisioningAfterUserSetupComplete).isFalse(); 489 } 490 491 @SmallTest testSetAllowProvisioningAfterUserSetupComplete_notSet_isFalse()492 public void testSetAllowProvisioningAfterUserSetupComplete_notSet_isFalse() { 493 ProvisioningParams provisioningParams = 494 createDefaultProvisioningParamsBuilder() 495 .build(); 496 497 assertThat(provisioningParams.allowProvisioningAfterUserSetupComplete).isFalse(); 498 } 499 createDefaultProvisioningParamsBuilder()500 private ProvisioningParams.Builder createDefaultProvisioningParamsBuilder() { 501 return ProvisioningParams.Builder 502 .builder() 503 .setProvisioningAction(TEST_PROVISIONING_ACTION) 504 .setDeviceAdminComponentName(TEST_COMPONENT_NAME); 505 } 506 getCompleteProvisioningParams()507 private ProvisioningParams getCompleteProvisioningParams() { 508 return ProvisioningParams.Builder.builder() 509 .setProvisioningAction(TEST_PROVISIONING_ACTION) 510 .setDeviceAdminPackageName(TEST_PACKAGE_NAME) 511 .setDeviceAdminComponentName(TEST_COMPONENT_NAME) 512 .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO) 513 .setLocalTime(TEST_LOCAL_TIME) 514 .setLocale(TEST_LOCALE) 515 .setTimeZone(TEST_TIME_ZONE) 516 .setStartedByTrustedSource(TEST_STARTED_BY_TRUSTED_SOURCE) 517 .setIsNfc(TEST_IS_NFC) 518 .setLeaveAllSystemAppsEnabled(TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) 519 .setSkipEncryption(TEST_SKIP_ENCRYPTION) 520 .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) 521 .setWifiInfo(TEST_WIFI_INFO) 522 .setUseMobileData(TEST_USE_MOBILE_DATA) 523 .setAdminExtrasBundle(createTestAdminExtras()) 524 .setIsOrganizationOwnedProvisioning(true) 525 .setFlowType(FLOW_TYPE_ADMIN_INTEGRATED) 526 .setProvisioningTrigger(DevicePolicyManager.PROVISIONING_TRIGGER_QR_CODE) 527 .setAllowProvisioningAfterUserSetupComplete(true) 528 .build(); 529 } 530 } 531