Add some more properties to the bp2build APEX converter (second try)

In particular:

- AndroidManifest
- file_contexts
- key
- certificate
- min_sdk_version
- updatable
- installable
- native_shared_libs
- binaries

Test: Updated unit test

Change-Id: I1c6e8c4b6b24ce487f64e5d37bd594dbb000fe6f
diff --git a/bp2build/apex_conversion_test.go b/bp2build/apex_conversion_test.go
index f4a1016..e2e08bd 100644
--- a/bp2build/apex_conversion_test.go
+++ b/bp2build/apex_conversion_test.go
@@ -17,6 +17,9 @@
 import (
 	"android/soong/android"
 	"android/soong/apex"
+	"android/soong/cc"
+	"android/soong/java"
+
 	"testing"
 )
 
@@ -26,6 +29,13 @@
 }
 
 func registerApexModuleTypes(ctx android.RegistrationContext) {
+	// CC module types needed as they can be APEX dependencies
+	cc.RegisterCCBuildComponents(ctx)
+
+	ctx.RegisterModuleType("cc_library", cc.LibraryFactory)
+	ctx.RegisterModuleType("apex_key", apex.ApexKeyFactory)
+	ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory)
+	ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
 }
 
 func TestApexBundleSimple(t *testing.T) {
@@ -36,14 +46,94 @@
 		moduleTypeUnderTestBp2BuildMutator: apex.ApexBundleBp2Build,
 		filesystem:                         map[string]string{},
 		blueprint: `
+apex_key {
+        name: "com.android.apogee.key",
+        public_key: "com.android.apogee.avbpubkey",
+        private_key: "com.android.apogee.pem",
+	bazel_module: { bp2build_available: false },
+}
+
+android_app_certificate {
+        name: "com.android.apogee.certificate",
+        certificate: "com.android.apogee",
+        bazel_module: { bp2build_available: false },
+}
+
+cc_library {
+        name: "native_shared_lib_1",
+	bazel_module: { bp2build_available: false },
+}
+
+cc_library {
+        name: "native_shared_lib_2",
+	bazel_module: { bp2build_available: false },
+}
+
+filegroup {
+	name: "com.android.apogee-file_contexts",
+        srcs: [
+                "com.android.apogee-file_contexts",
+        ],
+        bazel_module: { bp2build_available: false },
+}
+
 apex {
-	name: "apogee",
-	manifest: "manifest.json",
+	name: "com.android.apogee",
+	manifest: "apogee_manifest.json",
+	androidManifest: "ApogeeAndroidManifest.xml",
+        file_contexts: "com.android.apogee-file_contexts",
+	min_sdk_version: "29",
+	key: "com.android.apogee.key",
+	certificate: "com.android.apogee.certificate",
+	updatable: false,
+	installable: false,
+	native_shared_libs: [
+	    "native_shared_lib_1",
+	    "native_shared_lib_2",
+	],
+	binaries: [
+            "binary_1",
+	    "binary_2",
+	],
 }
 `,
 		expectedBazelTargets: []string{`apex(
-    name = "apogee",
-    manifest = "manifest.json",
+    name = "com.android.apogee",
+    android_manifest = "ApogeeAndroidManifest.xml",
+    binaries = [
+        "binary_1",
+        "binary_2",
+    ],
+    certificate = ":com.android.apogee.certificate",
+    file_contexts = ":com.android.apogee-file_contexts",
+    installable = False,
+    key = ":com.android.apogee.key",
+    manifest = "apogee_manifest.json",
+    min_sdk_version = "29",
+    native_shared_libs = [
+        ":native_shared_lib_1",
+        ":native_shared_lib_2",
+    ],
+    updatable = False,
+)`}})
+}
+
+func TestApexBundleDefaultPropertyValues(t *testing.T) {
+	runApexTestCase(t, bp2buildTestCase{
+		description:                        "apex - default property values",
+		moduleTypeUnderTest:                "apex",
+		moduleTypeUnderTestFactory:         apex.BundleFactory,
+		moduleTypeUnderTestBp2BuildMutator: apex.ApexBundleBp2Build,
+		filesystem:                         map[string]string{},
+		blueprint: `
+apex {
+	name: "com.android.apogee",
+	manifest: "apogee_manifest.json",
+}
+`,
+		expectedBazelTargets: []string{`apex(
+    name = "com.android.apogee",
+    manifest = "apogee_manifest.json",
 )`}})
 }