blob: 05e2f25bd814d27315f49504db11aad307285ebd [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"`,
Jingwen Chen9c2e3ee2023-10-11 10:51:28 +000052 "target_compatible_with": `["//build/bazel_common_rules/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"`,
Jingwen Chen9c2e3ee2023-10-11 10:51:28 +000075 "target_compatible_with": `["//build/bazel_common_rules/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{},
Chris Parsonscd209032023-09-19 01:12:48 +000086 StubbedBuildDefinitions: []string{"com.android.apogee.avbpubkey", "com.android.apogee.pem"},
Jingwen Chen1d873332022-10-05 06:15:15 +000087 Blueprint: `
88apex_key {
89 name: "com.android.apogee.key",
90 public_key: ":com.android.apogee.avbpubkey",
91 private_key: ":com.android.apogee.pem",
92}
Chris Parsonscd209032023-09-19 01:12:48 +000093` + simpleModule("filegroup", "com.android.apogee.avbpubkey") +
94 simpleModule("filegroup", "com.android.apogee.pem"),
Jingwen Chen1d873332022-10-05 06:15:15 +000095 ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{
Jooyung Han8d4a1f02023-08-23 13:54:08 +090096 "private_key": `":com.android.apogee.pem"`,
97 "public_key": `":com.android.apogee.avbpubkey"`,
Jingwen Chen9c2e3ee2023-10-11 10:51:28 +000098 "target_compatible_with": `["//build/bazel_common_rules/platforms/os:android"]`,
Liz Kammer78cfdaa2021-11-08 12:56:31 -050099 }),
100 }})
Rupert Shuttlewortheb8c85a2021-07-27 07:10:32 -0400101}