CA API Gateway Policy |
2016-01-06T14:25:30.134-0500 INFO 10769 com.l7tech.server.policy.assertion.ServerAuditDetailAssertion: -4: Invoking service
2016-01-06T14:25:30.134-0500 INFO 10769 com.l7tech.server.policy.assertion.ServerHttpRoutingAssertion: 4047: Request is a context variable; using POST
2016-01-06T14:25:30.134-0500 INFO 10769 com.l7tech.server.policy.assertion.ServerAuditDetailAssertion: -4: Invoked service
The service that was invoked was configured to return a fault, and one would expect that if a "Route via" assertion returns a fault, this would result in a false condition. Therefore, control would fall out of the first "All assertions must evaluate to true" assertion and move on to the next "All assertions must evaluate to true" block.
Upon investigation, I discovered a somewhat confusing checkbox that solved the issue.
Pass through SOAP faults with error status 500 checkbox marked |
At first glance, one might interpret this as whatever fault is thrown by the invoked service, pass that fault right on through to the consumer. In fact, what this means is that the assertion will completely ignore that fault by evaluating the assertion as true and continue processing the next assertion.
After unmarking this checkbox, the assertion then evaluated to false, as expected.
Pass through SOAP faults with error status 500 checkbox unmarked |
2016-01-06T14:26:44.623-0500 INFO 10684 com.l7tech.server.policy.assertion.ServerAuditDetailAssertion: -4: Invoking service
2016-01-06T14:26:44.623-0500 INFO 10684 com.l7tech.server.policy.assertion.ServerHttpRoutingAssertion: 4038: Downstream service returned status (500). This is considered a failure case.