[
https://issues.apache.org/jira/browse/CAMEL-25378?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christoph Deppisch resolved CAMEL-25378.
----------------------------------------
Resolution: Fixed
> Add camel-test-citrus component for Citrus message validation in Camel route
> tests
> ----------------------------------------------------------------------------------
>
> Key: CAMEL-25378
> URL: https://issues.apache.org/jira/browse/CAMEL-25378
> Project: Camel
> Issue Type: New Feature
> Components: camel-test
> Reporter: Christoph Deppisch
> Assignee: Christoph Deppisch
> Priority: Major
> Fix For: 4.24.0
>
>
> Add a new camel-test-citrus test component that integrates with the Citrus
> integration test framework ([https://citrusframework.org/]) to perform
> message validation and response simulation on exchanges in Camel route tests.
> *Architecture:* {{CitrusEndpoint}} extends {{{}MockEndpoint{}}}, inheriting
> all mock capabilities ({{{}assertIsSatisfied(){}}},
> {{{}expectedMessageCount(){}}}, {{{}resetMocks(){}}}, context-wide
> assertions) and adding Citrus validation on top via the processor dispatch
> infrastructure ({{{}whenExchangeReceived{}}} /
> {{{}whenAnyExchangeReceived{}}}).
> *Endpoint URI:* {{citrus:operation/name}} where {{operation}} is {{validate}}
> or {{{}receive{}}}, and {{name}} is an optional identifier.
> *Operations:*
> - {{validate}} — validates exchanges without modifying them (pass-through
> validation). Validation failures are collected and reported via
> {{{}assertIsSatisfied(){}}}.
> - {{receive}} — validates exchanges and returns a simulated response
> (request/response simulation). Uses a Gherkin-style fluent API:
> {{{}when().receive().body(...).then().respond().body(...){}}}.
> *Key capabilities:*
> - Producer-only endpoint — routes send exchanges to the citrus endpoint for
> validation
> - Supports {{messageType}} option ({{{}json{}}}, {{{}xml{}}}, {{{}yaml{}}},
> {{{}plaintext{}}}) to select the appropriate Citrus validation module
> - Users configure expected message templates (body), header validation, and
> path validation expressions (JsonPath, XPath) via a fluent API on the endpoint
> - Per-exchange sequential validation with auto-incrementing or explicit
> 1-based indexing
> - Default validation via {{validateAll()}} / {{receiveAll()}} with indexed
> specs taking priority
> - Propagates exchange properties and exchange variables as Citrus test
> variables
> - Variables extracted by Citrus (e.g. via {{{}@variable('name')@{}}}) are
> written back as exchange variables
> - Case-insensitive header validation matching Camel header behavior
> - StreamCache-safe body reading for pass-through validation
> *Validation module dependencies:*
> The component does not bundle Citrus validation modules out of the box. Users
> must explicitly add the required validation module dependency for their
> message type (e.g., {{{}citrus-validation-json{}}},
> {{{}citrus-validation-xml{}}}) to their test classpath.
> *Location:* under {{components/camel-test/}} alongside existing test modules.
> *Dependencies:* Uses the Citrus version already managed in Camel (5.0.2).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)