Skip to content

Commit 791516a

Browse files
committed
policy: add unit tests for AddUknowns
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
1 parent 2995225 commit 791516a

File tree

1 file changed

+118
-0
lines changed

1 file changed

+118
-0
lines changed

policy/add_unknowns_test.go

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package policy
2+
3+
import (
4+
"testing"
5+
6+
gwpb "github.com/moby/buildkit/frontend/gateway/pb"
7+
"github.com/stretchr/testify/require"
8+
)
9+
10+
func TestAddUnknowns(t *testing.T) {
11+
tests := []struct {
12+
name string
13+
unknowns []string
14+
initial *gwpb.ResolveSourceMetaRequest
15+
expected *gwpb.ResolveSourceMetaRequest
16+
expErrMsg string
17+
}{
18+
{
19+
name: "empty-unknowns",
20+
unknowns: nil,
21+
initial: &gwpb.ResolveSourceMetaRequest{},
22+
expected: &gwpb.ResolveSourceMetaRequest{},
23+
},
24+
{
25+
name: "parent-key-ignored",
26+
unknowns: []string{"image"},
27+
initial: &gwpb.ResolveSourceMetaRequest{},
28+
expected: &gwpb.ResolveSourceMetaRequest{},
29+
},
30+
{
31+
name: "image-config-fields-enable-image-request",
32+
unknowns: []string{"image.labels"},
33+
initial: &gwpb.ResolveSourceMetaRequest{},
34+
expected: &gwpb.ResolveSourceMetaRequest{
35+
Image: &gwpb.ResolveSourceImageRequest{},
36+
},
37+
},
38+
{
39+
name: "image-attestation-fields-enable-attestation-chain",
40+
unknowns: []string{"image.signatures"},
41+
initial: &gwpb.ResolveSourceMetaRequest{},
42+
expected: &gwpb.ResolveSourceMetaRequest{
43+
Image: &gwpb.ResolveSourceImageRequest{
44+
NoConfig: true,
45+
AttestationChain: true,
46+
},
47+
},
48+
},
49+
{
50+
name: "image-attestation-on-existing-image-request",
51+
unknowns: []string{"image.hasProvenance"},
52+
initial: &gwpb.ResolveSourceMetaRequest{
53+
Image: &gwpb.ResolveSourceImageRequest{
54+
NoConfig: false,
55+
},
56+
},
57+
expected: &gwpb.ResolveSourceMetaRequest{
58+
Image: &gwpb.ResolveSourceImageRequest{
59+
NoConfig: false,
60+
AttestationChain: true,
61+
},
62+
},
63+
},
64+
{
65+
name: "git-ref-field-enables-git-request",
66+
unknowns: []string{"git.ref"},
67+
initial: &gwpb.ResolveSourceMetaRequest{},
68+
expected: &gwpb.ResolveSourceMetaRequest{
69+
Git: &gwpb.ResolveSourceGitRequest{},
70+
},
71+
},
72+
{
73+
name: "git-commit-enables-return-object",
74+
unknowns: []string{"git.commit"},
75+
initial: &gwpb.ResolveSourceMetaRequest{},
76+
expected: &gwpb.ResolveSourceMetaRequest{
77+
Git: &gwpb.ResolveSourceGitRequest{
78+
ReturnObject: true,
79+
},
80+
},
81+
},
82+
{
83+
name: "http-checksum-no-op",
84+
unknowns: []string{"http.checksum"},
85+
initial: &gwpb.ResolveSourceMetaRequest{},
86+
expected: &gwpb.ResolveSourceMetaRequest{},
87+
},
88+
{
89+
name: "non-canonical-input-prefix-errors",
90+
unknowns: []string{"input.image.labels"},
91+
initial: &gwpb.ResolveSourceMetaRequest{},
92+
expErrMsg: "unhandled unknown property input.image.labels",
93+
},
94+
{
95+
name: "unknown-field-errors",
96+
unknowns: []string{"git.notAField"},
97+
initial: &gwpb.ResolveSourceMetaRequest{},
98+
expErrMsg: "unhandled unknown property git.notAField",
99+
},
100+
}
101+
102+
for _, tc := range tests {
103+
t.Run(tc.name, func(t *testing.T) {
104+
req := tc.initial
105+
if req == nil {
106+
req = &gwpb.ResolveSourceMetaRequest{}
107+
}
108+
err := AddUnknowns(req, tc.unknowns)
109+
if tc.expErrMsg != "" {
110+
require.Error(t, err)
111+
require.Equal(t, tc.expErrMsg, err.Error())
112+
return
113+
}
114+
require.NoError(t, err)
115+
require.Equal(t, tc.expected, req)
116+
})
117+
}
118+
}

0 commit comments

Comments
 (0)