blob: 1230a480bd32b830725b501abb6f615a8e76e6f8 [file] [log] [blame]
Rupert Shuttlewortheb8c85a2021-07-27 07:10:32 -04001// Copyright 2021 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package bp2build
16
17import (
18 "android/soong/android"
19 "android/soong/apex"
20
21 "testing"
22)
23
Sam Delmerico3177a6e2022-06-21 19:28:33 +000024func runApexKeyTestCase(t *testing.T, tc Bp2buildTestCase) {
Rupert Shuttlewortheb8c85a2021-07-27 07:10:32 -040025 t.Helper()
Sam Delmerico3177a6e2022-06-21 19:28:33 +000026 RunBp2BuildTestCase(t, registerApexKeyModuleTypes, tc)
Rupert Shuttlewortheb8c85a2021-07-27 07:10:32 -040027}
28
29func registerApexKeyModuleTypes(ctx android.RegistrationContext) {
Jingwen Chen1d873332022-10-05 06:15:15 +000030 ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
Rupert Shuttlewortheb8c85a2021-07-27 07:10:32 -040031}
32
Jingwen Chen6817bbb2022-10-14 09:56:07 +000033func TestApexKeySimple_KeysAreSrcFilesInSameDir(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +000034 runApexKeyTestCase(t, Bp2buildTestCase{
Jingwen Chen6817bbb2022-10-14 09:56:07 +000035 Description: "apex key - keys are src files, use key attributes",
Sam Delmerico3177a6e2022-06-21 19:28:33 +000036 ModuleTypeUnderTest: "apex_key",
37 ModuleTypeUnderTestFactory: apex.ApexKeyFactory,
Jingwen Chen6817bbb2022-10-14 09:56:07 +000038 Filesystem: map[string]string{
39 "com.android.apogee.avbpubkey": "",
40 "com.android.apogee.pem": "",
41 },
42 Blueprint: `
43apex_key {
44 name: "com.android.apogee.key",
45 public_key: "com.android.apogee.avbpubkey",
46 private_key: "com.android.apogee.pem",
47}
48`,
49 ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{
Jooyung Han8d4a1f02023-08-23 13:54:08 +090050 "private_key": `"com.android.apogee.pem"`,
51 "public_key": `"com.android.apogee.avbpubkey"`,
52 "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
Jingwen Chen6817bbb2022-10-14 09:56:07 +000053 }),
54 }})
55}
56
57func TestApexKeySimple_KeysAreSrcFilesNotInDir(t *testing.T) {
58 runApexKeyTestCase(t, Bp2buildTestCase{
59 Description: "apex key - keys are not src or module, use key_name attributes",
60 ModuleTypeUnderTest: "apex_key",
61 ModuleTypeUnderTestFactory: apex.ApexKeyFactory,
62 Filesystem: map[string]string{
63 // deliberately left empty
64 },
Sam Delmerico3177a6e2022-06-21 19:28:33 +000065 Blueprint: `
Rupert Shuttlewortheb8c85a2021-07-27 07:10:32 -040066apex_key {
67 name: "com.android.apogee.key",
68 public_key: "com.android.apogee.avbpubkey",
69 private_key: "com.android.apogee.pem",
70}
71`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +000072 ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{
Jooyung Han8d4a1f02023-08-23 13:54:08 +090073 "private_key_name": `"com.android.apogee.pem"`,
74 "public_key_name": `"com.android.apogee.avbpubkey"`,
75 "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
Jingwen Chen1d873332022-10-05 06:15:15 +000076 }),
77 }})
78}
79
80func TestApexKey_KeysAreModules(t *testing.T) {
81 runApexKeyTestCase(t, Bp2buildTestCase{
82 Description: "apex key - keys are modules, use key attributes",
83 ModuleTypeUnderTest: "apex_key",
84 ModuleTypeUnderTestFactory: apex.ApexKeyFactory,
85 Filesystem: map[string]string{},
86 Blueprint: `
87apex_key {
88 name: "com.android.apogee.key",
89 public_key: ":com.android.apogee.avbpubkey",
90 private_key: ":com.android.apogee.pem",
91}
92` + simpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.avbpubkey") +
93 simpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.pem"),
94 ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{
Jooyung Han8d4a1f02023-08-23 13:54:08 +090095 "private_key": `":com.android.apogee.pem"`,
96 "public_key": `":com.android.apogee.avbpubkey"`,
97 "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
Liz Kammer78cfdaa2021-11-08 12:56:31 -050098 }),
99 }})
Rupert Shuttlewortheb8c85a2021-07-27 07:10:32 -0400100}