Sha256: a68ad1023a94aebed096d6bf3647ba75d2598de1fc5dbe6f576729fca45c8d03

Contents?: true

Size: 1.21 KB

Versions: 5

Compression:

Stored size: 1.21 KB

Contents

# encoding: UTF-8
require 'hashie'
require_relative './parameter'
require_relative './enum'

#
# A model for a a body in a request object.
# @author: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
#
module MockServer::Model
  # An enum for body type
  class BodyType < SymbolizedEnum
    def allowed_values
      [:STRING, :REGEX, :XPATH, :PARAMETERS]
    end
  end

  # A model for a a body in a request object.
  class Body < Hashie::Dash
    include Hashie::Extensions::MethodAccess
    include Hashie::Extensions::IgnoreUndeclared
    include Hashie::Extensions::Coercion

    property :type, required: true
    property :value
    property :parameters

    coerce_key :type, BodyType
    coerce_key :value, String
    coerce_key :parameters, Parameters
  end

  # DSL methods related to body
  module DSL
    # For response object where body can only be a string
    def body(value)
      value
    end

    def exact(value)
      Body.new(type: :STRING, value: value)
    end

    def regex(value)
      Body.new(type: :REGEX, value: value)
    end

    def xpath(value)
      Body.new(type: :XPATH, value: value)
    end

    def parameterized(*parameters)
      Body.new(type: :PARAMETERS, parameters: parameters)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mockserver-client-1.0.4 lib/mockserver/model/body.rb
mockserver-client-1.0.3 lib/mockserver/model/body.rb
mockserver-client-1.0.2.pre lib/mockserver/model/body.rb
mockserver-client-1.0.1.pre lib/mockserver/model/body.rb
mockserver-client-1.0.1 lib/mockserver/model/body.rb