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; 25121804ae42a986fe444757e8c1718c9667952c46Jakub Gielzakimport android.support.test.filters.SmallTest; 2675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 27121804ae42a986fe444757e8c1718c9667952c46Jakub Gielzakimport com.android.managedprovisioning.R; 286fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franzimport com.android.managedprovisioning.finalization.FinalizationController; 2975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.model.PackageDownloadInfo; 3075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.model.ProvisioningParams; 3175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.model.WifiInfo; 3275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.AbstractProvisioningTask; 3375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.AddWifiNetworkTask; 3475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.DeleteNonRequiredAppsTask; 3575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.DeviceOwnerInitializeProvisioningTask; 3675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.DisallowAddUserTask; 3775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.DownloadPackageTask; 3875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.InstallPackageTask; 3975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport com.android.managedprovisioning.task.SetDevicePolicyTask; 40945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franzimport com.android.managedprovisioning.task.VerifyPackageTask; 4175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 4275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franzimport org.mockito.Mock; 4375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 4475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz/** 4575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz * Unit tests for {@link DeviceOwnerProvisioningController}. 4675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz */ 471271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franzpublic class DeviceOwnerProvisioningControllerTest extends ProvisioningControllerBaseTest { 4875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 4975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final int TEST_USER_ID = 123; 5075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final ComponentName TEST_ADMIN = new ComponentName("com.test.admin", 5175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz "com.test.admin.AdminReceiver"); 5275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 5375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final String TEST_SSID = "SomeSsid"; 5475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final WifiInfo TEST_WIFI_INFO = new WifiInfo.Builder() 5575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setSsid(TEST_SSID) 5675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .build(); 5775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 5875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final String TEST_DOWNLOAD_LOCATION = "http://www.some.uri.com"; 5975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final byte[] TEST_PACKAGE_CHECKSUM = new byte[] { '1', '2', '3', '4', '5' }; 6075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private static final PackageDownloadInfo TEST_DOWNLOAD_INFO = new PackageDownloadInfo.Builder() 6175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setLocation(TEST_DOWNLOAD_LOCATION) 6275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setSignatureChecksum(TEST_PACKAGE_CHECKSUM) 6375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .build(); 6475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 656fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz @Mock private ProvisioningControllerCallback mCallback; 666fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz @Mock private FinalizationController mFinalizationController; 673922fc38cae5d429ae23c047376f41e912390efeBenjamin Franz private ProvisioningParams mParams; 6875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 6975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz @SmallTest 7075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz public void testRunAllTasks() throws Exception { 7175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // GIVEN device owner provisioning was invoked with a wifi and download info 7275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz createController(TEST_WIFI_INFO, TEST_DOWNLOAD_INFO); 7375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 7475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN starting the test run 756fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mController.start(mHandler); 7675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 7775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the initialization task is run first 781271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeviceOwnerInitializeProvisioningTask.class); 7975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 8075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the add wifi task should be run 811271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(AddWifiNetworkTask.class); 8275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 8375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the download package task should be run 841271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DownloadPackageTask.class); 8575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 86945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz // THEN the verify package task should be run 87945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz taskSucceeded(VerifyPackageTask.class); 88945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz 8975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the install package task should be run 901271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(InstallPackageTask.class); 9175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 9275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the delete non-required apps task should be run 931271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeleteNonRequiredAppsTask.class); 9475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 9575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the set device policy task should be run 961271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(SetDevicePolicyTask.class); 9775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 981271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz // THEN the disallow add user task should be run 991271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DisallowAddUserTask.class); 10075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 10175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the provisioning complete callback should have happened 1026fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz verify(mCallback).provisioningTasksCompleted(); 10375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 10475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 10575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz @SmallTest 10675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz public void testNoWifiInfo() throws Exception { 10775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // GIVEN device owner provisioning was invoked with a wifi and download info 10875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz createController(null, TEST_DOWNLOAD_INFO); 10975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 11075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN starting the test run 1116fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mController.start(mHandler); 11275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 11375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the initialization task is run first 1141271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeviceOwnerInitializeProvisioningTask.class); 11575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 11675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the download package task should be run 1171271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DownloadPackageTask.class); 11875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 119945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz // THEN the verify package task should be run 120945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz taskSucceeded(VerifyPackageTask.class); 121945e609e967c33897df9e5f53b86e0eaa6e53e2eBenjamin Franz 12275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the install package task should be run 1231271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(InstallPackageTask.class); 12475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 12575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the delete non-required apps task should be run 1261271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeleteNonRequiredAppsTask.class); 12775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 12875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the set device policy task should be run 1291271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(SetDevicePolicyTask.class); 13075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 1311271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz // THEN the disallow add user task should be run 1321271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DisallowAddUserTask.class); 13375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 13475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the provisioning complete callback should have happened 1356fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz verify(mCallback).provisioningTasksCompleted(); 13675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 13775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 13875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz @SmallTest 13975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz public void testNoDownloadInfo() throws Exception { 14075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // GIVEN device owner provisioning was invoked with a wifi and download info 14175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz createController(TEST_WIFI_INFO, null); 14275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 14375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN starting the test run 1446fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mController.start(mHandler); 14575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 14675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the initialization task is run first 1471271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeviceOwnerInitializeProvisioningTask.class); 14875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 14975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the add wifi task should be run 1501271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(AddWifiNetworkTask.class); 15175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 15275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the delete non-required apps task should be run 1531271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeleteNonRequiredAppsTask.class); 15475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 15575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the set device policy task should be run 1561271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(SetDevicePolicyTask.class); 15775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 1581271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz // THEN the disallow add user task should be run 1591271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DisallowAddUserTask.class); 16075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 16175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the provisioning complete callback should have happened 1626fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz verify(mCallback).provisioningTasksCompleted(); 16375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 16475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 16575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz @SmallTest 16675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz public void testErrorAddWifiTask() throws Exception { 16775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // GIVEN device owner provisioning was invoked with a wifi and download info 16875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz createController(TEST_WIFI_INFO, TEST_DOWNLOAD_INFO); 16975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 17075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN starting the test run 1716fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mController.start(mHandler); 17275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 17375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the initialization task is run first 1741271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeviceOwnerInitializeProvisioningTask.class); 17575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 17675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the add wifi task should be run 1771271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz AbstractProvisioningTask task = verifyTaskRun(AddWifiNetworkTask.class); 17875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 17975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN the task causes an error 1801271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz mController.onError(task, 0); 18175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 18275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the onError callback should have been called without factory reset being required 183121804ae42a986fe444757e8c1718c9667952c46Jakub Gielzak verify(mCallback).error(eq(R.string.cant_set_up_device), anyInt(), eq(false)); 18475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 18575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 18675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz @SmallTest 18775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz public void testErrorDownloadAppTask() throws Exception { 18875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // GIVEN device owner provisioning was invoked with a wifi and download info 18975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz createController(TEST_WIFI_INFO, TEST_DOWNLOAD_INFO); 19075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 19175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN starting the test run 1926fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mController.start(mHandler); 19375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 19475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the initialization task is run first 1951271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(DeviceOwnerInitializeProvisioningTask.class); 19675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 19775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the add wifi task should be run 1981271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz taskSucceeded(AddWifiNetworkTask.class); 19975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 20075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the download package task should be run 2011271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz AbstractProvisioningTask task = verifyTaskRun(DownloadPackageTask.class); 20275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 20375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // WHEN the task causes an error 2041271a28bc8016a7b92f4fd9cb9970499cf0382b7Benjamin Franz mController.onError(task, 0); 20575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 20675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz // THEN the onError callback should have been called with factory reset being required 207121804ae42a986fe444757e8c1718c9667952c46Jakub Gielzak verify(mCallback).error(anyInt(), anyInt(), eq(true)); 20875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 20975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 21075fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz private void createController(WifiInfo wifiInfo, PackageDownloadInfo downloadInfo) { 2113922fc38cae5d429ae23c047376f41e912390efeBenjamin Franz mParams = new ProvisioningParams.Builder() 21275fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setDeviceAdminComponentName(TEST_ADMIN) 21375fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setProvisioningAction(ACTION_PROVISION_MANAGED_DEVICE) 21475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setWifiInfo(wifiInfo) 21575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .setDeviceAdminDownloadInfo(downloadInfo) 21675fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz .build(); 21775fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz 21875fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz mController = new DeviceOwnerProvisioningController( 21975fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz getContext(), 2203922fc38cae5d429ae23c047376f41e912390efeBenjamin Franz mParams, 22175fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz TEST_USER_ID, 2226fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mCallback, 2236fb7161fc761c817cd3e708617ae3b3d331b1069Benjamin Franz mFinalizationController); 22475fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz } 22575fa7df02a3832f7ab99545ccd81cec9129ddf3dBenjamin Franz} 226