Add tests with unsigned packages.
Fix: 148447155
Test: atest
Change-Id: I007de619dba2dfc78076cf0df8186951309ce150
diff --git a/hostsidetests/stagedinstall/Android.bp b/hostsidetests/stagedinstall/Android.bp
index 96ab887..75ea48e 100644
--- a/hostsidetests/stagedinstall/Android.bp
+++ b/hostsidetests/stagedinstall/Android.bp
@@ -62,6 +62,8 @@
":StagedInstallTestAppSamePackageNameAsApex",
":StagedInstallTestApexV2_SdkTargetP",
":StagedInstallTestCorruptedApex_b146895998",
+ ":StagedInstallTestApexV2_NoApkSignature",
+ ":StagedInstallTestApexV2_UnsignedPayload",
],
static_libs: [
"androidx.test.runner",
@@ -448,3 +450,43 @@
filename: "corrupted_b146895998.apex",
installable: false,
}
+
+prebuilt_apex {
+ name: "StagedInstallTestApexV2_NoApkSignature",
+ arch: {
+ arm: {
+ src: "testdata/apex/arm/com.android.apex.cts.shim.v2_unsigned_apk_container.apex",
+ },
+ arm64: {
+ src: "testdata/apex/arm/com.android.apex.cts.shim.v2_unsigned_apk_container.apex",
+ },
+ x86: {
+ src: "testdata/apex/x86/com.android.apex.cts.shim.v2_unsigned_apk_container.apex",
+ },
+ x86_64: {
+ src: "testdata/apex/x86/com.android.apex.cts.shim.v2_unsigned_apk_container.apex",
+ },
+ },
+ filename: "com.android.apex.cts.shim.v2_unsigned_apk_container.apex",
+ installable: false,
+}
+
+prebuilt_apex {
+ name: "StagedInstallTestApexV2_UnsignedPayload",
+ arch: {
+ arm: {
+ src: "testdata/apex/arm/com.android.apex.cts.shim.v2_unsigned_payload.apex",
+ },
+ arm64: {
+ src: "testdata/apex/arm/com.android.apex.cts.shim.v2_unsigned_payload.apex",
+ },
+ x86: {
+ src: "testdata/apex/x86/com.android.apex.cts.shim.v2_unsigned_payload.apex",
+ },
+ x86_64: {
+ src: "testdata/apex/x86/com.android.apex.cts.shim.v2_unsigned_payload.apex",
+ },
+ },
+ filename: "com.android.apex.cts.shim.v2_unsigned_payload.apex",
+ installable: false,
+}
diff --git a/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java b/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java
index c5c3a09..4f5b06c 100644
--- a/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java
+++ b/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java
@@ -147,6 +147,13 @@
/*isApex*/true, "com.android.apex.cts.shim.v2_sdk_target_p.apex");
private static final TestApp CorruptedApex_b146895998 = new TestApp(
"StagedInstallTestCorruptedApex_b146895998", "", 1, true, "corrupted_b146895998.apex");
+ private static final TestApp Apex2NoApkSignature = new TestApp(
+ "StagedInstallTestApexV2_NoApkSignature", SHIM_PACKAGE_NAME, 1,
+ /*isApex*/true, "com.android.apex.cts.shim.v2_unsigned_apk_container.apex");
+ private static final TestApp Apex2UnsignedPayload = new TestApp(
+ "StagedInstallTestApexV2_UnsignedPayload", SHIM_PACKAGE_NAME, 1,
+ /*isApex*/true, "com.android.apex.cts.shim.v2_unsigned_payload.apex");
+
@Before
public void adoptShellPermissions() {
InstrumentationRegistry
@@ -1070,6 +1077,27 @@
assertThat(sessionInfo).isStagedSessionFailed();
}
+ /**
+ * Should fail to pass apk signature check
+ */
+ @Test
+ public void testApexWithUnsignedApkFailsVerification() throws Exception {
+ assertThat(stageSingleApk(Apex2NoApkSignature).getErrorMessage())
+ .contains("INSTALL_PARSE_FAILED_NO_CERTIFICATES");
+ }
+
+ /**
+ * Should fail to verify apex with unsigned payload
+ */
+ @Test
+ public void testApexWithUnsignedPayloadFailsVerification() throws Exception {
+ int sessionId = stageSingleApk(Apex2UnsignedPayload).assertSuccessful().getSessionId();
+ PackageInstaller.SessionInfo sessionInfo = waitForBroadcast(sessionId);
+ assertThat(sessionInfo).isStagedSessionFailed();
+ assertThat(sessionInfo.getStagedSessionErrorMessage())
+ .contains("AVB footer verification failed");
+ }
+
private static long getInstalledVersion(String packageName) {
Context context = InstrumentationRegistry.getInstrumentation().getContext();
PackageManager pm = context.getPackageManager();
diff --git a/hostsidetests/stagedinstall/src/com/android/tests/stagedinstall/host/StagedInstallTest.java b/hostsidetests/stagedinstall/src/com/android/tests/stagedinstall/host/StagedInstallTest.java
index 5054be4..91e83b2 100644
--- a/hostsidetests/stagedinstall/src/com/android/tests/stagedinstall/host/StagedInstallTest.java
+++ b/hostsidetests/stagedinstall/src/com/android/tests/stagedinstall/host/StagedInstallTest.java
@@ -537,6 +537,22 @@
runPhase("testCorruptedApexFailsVerification_b146895998");
}
+ /**
+ * Should fail to pass apk signature check
+ */
+ @Test
+ public void testApexWithUnsignedApkFailsVerification() throws Exception {
+ runPhase("testApexWithUnsignedApkFailsVerification");
+ }
+
+ /**
+ * Should fail to verify apex with unsigned payload
+ */
+ @Test
+ public void testApexWithUnsignedPayloadFailsVerification() throws Exception {
+ runPhase("testApexWithUnsignedPayloadFailsVerification");
+ }
+
private boolean isUpdatingApexSupported() throws Exception {
final String updatable = getDevice().getProperty("ro.apex.updatable");
return updatable != null && updatable.equals("true");