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 VulnerabilityStateTransitions concern (vulnerabilityConfirm, vulnerabilityResolve, vulnerabilityDismiss, vulnerabilityRevertToDetected)
  • securityFindingConfirm, securityFindingResolve, securityFindingDismiss, and securityFindingRevertToDetected
  • vulnerabilitiesDismiss (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.rb

Each 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.

Edited by Priyanshu Jha

Merge request reports

Loading
Loading