@Test public void deletePackage_missingRequiredPermission() throws Exception { PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = "test.package"; shadowPackageManager.installPackage(packageInfo); IPackageDeleteObserver mockObserver = mock(IPackageDeleteObserver.class); packageManager.deletePackage(packageInfo.packageName, mockObserver, 0); shadowPackageManager.doPendingUninstallCallbacks(); assertThat(shadowPackageManager.getDeletedPackages()).hasSize(0); verify(mockObserver) .packageDeleted(packageInfo.packageName, PackageManager.DELETE_FAILED_INTERNAL_ERROR); }
@Test public void deletePackage() throws Exception { // Apps must have the android.permission.DELETE_PACKAGES set to delete packages. PackageManager packageManager = ApplicationProvider.getApplicationContext().getPackageManager(); shadowPackageManager.getInternalMutablePackageInfo( ApplicationProvider.getApplicationContext().getPackageName()) .requestedPermissions = new String[] {android.Manifest.permission.DELETE_PACKAGES}; PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = "test.package"; shadowPackageManager.installPackage(packageInfo); IPackageDeleteObserver mockObserver = mock(IPackageDeleteObserver.class); packageManager.deletePackage(packageInfo.packageName, mockObserver, 0); shadowPackageManager.doPendingUninstallCallbacks(); assertThat(shadowPackageManager.getDeletedPackages()).contains(packageInfo.packageName); verify(mockObserver).packageDeleted(packageInfo.packageName, PackageManager.DELETE_SUCCEEDED); }