diff --git a/pkg/registry/resource/resourceclaim/declarative_validation_test.go b/pkg/registry/resource/resourceclaim/declarative_validation_test.go index 941831e1111..eb736af2496 100644 --- a/pkg/registry/resource/resourceclaim/declarative_validation_test.go +++ b/pkg/registry/resource/resourceclaim/declarative_validation_test.go @@ -138,6 +138,12 @@ func testDeclarativeValidate(t *testing.T, apiVersion string) { field.TooMany(field.NewPath("spec", "devices", "config").Index(0).Child("requests"), 33, 32).WithOrigin("maxItems"), }, }, + "invalid constraint requests, duplicate name": { + input: mkValidResourceClaim(tweakDuplicateConstraintRequest("req-0")), + expectedErrs: field.ErrorList{ + field.Duplicate(field.NewPath("spec", "devices", "constraints").Index(0).Child("requests").Index(1), "req-0"), + }, + }, "valid firstAvailable, max allowed": { input: mkValidResourceClaim(tweakFirstAvailable(8)), }, @@ -306,6 +312,15 @@ func tweakConfigRequests(count int) func(*resource.ResourceClaim) { } } +func tweakDuplicateConstraintRequest(name string) func(*resource.ResourceClaim) { + return func(rc *resource.ResourceClaim) { + if len(rc.Spec.Devices.Constraints) == 0 { + rc.Spec.Devices.Constraints = append(rc.Spec.Devices.Constraints, mkDeviceConstraint()) + } + rc.Spec.Devices.Constraints[0].Requests = append(rc.Spec.Devices.Constraints[0].Requests, name) + } +} + func tweakFirstAvailable(items int) func(*resource.ResourceClaim) { return func(rc *resource.ResourceClaim) { rc.Spec.Devices.Requests[0].Exactly = nil