pact 1.41.2 → 1.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 682d57626c30c4ce3f4e83038a3e5ff54d0f4878
4
- data.tar.gz: 7eb5834ea442abebf6e8739a5a2746514560fdc8
3
+ metadata.gz: b644026c464080ef14a4a202bbfe8106f5ece05a
4
+ data.tar.gz: b0fa73324f51d53bf0d51e1ec5adc1974fc20816
5
5
  SHA512:
6
- metadata.gz: 369f376d001db7fac67ed5fce394dd0672c735de178c4c940b67082e7f36e7b8f43e18f2eb91d93403c969a1c26a995c229331f14780563e18b957456951b814
7
- data.tar.gz: db56fdd2c74f3cba9dd6b1e3ec7983eb50a46888f2c6ea7a9a70f2153738be1bbd6a53894a433d70d8f8dd4329b3526334b31c825cc7bcf75d4072e962f4f506
6
+ metadata.gz: 8ff57177c9bebdfa42fa14ff4a158f1a44c5eb52602c33b9d606065573fe0461649c271001676405cf09bd4da5e6e0b5a73845e797386a3199fd162a17edef13
7
+ data.tar.gz: c98d162e93e3c21d32eae05ec850bf2d6c42af63afb400ffa04d2813b2ce8364a91dfe0b6d06f713637d31e5913f62235d2e4dbbbfe1846ac4f2d099fd809d11
data/CHANGELOG.md CHANGED
@@ -1,3 +1,50 @@
1
+ <a name="v1.43.0"></a>
2
+ ### v1.43.0 (2020-01-11)
3
+
4
+
5
+ #### Features
6
+
7
+ * **verify**
8
+ * allow includePendingStatus to be specified when fetching pacts ([1f5fc9c](/../../commit/1f5fc9c))
9
+
10
+
11
+ <a name="v1.42.3"></a>
12
+ ### v1.42.3 (2019-11-15)
13
+
14
+
15
+ #### Bug Fixes
16
+
17
+ * **verify**
18
+ * exit with status 0 if all pacts are in pending state ([2f7110b](/../../commit/2f7110b))
19
+
20
+
21
+ <a name="v1.42.2"></a>
22
+ ### v1.42.2 (2019-11-09)
23
+
24
+
25
+ #### Bug Fixes
26
+
27
+ * remove missed &. ([be700d8](/../../commit/be700d8))
28
+
29
+
30
+ <a name="v1.42.1"></a>
31
+ ### v1.42.1 (2019-11-09)
32
+
33
+
34
+ #### Bug Fixes
35
+
36
+ * can't use safe navigation operator because of Ruby 2.2 in Travelling Ruby for the pact-ruby-standalone ([3068ceb](/../../commit/3068ceb))
37
+
38
+
39
+ <a name="v1.42.0"></a>
40
+ ### v1.42.0 (2019-09-26)
41
+
42
+
43
+ #### Features
44
+
45
+ * use new 'pacts for verification' endpoint to retrieve pacts (#199) ([55bb935](/../../commit/55bb935))
46
+
47
+
1
48
  <a name="v1.41.2"></a>
2
49
  ### v1.41.2 (2019-09-10)
3
50
 
@@ -44,15 +44,17 @@ module Pact
44
44
  end
45
45
 
46
46
  def run_specs
47
- exit_code = if options[:pact_uri]
48
- run_with_pact_uri
47
+ exit_code = if options[:pact_uri].is_a?(String)
48
+ run_with_pact_url_string
49
+ elsif options[:pact_uri]
50
+ run_with_pact_uri_object # from pact-provider-verifier
49
51
  else
50
- run_with_configured_pacts
52
+ run_with_configured_pacts_from_pact_helper
51
53
  end
52
54
  exit exit_code
53
55
  end
54
56
 
55
- def run_with_pact_uri
57
+ def run_with_pact_url_string
56
58
  pact_repository_uri_options = {}
57
59
  pact_repository_uri_options[:username] = options[:pact_broker_username] if options[:pact_broker_username]
58
60
  pact_repository_uri_options[:password] = options[:pact_broker_password] if options[:pact_broker_password]
@@ -61,7 +63,11 @@ module Pact
61
63
  Pact::Provider::PactSpecRunner.new([pact_uri], pact_spec_options).run
62
64
  end
63
65
 
64
- def run_with_configured_pacts
66
+ def run_with_pact_uri_object
67
+ Pact::Provider::PactSpecRunner.new([options[:pact_uri]], pact_spec_options).run
68
+ end
69
+
70
+ def run_with_configured_pacts_from_pact_helper
65
71
  pact_urls = Pact.provider_world.pact_urls
66
72
  raise "Please configure a pact to verify" if pact_urls.empty?
67
73
  Pact::Provider::PactSpecRunner.new(pact_urls, pact_spec_options).run
@@ -29,7 +29,7 @@ module Pact
29
29
 
30
30
  def after_suite
31
31
  if Pact.consumer_world.any_pact_examples_ran?
32
- Pact.consumer_world.consumer_contract_builders.each { | c | c.write_pact }
32
+ Pact.consumer_world.consumer_contract_builders.each(&:write_pact)
33
33
  Pact::Doc::Generate.call
34
34
  Pact::MockService::AppManager.instance.kill_all
35
35
  Pact::MockService::AppManager.instance.clear_all
@@ -37,4 +37,4 @@ module Pact
37
37
  end
38
38
  end
39
39
  end
40
- end
40
+ end
@@ -3,7 +3,7 @@ module Pact
3
3
  class SortInteractions
4
4
 
5
5
  def self.call interactions
6
- interactions.sort{|a, b| sortable_id(a) <=> sortable_id(b)}
6
+ interactions.sort_by { |interaction| sortable_id(interaction) }
7
7
  end
8
8
 
9
9
  private
@@ -11,7 +11,6 @@ module Pact
11
11
  def self.sortable_id interaction
12
12
  "#{interaction.description.downcase} #{interaction.response.status} #{(interaction.provider_state || '').downcase}"
13
13
  end
14
-
15
14
  end
16
15
  end
17
- end
16
+ end
@@ -1,6 +1,7 @@
1
1
  require 'pact/retry'
2
2
  require 'pact/hal/authorization_header_redactor'
3
3
  require 'net/http'
4
+ require 'rack'
4
5
 
5
6
  module Pact
6
7
  module Hal
@@ -15,9 +16,11 @@ module Pact
15
16
  end
16
17
 
17
18
  def get href, params = {}, headers = {}
18
- query = params.collect{ |(key, value)| "#{CGI::escape(key)}=#{CGI::escape(value)}" }.join("&")
19
19
  uri = URI(href)
20
- uri.query = query
20
+ if params && params.any?
21
+ existing_params = Rack::Utils.parse_nested_query(uri.query)
22
+ uri.query = Rack::Utils.build_nested_query(existing_params.merge(params))
23
+ end
21
24
  perform_request(create_request(uri, 'Get', nil, headers), uri)
22
25
  end
23
26
 
data/lib/pact/hal/link.rb CHANGED
@@ -6,6 +6,15 @@ module Pact
6
6
  class Link
7
7
  attr_reader :request_method, :href
8
8
 
9
+ DEFAULT_GET_HEADERS = {
10
+ "Accept" => "application/hal+json"
11
+ }.freeze
12
+
13
+ DEFAULT_POST_HEADERS = {
14
+ "Accept" => "application/hal+json",
15
+ "Content-Type" => "application/json"
16
+ }.freeze
17
+
9
18
  def initialize(attrs, http_client)
10
19
  @attrs = attrs
11
20
  @request_method = attrs.fetch(:method, :get).to_sym
@@ -37,25 +46,47 @@ module Pact
37
46
  end
38
47
 
39
48
  def get(payload = {}, headers = {})
40
- wrap_response(href, @http_client.get(href, payload, headers))
49
+ wrap_response(href, @http_client.get(href, payload, DEFAULT_GET_HEADERS.merge(headers)))
50
+ end
51
+
52
+ def get!(*args)
53
+ get(*args).assert_success!
41
54
  end
42
55
 
43
56
  def put(payload = nil, headers = {})
44
- wrap_response(href, @http_client.put(href, payload ? payload.to_json : nil, headers))
57
+ wrap_response(href, @http_client.put(href, payload ? payload.to_json : nil, DEFAULT_POST_HEADERS.merge(headers)))
45
58
  end
46
59
 
47
60
  def post(payload = nil, headers = {})
48
- wrap_response(href, @http_client.post(href, payload ? payload.to_json : nil, headers))
61
+ wrap_response(href, @http_client.post(href, payload ? payload.to_json : nil, DEFAULT_POST_HEADERS.merge(headers)))
62
+ end
63
+
64
+ def post!(payload = nil, headers = {})
65
+ post(payload, headers).assert_success!
49
66
  end
50
67
 
51
68
  def expand(params)
52
69
  expanded_url = expand_url(params, href)
53
70
  new_attrs = @attrs.merge('href' => expanded_url)
54
- Link.new(new_attrs, @http_client)
71
+ Link.new(new_attrs, http_client)
72
+ end
73
+
74
+ def with_query(query)
75
+ if query && query.any?
76
+ uri = URI(href)
77
+ existing_query_params = Rack::Utils.parse_nested_query(uri.query)
78
+ uri.query = Rack::Utils.build_nested_query(existing_query_params.merge(query))
79
+ new_attrs = attrs.merge('href' => uri.to_s)
80
+ Link.new(new_attrs, http_client)
81
+ else
82
+ self
83
+ end
55
84
  end
56
85
 
57
86
  private
58
87
 
88
+ attr_reader :attrs, :http_client
89
+
59
90
  def wrap_response(href, http_response)
60
91
  require 'pact/hal/entity' # avoid circular reference
61
92
  if http_response.success?
@@ -0,0 +1,95 @@
1
+ require 'pact/hal/entity'
2
+ require 'pact/hal/http_client'
3
+ require 'pact/provider/pact_uri'
4
+ require 'pact/errors'
5
+ require 'pact/pact_broker/fetch_pacts'
6
+
7
+ module Pact
8
+ module PactBroker
9
+ class FetchPactURIsForVerification
10
+ attr_reader :provider, :consumer_version_selectors, :provider_version_tags, :broker_base_url, :http_client_options, :http_client, :options
11
+
12
+ PACTS_FOR_VERIFICATION_RELATION = 'beta:provider-pacts-for-verification'.freeze
13
+ PACTS = 'pacts'.freeze
14
+ HREF = 'href'.freeze
15
+ LINKS = '_links'.freeze
16
+ SELF = 'self'.freeze
17
+ EMBEDDED = '_embedded'.freeze
18
+
19
+ def initialize(provider, consumer_version_selectors, provider_version_tags, broker_base_url, http_client_options, options = {})
20
+ @provider = provider
21
+ @consumer_version_selectors = consumer_version_selectors || []
22
+ @provider_version_tags = provider_version_tags || []
23
+ @http_client_options = http_client_options
24
+ @broker_base_url = broker_base_url
25
+ @http_client = Pact::Hal::HttpClient.new(http_client_options)
26
+ @options = options
27
+ end
28
+
29
+ def self.call(provider, consumer_version_selectors, provider_version_tags, broker_base_url, http_client_options, options = {})
30
+ new(provider, consumer_version_selectors, provider_version_tags, broker_base_url, http_client_options, options).call
31
+ end
32
+
33
+ def call
34
+ if index.can?(PACTS_FOR_VERIFICATION_RELATION)
35
+ log_message
36
+ pacts_for_verification
37
+ else
38
+ # Fall back to old method of fetching pacts
39
+ consumer_version_tags = consumer_version_selectors.collect{ | selector | selector[:tag] }
40
+ FetchPacts.call(provider, consumer_version_tags, broker_base_url, http_client_options)
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def index
47
+ @index_entity ||= Pact::Hal::Link.new({ "href" => broker_base_url }, http_client).get.assert_success!
48
+ end
49
+
50
+ def pacts_for_verification
51
+ pacts_for_verification_entity.response.body[EMBEDDED][PACTS].collect do | pact |
52
+ metadata = {
53
+ pending: pact["verificationProperties"]["pending"],
54
+ notices: extract_notices(pact)
55
+ }
56
+ Pact::Provider::PactURI.new(pact[LINKS][SELF][HREF], http_client_options, metadata)
57
+ end
58
+ end
59
+
60
+ def pacts_for_verification_entity
61
+ index
62
+ ._link(PACTS_FOR_VERIFICATION_RELATION)
63
+ .expand(provider: provider)
64
+ .post!(query)
65
+ end
66
+
67
+ def query
68
+ q = {}
69
+ q["includePendingStatus"] = true if options[:include_pending_status]
70
+ q["consumerVersionSelectors"] = consumer_version_selectors if consumer_version_selectors.any?
71
+ q["providerVersionTags"] = provider_version_tags if provider_version_tags.any?
72
+ q
73
+ end
74
+
75
+ def extract_notices(pact)
76
+ (pact["verificationProperties"]["notices"] || []).collect{ |notice| notice["text"] }.compact
77
+ end
78
+
79
+ def log_message
80
+ latest = consumer_version_selectors.any? ? "" : "latest "
81
+ message = "INFO: Fetching #{latest}pacts for #{provider} from #{broker_base_url}"
82
+ if consumer_version_selectors.any?
83
+ desc = consumer_version_selectors.collect do |selector|
84
+ all_or_latest = selector[:all] ? "all" : "latest"
85
+ # TODO support fallback
86
+ name = selector[:fallback] ? "#{selector[:tag]} (or #{selector[:fallback]} if not found)" : selector[:tag]
87
+ "#{all_or_latest} #{name}"
88
+ end.join(", ")
89
+ message << " for tags: #{desc}"
90
+ end
91
+ Pact.configuration.output_stream.puts message
92
+ end
93
+ end
94
+ end
95
+ end
@@ -1,19 +1,25 @@
1
1
  require 'pact/pact_broker/fetch_pacts'
2
- require 'pact/pact_broker/fetch_pending_pacts'
2
+ require 'pact/pact_broker/fetch_pact_uris_for_verification'
3
+ require 'pact/provider/pact_uri'
3
4
 
4
5
  #
5
- # @public Use by Pact Provider Verifier
6
+ # @public Used by Pact Provider Verifier
6
7
  #
7
8
  module Pact
8
9
  module PactBroker
9
10
  extend self
10
11
 
12
+ # Keep for backwards compatibility with pact-provider-verifier < 1.23.1
11
13
  def fetch_pact_uris *args
12
14
  Pact::PactBroker::FetchPacts.call(*args).collect(&:uri)
13
15
  end
14
16
 
15
- def fetch_pending_pact_uris *args
16
- Pact::PactBroker::FetchPendingPacts.call(*args).collect(&:uri)
17
+ def fetch_pact_uris_for_verification *args
18
+ Pact::PactBroker::FetchPactURIsForVerification.call(*args)
19
+ end
20
+
21
+ def build_pact_uri(*args)
22
+ Pact::Provider::PactURI.new(*args)
17
23
  end
18
24
  end
19
25
  end
@@ -1,6 +1,6 @@
1
1
  require 'pact/shared/dsl'
2
2
  require 'pact/provider/world'
3
- require 'pact/pact_broker/fetch_pacts'
3
+ require 'pact/pact_broker/fetch_pact_uris_for_verification'
4
4
  require 'pact/errors'
5
5
 
6
6
  module Pact
@@ -14,10 +14,11 @@ module Pact
14
14
  # in parent scope, it will clash with these ones,
15
15
  # so put an underscore in front of the name to be safer.
16
16
 
17
- attr_accessor :_provider_name, :_pact_broker_base_url, :_consumer_version_tags, :_basic_auth_options, :_verbose
17
+ attr_accessor :_provider_name, :_pact_broker_base_url, :_consumer_version_tags, :_provider_version_tags, :_basic_auth_options, :_verbose
18
18
 
19
- def initialize(provider_name)
19
+ def initialize(provider_name, provider_version_tags)
20
20
  @_provider_name = provider_name
21
+ @_provider_version_tags = provider_version_tags
21
22
  @_consumer_version_tags = []
22
23
  @_verbose = false
23
24
  end
@@ -45,10 +46,27 @@ module Pact
45
46
  private
46
47
 
47
48
  def create_pact_verification
48
- fetch_pacts = Pact::PactBroker::FetchPacts.new(_provider_name, _consumer_version_tags, _pact_broker_base_url, _basic_auth_options.merge(verbose: _verbose))
49
+ fetch_pacts = Pact::PactBroker::FetchPactURIsForVerification.new(
50
+ _provider_name,
51
+ consumer_version_selectors,
52
+ _provider_version_tags,
53
+ _pact_broker_base_url,
54
+ _basic_auth_options.merge(verbose: _verbose)
55
+ )
56
+
49
57
  Pact.provider_world.add_pact_uri_source fetch_pacts
50
58
  end
51
59
 
60
+ def consumer_version_selectors
61
+ # TODO support "all"
62
+ _consumer_version_tags.collect do | tag |
63
+ {
64
+ tag: tag,
65
+ latest: true
66
+ }
67
+ end
68
+ end
69
+
52
70
  def validate
53
71
  raise Pact::Error.new("Please provide a pact_broker_base_url from which to retrieve the pacts") unless _pact_broker_base_url
54
72
  end
@@ -65,7 +65,7 @@ module Pact
65
65
  end
66
66
 
67
67
  def create_pact_verification_from_broker(&block)
68
- PactVerificationFromBroker.build(name, &block)
68
+ PactVerificationFromBroker.build(name, tags, &block)
69
69
  end
70
70
 
71
71
  def finalize
@@ -22,4 +22,3 @@ module Pact
22
22
  end
23
23
  end
24
24
  end
25
-
@@ -91,7 +91,7 @@ module Pact
91
91
  ::RSpec::Core::CommandLine.new(NoConfigurationOptions.new)
92
92
  .run(::RSpec.configuration.output_stream, ::RSpec.configuration.error_stream)
93
93
  end
94
- options[:ignore_failures] ? 0 : exit_code
94
+ (all_pacts_pending? || options[:ignore_failures]) ? 0 : exit_code
95
95
  end
96
96
 
97
97
  def rspec_runner_options
@@ -159,6 +159,10 @@ module Pact
159
159
  consumer_contract.to_json
160
160
  end
161
161
 
162
+ def all_pacts_pending?
163
+ pact_urls.all?{ | pact_url| pact_url.metadata[:pending] }
164
+ end
165
+
162
166
  def class_exists? name
163
167
  Kernel.const_get name
164
168
  rescue NameError
@@ -1,17 +1,19 @@
1
1
  module Pact
2
2
  module Provider
3
3
  class PactURI
4
- attr_reader :uri, :options
4
+ attr_reader :uri, :options, :metadata
5
5
 
6
- def initialize (uri, options={})
6
+ def initialize (uri, options = nil, metadata = nil)
7
7
  @uri = uri
8
- @options = options
8
+ @options = options || {}
9
+ @metadata = metadata || {} # make sure it's not nil if nil is passed in
9
10
  end
10
11
 
11
12
  def == other
12
13
  other.is_a?(PactURI) &&
13
14
  uri == other.uri &&
14
- options == other.options
15
+ options == other.options &&
16
+ metadata == other.metadata
15
17
  end
16
18
 
17
19
  def basic_auth?
@@ -54,7 +54,7 @@ module Pact
54
54
  end
55
55
 
56
56
  def rack_request_header_for header
57
- with_http_prefix(header.to_s.upcase).gsub('-', '_')
57
+ with_http_prefix(header.to_s.upcase).tr('-', '_')
58
58
  end
59
59
 
60
60
  def rack_request_value_for value
@@ -21,11 +21,13 @@ module Pact
21
21
  include ::RSpec::Core::DSL
22
22
 
23
23
  def honour_pactfile pact_uri, pact_json, options
24
- pact_description = options[:ignore_failures] ? "Pending pact" : "pact"
25
- Pact.configuration.output_stream.puts "INFO: Reading #{pact_description} at #{pact_uri}"
26
- Pact.configuration.output_stream.puts "INFO: Filtering interactions by: #{options[:criteria]}" if options[:criteria] && options[:criteria].any?
24
+ Pact.configuration.output_stream.puts "INFO: Reading pact at #{pact_uri}"
25
+ Pact.configuration.output_stream.puts("DEBUG: #{pact_uri.metadata[:inclusion_reason]}") if pact_uri.metadata[:inclusion_reason]
26
+ Pact.configuration.output_stream.puts("DEBUG: #{pact_uri.metadata[:pending_reason]}") if pact_uri.metadata[:pending_reason]
27
+ Pact.configuration.output_stream.puts "DEBUG: Filtering interactions by: #{options[:criteria]}" if options[:criteria] && options[:criteria].any?
27
28
  consumer_contract = Pact::ConsumerContract.from_json(pact_json)
28
- ::RSpec.describe "Verifying a #{pact_description} between #{consumer_contract.consumer.name} and #{consumer_contract.provider.name}", pactfile_uri: pact_uri do
29
+ suffix = pact_uri.metadata[:pending] ? " [PENDING]": ""
30
+ ::RSpec.describe "Verifying a pact between #{consumer_contract.consumer.name} and #{consumer_contract.provider.name}#{suffix}", pactfile_uri: pact_uri do
29
31
  honour_consumer_contract consumer_contract, options.merge(pact_json: pact_json, pact_uri: pact_uri)
30
32
  end
31
33
  end
@@ -74,7 +76,7 @@ module Pact
74
76
  pact_interaction: interaction,
75
77
  pact_interaction_example_description: interaction_description_for_rerun_command(interaction),
76
78
  pact_uri: options[:pact_uri],
77
- pact_ignore_failures: options[:ignore_failures]
79
+ pact_ignore_failures: options[:pact_uri].metadata[:pending] || options[:ignore_failures]
78
80
  }
79
81
 
80
82
  describe description_for(interaction), metadata do
@@ -46,7 +46,7 @@ module Pact
46
46
  def tear_down_provider_states provider_states, consumer, options = {}
47
47
  # If there are no provider state, execute with an nil state to ensure global and base states are executed
48
48
  Pact.configuration.provider_state_tear_down.call(nil, consumer, options) if provider_states.nil? || provider_states.empty?
49
- provider_states.reverse.each do | provider_state |
49
+ provider_states.reverse_each do | provider_state |
50
50
  Pact.configuration.provider_state_tear_down.call(provider_state.name, consumer, options.merge(params: provider_state.params))
51
51
  end
52
52
  end
@@ -43,7 +43,7 @@ module Pact
43
43
  end
44
44
 
45
45
  def pact_uris_from_pact_uri_sources
46
- pact_uri_sources.collect{| pact_uri_source| pact_uri_source.call }.flatten
46
+ pact_uri_sources.collect(&:call).flatten
47
47
  end
48
48
  end
49
49
  end
data/lib/pact/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # Remember to bump pact-provider-proxy when this changes major version
2
2
  module Pact
3
- VERSION = "1.41.2"
3
+ VERSION = "1.43.0"
4
4
  end
data/pact.gemspec CHANGED
@@ -1,5 +1,4 @@
1
- # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("lib", __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'pact/version'
5
4
 
@@ -15,22 +14,21 @@ Gem::Specification.new do |gem|
15
14
  gem.required_ruby_version = '>= 2.0'
16
15
 
17
16
  gem.files = `git ls-files bin lib pact.gemspec CHANGELOG.md LICENSE.txt`.split($/)
18
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
19
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
19
  gem.require_paths = ["lib"]
21
20
  gem.license = 'MIT'
22
21
 
23
22
  gem.metadata = {
23
+ 'changelog_uri' => 'https://github.com/pact-foundation/pact-ruby/blob/master/CHANGELOG.md',
24
24
  'source_code_uri' => 'https://github.com/pact-foundation/pact-ruby',
25
25
  'bug_tracker_uri' => 'https://github.com/pact-foundation/pact-ruby/issues',
26
26
  'documentation_uri' => 'https://github.com/pact-foundation/pact-ruby/blob/master/README.md'
27
27
  }
28
28
 
29
- gem.add_runtime_dependency 'randexp', '~> 0.1.7'
30
- gem.add_runtime_dependency 'rspec', '>=2.14'
29
+ gem.add_runtime_dependency 'rspec', '>= 2.14'
31
30
  gem.add_runtime_dependency 'rack-test', '>= 0.6.3', '< 2.0.0'
32
31
  gem.add_runtime_dependency 'thor'
33
- gem.add_runtime_dependency 'json','> 1.8.5'
34
32
  gem.add_runtime_dependency 'webrick'
35
33
  gem.add_runtime_dependency 'term-ansicolor', '~> 1.0'
36
34
 
@@ -39,7 +37,7 @@ Gem::Specification.new do |gem|
39
37
 
40
38
  gem.add_development_dependency 'rake', '~> 10.0.3'
41
39
  gem.add_development_dependency 'webmock', '~> 3.0'
42
- #gem.add_development_dependency 'pry-byebug'
40
+ gem.add_development_dependency 'pry-byebug'
43
41
  gem.add_development_dependency 'fakefs', '0.5' # 0.6.0 blows up
44
42
  gem.add_development_dependency 'hashie', '~> 2.0'
45
43
  gem.add_development_dependency 'activesupport'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.41.2
4
+ version: 1.43.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Fraser
@@ -12,22 +12,8 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2019-09-09 00:00:00.000000000 Z
15
+ date: 2020-01-11 00:00:00.000000000 Z
16
16
  dependencies:
17
- - !ruby/object:Gem::Dependency
18
- name: randexp
19
- requirement: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - "~>"
22
- - !ruby/object:Gem::Version
23
- version: 0.1.7
24
- type: :runtime
25
- prerelease: false
26
- version_requirements: !ruby/object:Gem::Requirement
27
- requirements:
28
- - - "~>"
29
- - !ruby/object:Gem::Version
30
- version: 0.1.7
31
17
  - !ruby/object:Gem::Dependency
32
18
  name: rspec
33
19
  requirement: !ruby/object:Gem::Requirement
@@ -76,20 +62,6 @@ dependencies:
76
62
  - - ">="
77
63
  - !ruby/object:Gem::Version
78
64
  version: '0'
79
- - !ruby/object:Gem::Dependency
80
- name: json
81
- requirement: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - ">"
84
- - !ruby/object:Gem::Version
85
- version: 1.8.5
86
- type: :runtime
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- requirements:
90
- - - ">"
91
- - !ruby/object:Gem::Version
92
- version: 1.8.5
93
65
  - !ruby/object:Gem::Dependency
94
66
  name: webrick
95
67
  requirement: !ruby/object:Gem::Requirement
@@ -174,6 +146,20 @@ dependencies:
174
146
  - - "~>"
175
147
  - !ruby/object:Gem::Version
176
148
  version: '3.0'
149
+ - !ruby/object:Gem::Dependency
150
+ name: pry-byebug
151
+ requirement: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ type: :development
157
+ prerelease: false
158
+ version_requirements: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
177
163
  - !ruby/object:Gem::Dependency
178
164
  name: fakefs
179
165
  requirement: !ruby/object:Gem::Requirement
@@ -323,8 +309,8 @@ files:
323
309
  - lib/pact/hal/http_client.rb
324
310
  - lib/pact/hal/link.rb
325
311
  - lib/pact/pact_broker.rb
312
+ - lib/pact/pact_broker/fetch_pact_uris_for_verification.rb
326
313
  - lib/pact/pact_broker/fetch_pacts.rb
327
- - lib/pact/pact_broker/fetch_pending_pacts.rb
328
314
  - lib/pact/project_root.rb
329
315
  - lib/pact/provider.rb
330
316
  - lib/pact/provider/configuration.rb
@@ -381,6 +367,7 @@ homepage: https://github.com/pact-foundation/pact-ruby
381
367
  licenses:
382
368
  - MIT
383
369
  metadata:
370
+ changelog_uri: https://github.com/pact-foundation/pact-ruby/blob/master/CHANGELOG.md
384
371
  source_code_uri: https://github.com/pact-foundation/pact-ruby
385
372
  bug_tracker_uri: https://github.com/pact-foundation/pact-ruby/issues
386
373
  documentation_uri: https://github.com/pact-foundation/pact-ruby/blob/master/README.md
@@ -1,58 +0,0 @@
1
- require 'pact/hal/entity'
2
- require 'pact/hal/http_client'
3
- require 'pact/provider/pact_uri'
4
- require 'pact/errors'
5
-
6
- module Pact
7
- module PactBroker
8
- class FetchPendingPacts
9
- attr_reader :provider, :tags, :broker_base_url, :http_client_options, :http_client, :index_entity
10
-
11
- PENDING_PROVIDER_RELATION = 'beta:pending-provider-pacts'.freeze
12
- WIP_PROVIDER_RELATION = 'beta:wip-provider-pacts'.freeze # deprecated
13
- PACTS = 'pacts'.freeze
14
- PB_PACTS = 'pb:pacts'.freeze
15
- HREF = 'href'.freeze
16
-
17
- def initialize(provider, broker_base_url, http_client_options)
18
- @provider = provider
19
- @http_client_options = http_client_options
20
- @broker_base_url = broker_base_url
21
- @http_client = Pact::Hal::HttpClient.new(http_client_options)
22
- end
23
-
24
- def self.call(provider, broker_base_url, http_client_options)
25
- new(provider, broker_base_url, http_client_options).call
26
- end
27
-
28
- def call
29
- if index.success?
30
- pending_pacts_for_provider
31
- else
32
- raise Pact::Error.new("Error retrieving #{broker_base_url} status=#{index_entity.response.code} #{index_entity.response.raw_body}")
33
- end
34
- end
35
-
36
- private
37
-
38
- def index
39
- @index_entity ||= Pact::Hal::Link.new({ "href" => broker_base_url }, http_client).get.assert_success!
40
- end
41
-
42
- def pending_pacts_for_provider
43
- link = index_entity._link(WIP_PROVIDER_RELATION, PENDING_PROVIDER_RELATION)
44
- if link
45
- get_pact_urls(link.expand(provider: provider).get)
46
- else
47
- []
48
- end
49
- end
50
-
51
- def get_pact_urls(link_by_provider)
52
- link_by_provider.fetch(PB_PACTS, PACTS).collect do |pact|
53
- Pact::Provider::PactURI.new(pact[HREF], http_client_options)
54
- end
55
- end
56
- end
57
- end
58
- end