test(validation): Add tests for status.ReservedFor maxItems validation

This commit is contained in:
yongruilin
2025-10-10 17:58:26 +00:00
parent b0a511d309
commit 4d61ba787d

View File

@@ -632,6 +632,21 @@ func TestValidateStatusUpdateForDeclarative(t *testing.T) {
field.Duplicate(field.NewPath("status", "reservedFor").Index(4), ""),
},
},
"invalid status.ReservedFor, too many": {
old: mkValidResourceClaim(),
update: mkResourceClaimWithStatus(
tweakStatusReservedFor(generateResourceClaimReferences(257)...),
),
expectedErrs: field.ErrorList{
field.TooMany(field.NewPath("status", "reservedFor"), 257, 256).WithOrigin("maxItems"),
},
},
"valid status.ReservedFor, max items": {
old: mkValidResourceClaim(),
update: mkResourceClaimWithStatus(
tweakStatusReservedFor(generateResourceClaimReferences(256)...),
),
},
}
for k, tc := range testCases {
t.Run(k, func(t *testing.T) {
@@ -777,6 +792,18 @@ func resourceClaimReference(uid string) resource.ResourceClaimConsumerReference
}
}
func generateResourceClaimReferences(count int) []resource.ResourceClaimConsumerReference {
refs := make([]resource.ResourceClaimConsumerReference, count)
for i := 0; i < count; i++ {
refs[i] = resource.ResourceClaimConsumerReference{
Resource: "pods",
Name: fmt.Sprintf("pod-%d", i),
UID: types.UID(uuid.New().String()),
}
}
return refs
}
func tweakStatusReservedFor(refs ...resource.ResourceClaimConsumerReference) func(rc *resource.ResourceClaim) {
return func(rc *resource.ResourceClaim) {
rc.Status.ReservedFor = refs