From c81fc12900bf979be785de08222cc190fd11dc78 Mon Sep 17 00:00:00 2001 From: yongruilin Date: Thu, 9 Oct 2025 07:12:15 +0000 Subject: [PATCH] test: add validation test for duplicate DeviceConstraint.Requests --- .../resourceclaim/declarative_validation_test.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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