Skip to content

[CONTRACT] Implement comprehensive shipment input validation #226

@dinahmaccodes

Description

@dinahmaccodes

Tier: 🔴 Hard

Description:

Add comprehensive validation for all shipment creation inputs including:

  • Milestone percentage validation (sum must equal 100%)
  • Deadline validation (must be in future)
  • Payment milestone structure validation
  • Symbol length and format validation for checkpoint names
  • Prevent duplicate payment milestone names
  • Validate sender != receiver and carrier addresses

Tasks:

  • Create validation function for ShipmentInput struct
  • Add error variants for each validation failure
  • Test all validation paths with reject/accept cases
  • Document validation rules in function comments

File locations:

  • New validation module → contracts/shipment/src/validate.rs
  • Integration in lib.rscreate_shipment() and create_shipments_batch()

Acceptance Criteria:

  • All invalid inputs rejected with appropriate errors
  • Tests cover boundary cases (100% milestones, future deadlines)
  • Error messages are descriptive and actionable
  • Zero panic paths in validation code

PR Checklist:

  • Validation module created with comprehensive checks
  • All validation tests passing
  • cargo test shows 100% pass rate
  • cargo clippy shows no warnings
  • WASM builds successfully

Reference: Read CONTRIBUTING.md before starting.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions