Skip to content

Commit cc557de

Browse files
committed
Add tests for the verify condition generation
Signed-off-by: Stefan Prodan <[email protected]>
1 parent b5ffc9f commit cc557de

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

controllers/ocirepository_controller_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,6 +1029,7 @@ func TestOCIRepository_reconcileSource_verifyOCISourceSignature(t *testing.T) {
10291029
wantErr bool
10301030
wantErrMsg string
10311031
shouldSign bool
1032+
beforeFunc func(obj *sourcev1.OCIRepository)
10321033
assertConditions []metav1.Condition
10331034
}{
10341035
{
@@ -1060,6 +1061,49 @@ func TestOCIRepository_reconcileSource_verifyOCISourceSignature(t *testing.T) {
10601061
*conditions.FalseCondition(sourcev1.SourceVerifiedCondition, sourcev1.VerificationError, "failed to verify the signature using provider '<provider>': no matching signatures were found for '<url>'"),
10611062
},
10621063
},
1064+
{
1065+
name: "verify failed before, removed from spec, remove condition",
1066+
reference: &sourcev1.OCIRepositoryRef{Tag: "6.1.4"},
1067+
digest: img4.digest.Hex,
1068+
beforeFunc: func(obj *sourcev1.OCIRepository) {
1069+
conditions.MarkFalse(obj, sourcev1.SourceVerifiedCondition, "VerifyFailed", "fail msg")
1070+
obj.Spec.Verify = nil
1071+
obj.Status.Artifact = &sourcev1.Artifact{Revision: img4.digest.Hex}
1072+
},
1073+
want: sreconcile.ResultSuccess,
1074+
},
1075+
{
1076+
name: "same artifact, verified before, change in obj gen verify again",
1077+
reference: &sourcev1.OCIRepositoryRef{Tag: "6.1.4"},
1078+
digest: img4.digest.Hex,
1079+
shouldSign: true,
1080+
beforeFunc: func(obj *sourcev1.OCIRepository) {
1081+
obj.Status.Artifact = &sourcev1.Artifact{Revision: img4.digest.Hex}
1082+
// Set Verified with old observed generation and different reason/message.
1083+
conditions.MarkTrue(obj, sourcev1.SourceVerifiedCondition, "Verified", "verified")
1084+
// Set new object generation.
1085+
obj.SetGeneration(3)
1086+
},
1087+
want: sreconcile.ResultSuccess,
1088+
assertConditions: []metav1.Condition{
1089+
*conditions.TrueCondition(sourcev1.SourceVerifiedCondition, meta.SucceededReason, "verified signature of digest <digest>"),
1090+
},
1091+
},
1092+
{
1093+
name: "no verify for already verified, verified condition remains the same",
1094+
reference: &sourcev1.OCIRepositoryRef{Tag: "6.1.4"},
1095+
digest: img4.digest.Hex,
1096+
shouldSign: true,
1097+
beforeFunc: func(obj *sourcev1.OCIRepository) {
1098+
// Artifact present and custom verified condition reason/message.
1099+
obj.Status.Artifact = &sourcev1.Artifact{Revision: img4.digest.Hex}
1100+
conditions.MarkTrue(obj, sourcev1.SourceVerifiedCondition, "Verified", "verified")
1101+
},
1102+
want: sreconcile.ResultSuccess,
1103+
assertConditions: []metav1.Condition{
1104+
*conditions.TrueCondition(sourcev1.SourceVerifiedCondition, "Verified", "verified"),
1105+
},
1106+
},
10631107
}
10641108

10651109
builder := fakeclient.NewClientBuilder().WithScheme(testEnv.GetScheme())
@@ -1147,6 +1191,10 @@ func TestOCIRepository_reconcileSource_verifyOCISourceSignature(t *testing.T) {
11471191
assertConditions[k].Message = strings.ReplaceAll(assertConditions[k].Message, "<provider>", "cosign")
11481192
}
11491193

1194+
if tt.beforeFunc != nil {
1195+
tt.beforeFunc(obj)
1196+
}
1197+
11501198
artifact := &sourcev1.Artifact{}
11511199
got, err := r.reconcileSource(ctx, obj, artifact, tmpDir)
11521200
if tt.wantErr {

0 commit comments

Comments
 (0)