Validate vulnerability state-transition comment length in GraphQL
What does this MR do and why?
Vulnerabilities::StateTransition limits comment to 50,000 characters, but several GraphQL mutations documented that limit without enforcing it. An oversized comment reached create! (or insert_all! for bulk dismiss) and surfaced as a generic internal server error, or as a database check-constraint failure.
This adds validates: { length: { maximum: 50_000 } } to the comment arguments, matching the existing GraphQL argument pattern, so the request is rejected before anything is written:
- The shared
VulnerabilityStateTransitionsconcern (vulnerabilityConfirm,vulnerabilityResolve,vulnerabilityDismiss,vulnerabilityRevertToDetected) securityFindingConfirm,securityFindingResolve,securityFindingDismiss, andsecurityFindingRevertToDetectedvulnerabilitiesDismiss(bulk dismiss), which Lorenz asked us to include
The securityFindingRevertToDetected comment description now mentions the 50,000-character limit, and doc/api/graphql/reference/mutations.md is updated to match.
Closes #637728 (closed)
How to set up and validate locally
bin/rspec \
ee/spec/requests/api/graphql/mutations/vulnerabilities/confirm_spec.rb \
ee/spec/requests/api/graphql/mutations/vulnerabilities/resolve_spec.rb \
ee/spec/requests/api/graphql/mutations/vulnerabilities/dismiss_spec.rb \
ee/spec/requests/api/graphql/mutations/vulnerabilities/revert_to_detected_spec.rb \
ee/spec/requests/api/graphql/mutations/vulnerabilities/bulk_dismiss_spec.rb \
ee/spec/requests/api/graphql/mutations/security/finding/confirm_spec.rb \
ee/spec/requests/api/graphql/mutations/security/finding/resolve_spec.rb \
ee/spec/requests/api/graphql/mutations/security/finding/dismiss_spec.rb \
ee/spec/requests/api/graphql/mutations/security/finding/revert_to_detected_spec.rbEach file covers a comment over 50,000 characters: GraphQL returns a validation error and no state transition is written.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist.