test: add validation test for duplicate FirstAvailable names

This commit is contained in:
yongruilin
2025-10-09 05:57:22 +00:00
parent 3ad7b189b7
commit 2341b3bcc8

View File

@@ -106,6 +106,12 @@ func testDeclarativeValidate(t *testing.T, apiVersion string) {
field.TooMany(field.NewPath("spec", "devices", "requests").Index(0).Child("firstAvailable"), 9, 8).WithOrigin("maxItems"),
},
},
"invalid firstAvailable, duplicate name": {
input: mkValidResourceClaim(tweakDuplicateFirstAvailableName("sub-0")),
expectedErrs: field.ErrorList{
field.Duplicate(field.NewPath("spec", "devices", "requests").Index(0).Child("firstAvailable").Index(1), "sub-0"),
},
},
"invalid selectors, too many": {
input: mkValidResourceClaim(tweakExactlySelectors(33)),
expectedErrs: field.ErrorList{
@@ -220,6 +226,24 @@ func tweakDuplicateRequestName(name string) func(*resource.ResourceClaim) {
}
}
func tweakDuplicateFirstAvailableName(name string) func(*resource.ResourceClaim) {
return func(rc *resource.ResourceClaim) {
rc.Spec.Devices.Requests[0].Exactly = nil
rc.Spec.Devices.Requests[0].FirstAvailable = []resource.DeviceSubRequest{
{
Name: name,
DeviceClassName: "class",
AllocationMode: resource.DeviceAllocationModeAll,
},
{
Name: name,
DeviceClassName: "class",
AllocationMode: resource.DeviceAllocationModeAll,
},
}
}
}
func tweakExactlySelectors(items int) func(*resource.ResourceClaim) {
return func(rc *resource.ResourceClaim) {
for i := 0; i < items; i++ {