DeviceOwnerProvisioningControllerTest.java revision 6fb7161fc761c817cd3e708617ae3b3d331b1069
11271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz/* 21271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * Copyright 2016, The Android Open Source Project 31271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * 41271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * Licensed under the Apache License, Version 2.0 (the "License"); 51271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * you may not use this file except in compliance with the License. 61271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * You may obtain a copy of the License at 71271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * 81271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * http://www.apache.org/licenses/LICENSE-2.0 91271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * 101271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * Unless required by applicable law or agreed to in writing, software 111271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * distributed under the License is distributed on an "AS IS" BASIS, 121271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * See the License for the specific language governing permissions and 141271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz * limitations under the License. 151271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz */ 161271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz 1775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzpackage com.android.managedprovisioning.provisioning; 1875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 1975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE; 2075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport static org.mockito.Matchers.anyInt; 2175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport static org.mockito.Matchers.eq; 2275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport static org.mockito.Mockito.verify; 2375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 2475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport android.content.ComponentName; 2575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport android.test.suitebuilder.annotation.SmallTest; 2675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 276fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franzimport com.android.managedprovisioning.finalization.FinalizationController; 2875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.model.PackageDownloadInfo; 2975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.model.ProvisioningParams; 3075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.model.WifiInfo; 3175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.AbstractProvisioningTask; 3275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.AddWifiNetworkTask; 3375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.DeleteNonRequiredAppsTask; 3475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.DeviceOwnerInitializeProvisioningTask; 3575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.DisallowAddUserTask; 3675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.DownloadPackageTask; 3775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.InstallPackageTask; 3875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.SetDevicePolicyTask; 39945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franzimport com.android.managedprovisioning.task.VerifyPackageTask; 4075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 4175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport org.mockito.Mock; 4275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 4375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz/** 4475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz * Unit tests for {@link DeviceOwnerProvisioningController}. 4575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz */ 461271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franzpublic class DeviceOwnerProvisioningControllerTest extends ProvisioningControllerBaseTest { 4775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 4875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final int TEST_USER_ID = 123; 4975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final ComponentName TEST_ADMIN = new ComponentName("com.test.admin", 5075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz "com.test.admin.AdminReceiver"); 5175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 5275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final String TEST_SSID = "SomeSsid"; 5375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final WifiInfo TEST_WIFI_INFO = new WifiInfo.Builder() 5475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setSsid(TEST_SSID) 5575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .build(); 5675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 5775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final String TEST_DOWNLOAD_LOCATION = "http://www.some.uri.com"; 5875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final byte[] TEST_PACKAGE_CHECKSUM = new byte[] { '1', '2', '3', '4', '5' }; 5975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final PackageDownloadInfo TEST_DOWNLOAD_INFO = new PackageDownloadInfo.Builder() 6075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setLocation(TEST_DOWNLOAD_LOCATION) 6175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setSignatureChecksum(TEST_PACKAGE_CHECKSUM) 6275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .build(); 6375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 646fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz @Mock private ProvisioningControllerCallback mCallback; 656fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz @Mock private FinalizationController mFinalizationController; 663922fc38cae5d429ae23c047376f41e912390efeBenjamin Franz private ProvisioningParams mParams; 6775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 6875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz @SmallTest 6975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz public void testRunAllTasks() throws Exception { 7075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // GIVEN device owner provisioning was invoked with a wifi and download info 7175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz createController(TEST_WIFI_INFO, TEST_DOWNLOAD_INFO); 7275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 7375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN starting the test run 746fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mController.start(mHandler); 7575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 7675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the initialization task is run first 771271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeviceOwnerInitializeProvisioningTask.class); 7875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 7975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the add wifi task should be run 801271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(AddWifiNetworkTask.class); 8175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 8275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the download package task should be run 831271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DownloadPackageTask.class); 8475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 85945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz // THEN the verify package task should be run 86945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz taskSucceeded(VerifyPackageTask.class); 87945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz 8875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the install package task should be run 891271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(InstallPackageTask.class); 9075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 9175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the delete non-required apps task should be run 921271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeleteNonRequiredAppsTask.class); 9375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 9475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the set device policy task should be run 951271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(SetDevicePolicyTask.class); 9675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 971271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz // THEN the disallow add user task should be run 981271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DisallowAddUserTask.class); 9975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 10075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the provisioning complete callback should have happened 1016fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz verify(mCallback).provisioningTasksCompleted(); 10275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 10375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 10475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz @SmallTest 10575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz public void testNoWifiInfo() throws Exception { 10675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // GIVEN device owner provisioning was invoked with a wifi and download info 10775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz createController(null, TEST_DOWNLOAD_INFO); 10875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 10975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN starting the test run 1106fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mController.start(mHandler); 11175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 11275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the initialization task is run first 1131271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeviceOwnerInitializeProvisioningTask.class); 11475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 11575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the download package task should be run 1161271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DownloadPackageTask.class); 11775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 118945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz // THEN the verify package task should be run 119945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz taskSucceeded(VerifyPackageTask.class); 120945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz 12175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the install package task should be run 1221271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(InstallPackageTask.class); 12375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 12475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the delete non-required apps task should be run 1251271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeleteNonRequiredAppsTask.class); 12675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 12775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the set device policy task should be run 1281271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(SetDevicePolicyTask.class); 12975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 1301271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz // THEN the disallow add user task should be run 1311271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DisallowAddUserTask.class); 13275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 13375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the provisioning complete callback should have happened 1346fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz verify(mCallback).provisioningTasksCompleted(); 13575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 13675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 13775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz @SmallTest 13875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz public void testNoDownloadInfo() throws Exception { 13975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // GIVEN device owner provisioning was invoked with a wifi and download info 14075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz createController(TEST_WIFI_INFO, null); 14175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 14275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN starting the test run 1436fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mController.start(mHandler); 14475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 14575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the initialization task is run first 1461271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeviceOwnerInitializeProvisioningTask.class); 14775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 14875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the add wifi task should be run 1491271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(AddWifiNetworkTask.class); 15075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 15175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the delete non-required apps task should be run 1521271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeleteNonRequiredAppsTask.class); 15375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 15475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the set device policy task should be run 1551271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(SetDevicePolicyTask.class); 15675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 1571271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz // THEN the disallow add user task should be run 1581271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DisallowAddUserTask.class); 15975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 16075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the provisioning complete callback should have happened 1616fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz verify(mCallback).provisioningTasksCompleted(); 16275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 16375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 16475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz @SmallTest 16575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz public void testErrorAddWifiTask() throws Exception { 16675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // GIVEN device owner provisioning was invoked with a wifi and download info 16775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz createController(TEST_WIFI_INFO, TEST_DOWNLOAD_INFO); 16875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 16975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN starting the test run 1706fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mController.start(mHandler); 17175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 17275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the initialization task is run first 1731271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeviceOwnerInitializeProvisioningTask.class); 17475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 17575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the add wifi task should be run 1761271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz AbstractProvisioningTask task = verifyTaskRun(AddWifiNetworkTask.class); 17775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 17875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN the task causes an error 1791271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz mController.onError(task, 0); 18075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 18175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the onError callback should have been called without factory reset being required 1826fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz verify(mCallback).error(anyInt(), eq(false)); 18375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 18475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 18575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz @SmallTest 18675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz public void testErrorDownloadAppTask() throws Exception { 18775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // GIVEN device owner provisioning was invoked with a wifi and download info 18875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz createController(TEST_WIFI_INFO, TEST_DOWNLOAD_INFO); 18975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 19075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN starting the test run 1916fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mController.start(mHandler); 19275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 19375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the initialization task is run first 1941271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeviceOwnerInitializeProvisioningTask.class); 19575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 19675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the add wifi task should be run 1971271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(AddWifiNetworkTask.class); 19875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 19975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the download package task should be run 2001271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz AbstractProvisioningTask task = verifyTaskRun(DownloadPackageTask.class); 20175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 20275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN the task causes an error 2031271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz mController.onError(task, 0); 20475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 20575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the onError callback should have been called with factory reset being required 2066fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz verify(mCallback).error(anyInt(), eq(true)); 20775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 20875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 20975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private void createController(WifiInfo wifiInfo, PackageDownloadInfo downloadInfo) { 2103922fc38cae5d429ae23c047376f41e912390efeBenjamin Franz mParams = new ProvisioningParams.Builder() 21175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setDeviceAdminComponentName(TEST_ADMIN) 21275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setProvisioningAction(ACTION_PROVISION_MANAGED_DEVICE) 21375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setWifiInfo(wifiInfo) 21475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setDeviceAdminDownloadInfo(downloadInfo) 21575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .build(); 21675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 21775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz mController = new DeviceOwnerProvisioningController( 21875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz getContext(), 2193922fc38cae5d429ae23c047376f41e912390efeBenjamin Franz mParams, 22075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz TEST_USER_ID, 2216fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mCallback, 2226fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mFinalizationController); 22375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz mController.initialize(); 22475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 22575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz} 226