Sha256: f43a0ccf41f54d2762c320dc0425968d9980ce40ef6fa6dc00823d17266f8472

Contents?: true

Size: 1.54 KB

Versions: 3

Compression:

Stored size: 1.54 KB

Contents

require 'rake/tasklib'

module Pact
  class ProxyVerificationTask < ::Rake::TaskLib

    attr_reader :pact_spec_configs

    def initialize(name)
      @pact_spec_configs = []
      @provider_base_url = nil
      @name = name
      yield self
      rake_task
    end


    def pact_url(uri, options = {})
      @pact_spec_configs << {uri: uri, pact_helper: options[:pact_helper]}
    end

    # For compatiblity with the normal VerificationTask, allow task.uri
    alias_method :uri, :pact_url

    def provider_base_url url
      @provider_base_url = url
    end

    private

    attr_reader :name

    def project_pact_helper_path
      begin
        Pact::Provider::PactHelperLocater.pact_helper_path
      rescue
        ''
      end
    end

    def rake_task
      namespace :pact do
        desc "Verify running provider against the consumer pacts for #{name}"
        task "verify:#{name}" do |t, args|

          require 'pact/provider/proxy/task_helper'

          proxy_pact_helper = File.expand_path('../../proxy_pact_helper.rb', __FILE__)

          exit_statuses = pact_spec_configs.collect do | config |
            ENV['PACT_PROVIDER_BASE_URL'] = @provider_base_url
            ENV['PACT_PROJECT_PACT_HELPER'] = config[:pact_helper] || project_pact_helper_path
            Pact::Provider::Proxy::TaskHelper.execute_pact_verify config[:uri], proxy_pact_helper
          end

          Pact::Provider::Proxy::TaskHelper.handle_verification_failure do
            exit_statuses.count{ | status | status != 0 }
          end

        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pact-provider-proxy-1.2.0 lib/pact/provider/proxy/tasks/proxy_verification_task.rb
pact-provider-proxy-1.1.0 lib/pact/provider/proxy/tasks/proxy_verification_task.rb
pact-provider-proxy-1.0.0 lib/pact/provider/proxy/tasks/proxy_verification_task.rb