class WebTrap::Shared::Validators::EquivalentXmlContentValidator

@api private Validator for asserting a request was sent with an equivalent XML payload.

@see github.com/mbklein/equivalent-xml

equivalent-xml gem

Attributes

xml[R]

Public Class Methods

new(xml) click to toggle source

Instantiate a new validator with the provided payload.

@param xml [String]

The XML payload requests will be compared against.
# File lib/webtrap/shared/validators/equivalent_xml_content_validator.rb, line 15
def initialize(xml)
  @failed = true
  @xml = xml
end

Public Instance Methods

failed?() click to toggle source

Whether no request with an equivalent payload was validated.

@return [Boolean]

# File lib/webtrap/shared/validators/equivalent_xml_content_validator.rb, line 23
def failed?
  @failed
end
failure_message() click to toggle source

The message to be used if no request is validated with an equivalent payload.

@return [String]

# File lib/webtrap/shared/validators/equivalent_xml_content_validator.rb, line 31
def failure_message
  "expected block to send an HTTP request with XML body, but payload was not equivalent"
end
validate(request) click to toggle source

Validate if the request has an equivalent XML payload.

@param request [Hash]

Request environment passed by {WebTrap::Shared::RackApp#call}.

@return [EquivalentXmlContentValidator]

This validator instance.
# File lib/webtrap/shared/validators/equivalent_xml_content_validator.rb, line 41
def validate(request)
  @failed = EquivalentXml.equivalent?(xml, request["rack.input"].string)
  self
end