Class JsonTextMessageValidator

All Implemented Interfaces:
MessageValidator<JsonMessageValidationContext>

public class JsonTextMessageValidator extends AbstractMessageValidator<JsonMessageValidationContext>
This message validator implementation is able to validate two JSON text objects. The order of JSON entries can differ as specified in JSON protocol. Tester defines an expected control JSON text with optional ignored entries. JSONArray as well as nested JSONObjects are supported, too. Validator offers two different modes to operate. By default strict mode is set and the validator will also check the exact amount of control object fields to match. No additional fields in received JSON data structure will be accepted. In soft mode validator allows additional fields in received JSON data structure so the control JSON object can be a partial subset.
Author:
Christoph Deppisch
  • Constructor Details

    • JsonTextMessageValidator

      public JsonTextMessageValidator()
  • Method Details

    • validateMessage

      public void validateMessage(Message receivedMessage, Message controlMessage, TestContext context, JsonMessageValidationContext validationContext)
      Overrides:
      validateMessage in class AbstractMessageValidator<JsonMessageValidationContext>
    • validateJson

      public void validateJson(String elementName, net.minidev.json.JSONObject receivedJson, net.minidev.json.JSONObject controlJson, JsonMessageValidationContext validationContext, TestContext context, com.jayway.jsonpath.ReadContext readContext)
      Validates JSON text with comparison to expected control JSON object. JSON entries can be ignored with ignore placeholder.
      Parameters:
      elementName - the current element name that is under verification in this method
      receivedJson - the received JSON text object.
      controlJson - the expected control JSON text.
      validationContext - the JSON message validation context.
      context - the current test context.
      readContext - the JSONPath read context.
    • isIgnored

      public boolean isIgnored(String controlKey, Object controlValue, Object receivedJson, Set<String> ignoreExpressions, com.jayway.jsonpath.ReadContext readContext)
      Checks if given element node is either on ignore list or contains @ignore@ tag inside control message
      Parameters:
      controlKey -
      controlValue -
      receivedJson -
      ignoreExpressions -
      readContext -
      Returns:
    • getRequiredValidationContextType

      protected Class<JsonMessageValidationContext> getRequiredValidationContextType()
      Specified by:
      getRequiredValidationContextType in class AbstractMessageValidator<JsonMessageValidationContext>
    • supportsMessageType

      public boolean supportsMessageType(String messageType, Message message)
    • setStrict

      public void setStrict(boolean strict)
      Set the validator strict mode.
      Parameters:
      strict -
    • strict

      public JsonTextMessageValidator strict(boolean strict)
      Set the validator strict mode.
      Parameters:
      strict -
      Returns:
      this object for chaining
    • jsonSchemaValidation

      public JsonTextMessageValidator jsonSchemaValidation(JsonSchemaValidation jsonSchemaValidation)
      Sets the json schema validation.
      Parameters:
      jsonSchemaValidation -
      Returns:
      this object for chaining
    • setPermissiveMode

      public void setPermissiveMode(int permissiveMode)
      Sets the permissive mode.
      Parameters:
      permissiveMode -
    • permissiveMode

      public JsonTextMessageValidator permissiveMode(int permissiveMode)
      Sets the permissive mode
      Parameters:
      permissiveMode -
      Returns:
      this object for chaining