diff --git a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/RollbackTest.java b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/RollbackTest.java index 7b2a07fd80f8a..05c46ed4b7d95 100644 --- a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/RollbackTest.java +++ b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/RollbackTest.java @@ -31,7 +31,6 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.pm.PackageManager; import android.content.rollback.RollbackInfo; import android.content.rollback.RollbackManager; import android.os.UserManager; @@ -1160,109 +1159,4 @@ public class RollbackTest { InstallUtils.dropShellPermissionIdentity(); } } - - /** - * Test we can't enable rollback for non-whitelisted app without - * TEST_MANAGE_ROLLBACKS permission - */ - @Test - public void testNonRollbackWhitelistedApp() throws Exception { - try { - InstallUtils.adoptShellPermissionIdentity( - Manifest.permission.INSTALL_PACKAGES, - Manifest.permission.DELETE_PACKAGES, - Manifest.permission.MANAGE_ROLLBACKS); - - Uninstall.packages(TestApp.A); - Install.single(TestApp.A1).commit(); - assertThat(RollbackUtils.getAvailableRollback(TestApp.A)).isNull(); - - Install.single(TestApp.A2).setEnableRollback().commit(); - Thread.sleep(TimeUnit.SECONDS.toMillis(2)); - assertThat(RollbackUtils.getAvailableRollback(TestApp.A)).isNull(); - } finally { - InstallUtils.dropShellPermissionIdentity(); - } - } - - @Test - public void testRollbackDataPolicy() throws Exception { - try { - InstallUtils.adoptShellPermissionIdentity( - Manifest.permission.INSTALL_PACKAGES, - Manifest.permission.DELETE_PACKAGES, - Manifest.permission.TEST_MANAGE_ROLLBACKS); - - Uninstall.packages(TestApp.A, TestApp.B, TestApp.C); - Install.multi(TestApp.A1, TestApp.B1, TestApp.C1).commit(); - // Write user data version = 1 - InstallUtils.processUserData(TestApp.A); - InstallUtils.processUserData(TestApp.B); - InstallUtils.processUserData(TestApp.C); - - Install a2 = Install.single(TestApp.A2) - .setEnableRollback(PackageManager.RollbackDataPolicy.WIPE); - Install b2 = Install.single(TestApp.B2) - .setEnableRollback(PackageManager.RollbackDataPolicy.RESTORE); - // The rollback data policy of C2 is specified in the manifest - Install c2 = Install.single(TestApp.C2).setEnableRollback(); - Install.multi(a2, b2, c2).setEnableRollback().commit(); - // Write user data version = 2 - InstallUtils.processUserData(TestApp.A); - InstallUtils.processUserData(TestApp.B); - InstallUtils.processUserData(TestApp.C); - - RollbackInfo info = RollbackUtils.getAvailableRollback(TestApp.A); - RollbackUtils.rollback(info.getRollbackId()); - // Read user data version from userdata.txt - // A's user data version is -1 for user data is wiped. - // B's user data version is 1 as rollback committed. - // C's user data version is -1 for user data is wiped. - assertThat(InstallUtils.getUserDataVersion(TestApp.A)).isEqualTo(-1); - assertThat(InstallUtils.getUserDataVersion(TestApp.B)).isEqualTo(1); - assertThat(InstallUtils.getUserDataVersion(TestApp.C)).isEqualTo(-1); - } finally { - InstallUtils.dropShellPermissionIdentity(); - } - } - - /** - * Tests an app can be rolled back to the previous signing key. - * - *
The rollback capability in the signing lineage allows an app to be updated to an APK - * signed with a previous signing key in the lineage; however this often defeats the purpose - * of key rotation as a compromised key could then be used to roll an app back to the previous - * key. To avoid requiring the rollback capability to support app rollbacks the PackageManager - * allows an app to be rolled back to the previous signing key if the rollback install reason - * is set. - */ - @Test - public void testRollbackAfterKeyRotation() throws Exception { - try { - InstallUtils.adoptShellPermissionIdentity( - Manifest.permission.INSTALL_PACKAGES, - Manifest.permission.DELETE_PACKAGES, - Manifest.permission.TEST_MANAGE_ROLLBACKS, - Manifest.permission.MANAGE_ROLLBACKS); - - // Uninstall TestApp.A - Uninstall.packages(TestApp.A); - assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(-1); - - // Install v1 of the app with the original signing key (without rollbacks enabled). - Install.single(TestApp.AOriginal1).commit(); - assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); - - // Upgrade from v1 to v2 with the rotated signing key, with rollbacks enabled. - Install.single(TestApp.ARotated2).setEnableRollback().commit(); - assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2); - - // Roll back the app. - RollbackInfo available = waitForAvailableRollback(TestApp.A); - RollbackUtils.rollback(available.getRollbackId()); - assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1); - } finally { - InstallUtils.dropShellPermissionIdentity(); - } - } }