Sha256: ff1ad9951bc6978d20381bb9236aae353d642cb77d2d7ddfd6b82a5b36ad4887

Contents?: true

Size: 1.8 KB

Versions: 21

Compression:

Stored size: 1.8 KB

Contents

require 'pact/provider/configuration/service_provider_dsl'

module Pact
  module Provider
    module Configuration
      class MessageProviderDSL < ServiceProviderDSL
        class RackToMessageAdapter
          def initialize(message_builder)
            @message_builder = message_builder
          end

          def call(env)
            request_body_json = JSON.parse(env['rack.input'].read)
            contents = @message_builder.call(request_body_json['description'])
            [200, {"Content-Type" => "application/json"}, [{ contents: contents }.to_json]]
          end
        end

        def initialize name
          super
          @mapper_block = lambda { |args|  }
        end

        dsl do
          def app &block
            self.app_block = block
          end

          def app_version application_version
            self.application_version = application_version
          end

          def app_version_tags tags
            self.tags = tags
          end

          def publish_verification_results publish_verification_results
            self.publish_verification_results = publish_verification_results
            Pact::RSpec.with_rspec_2 do
              Pact.configuration.error_stream.puts "WARN: Publishing of verification results is currently not supported with rspec 2. If you would like this functionality, please feel free to submit a PR!"
            end
          end

          def honours_pact_with consumer_name, options = {}, &block
            create_pact_verification consumer_name, options, &block
          end

          def honours_pacts_from_pact_broker &block
            create_pact_verification_from_broker &block
          end

          def builder &block
            self.app_block = lambda { RackToMessageAdapter.new(block)  }
          end
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
pact-1.50.1 lib/pact/provider/configuration/message_provider_dsl.rb