pact 1.43.0 → 1.43.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b644026c464080ef14a4a202bbfe8106f5ece05a
4
- data.tar.gz: b0fa73324f51d53bf0d51e1ec5adc1974fc20816
3
+ metadata.gz: 4f770afeb5bcc6a3f87b8bef7469f3ca7ac674d8
4
+ data.tar.gz: 15139fb4ed56138410a6b46ab75c71314104ba07
5
5
  SHA512:
6
- metadata.gz: 8ff57177c9bebdfa42fa14ff4a158f1a44c5eb52602c33b9d606065573fe0461649c271001676405cf09bd4da5e6e0b5a73845e797386a3199fd162a17edef13
7
- data.tar.gz: c98d162e93e3c21d32eae05ec850bf2d6c42af63afb400ffa04d2813b2ce8364a91dfe0b6d06f713637d31e5913f62235d2e4dbbbfe1846ac4f2d099fd809d11
6
+ metadata.gz: 214f1133c45463be3ec2f4e393d31c00ac3fa9251d5e7c174c4491dc799cc3354fd0126fd2a7a8673b7b9d2a3bc4208b0b793b6f466c61d7dbdd34502c056f05
7
+ data.tar.gz: 80ae6c4b68a4e5cbd3fdc56bca61e6ec5d384de3bbda35c6ebbe2ba36aef3bfb86831ae528fbe2a123c1ac941cad6de11a451439d437bd491dedc08fd2db41d0
@@ -1,3 +1,13 @@
1
+ <a name="v1.43.1"></a>
2
+ ### v1.43.1 (2020-01-11)
3
+
4
+
5
+ #### Bug Fixes
6
+
7
+ * use configured credentials when fetching the diff with previous version ([b9deb09](/../../commit/b9deb09))
8
+ * use URI.open instead of Kernel.open ([7b3ea81](/../../commit/7b3ea81))
9
+
10
+
1
11
  <a name="v1.43.0"></a>
2
12
  ### v1.43.0 (2020-01-11)
3
13
 
@@ -36,12 +36,9 @@ module Pact
36
36
 
37
37
  def create_request uri, http_method, body = nil, headers = {}
38
38
  request = Net::HTTP.const_get(http_method).new(uri.request_uri)
39
- request['Content-Type'] = "application/json" if ['Post', 'Put', 'Patch'].include?(http_method)
40
- request['Accept'] = "application/hal+json"
41
39
  headers.each do | key, value |
42
40
  request[key] = value
43
41
  end
44
-
45
42
  request.body = body if body
46
43
  request.basic_auth username, password if username
47
44
  request['Authorization'] = "Bearer #{token}" if token
@@ -85,6 +82,10 @@ module Pact
85
82
  def success?
86
83
  __getobj__().code.start_with?("2")
87
84
  end
85
+
86
+ def json?
87
+ self['content-type'] && self['content-type'] =~ /json/
88
+ end
88
89
  end
89
90
  end
90
91
  end
@@ -23,14 +23,14 @@ module Pact
23
23
  end
24
24
 
25
25
  def run(payload = nil)
26
- response = case request_method
27
- when :get
28
- get(payload)
29
- when :put
30
- put(payload)
31
- when :post
32
- post(payload)
33
- end
26
+ case request_method
27
+ when :get
28
+ get(payload)
29
+ when :put
30
+ put(payload)
31
+ when :post
32
+ post(payload)
33
+ end
34
34
  end
35
35
 
36
36
  def title_or_name
@@ -89,8 +89,14 @@ module Pact
89
89
 
90
90
  def wrap_response(href, http_response)
91
91
  require 'pact/hal/entity' # avoid circular reference
92
+ require 'pact/hal/non_json_entity'
93
+
92
94
  if http_response.success?
93
- Entity.new(href, http_response.body, @http_client, http_response)
95
+ if http_response.json?
96
+ Entity.new(href, http_response.body, @http_client, http_response)
97
+ else
98
+ NonJsonEntity.new(href, http_response.raw_body, @http_client, http_response)
99
+ end
94
100
  else
95
101
  ErrorEntity.new(href, http_response.raw_body, @http_client, http_response)
96
102
  end
@@ -0,0 +1,28 @@
1
+ module Pact
2
+ module Hal
3
+ class NonJsonEntity
4
+ def initialize(href, body, http_client, response = nil)
5
+ @href = href
6
+ @body = body
7
+ @client = http_client
8
+ @response = response
9
+ end
10
+
11
+ def success?
12
+ true
13
+ end
14
+
15
+ def response
16
+ @response
17
+ end
18
+
19
+ def body
20
+ @body
21
+ end
22
+
23
+ def assert_success!
24
+ self
25
+ end
26
+ end
27
+ end
28
+ end
@@ -5,8 +5,8 @@ module Pact
5
5
  module Help
6
6
  class Content
7
7
 
8
- def initialize pact_jsons
9
- @pact_jsons = pact_jsons
8
+ def initialize pact_sources
9
+ @pact_sources = pact_sources
10
10
  end
11
11
 
12
12
  def text
@@ -15,7 +15,7 @@ module Pact
15
15
 
16
16
  private
17
17
 
18
- attr_reader :pact_jsons
18
+ attr_reader :pact_sources
19
19
 
20
20
  def help_text
21
21
  temp_dir = Pact.configuration.tmp_dir
@@ -28,7 +28,7 @@ module Pact
28
28
  end
29
29
 
30
30
  def pact_diffs
31
- pact_jsons.collect do | pact_json |
31
+ pact_sources.collect do | pact_json |
32
32
  PactDiff.call(pact_json)
33
33
  end.compact.join("\n")
34
34
  end
@@ -1,26 +1,24 @@
1
+ require 'pact/hal/entity'
2
+
1
3
  module Pact
2
4
  module Provider
3
5
  module Help
4
-
5
6
  class PactDiff
6
-
7
7
  class PrintPactDiffError < StandardError; end
8
8
 
9
- attr_reader :pact_json, :output
9
+ attr_reader :pact_source, :output
10
10
 
11
- def initialize pact_json
12
- @pact_json = pact_json
11
+ def initialize pact_source
12
+ @pact_source = pact_source
13
13
  end
14
14
 
15
- def self.call pact_json
16
- new(pact_json).call
15
+ def self.call pact_source
16
+ new(pact_source).call
17
17
  end
18
18
 
19
19
  def call
20
20
  begin
21
- if diff_rel && diff_url
22
- header + "\n" + get_diff
23
- end
21
+ header + "\n" + get_diff
24
22
  rescue PrintPactDiffError => e
25
23
  return e.message
26
24
  end
@@ -32,35 +30,13 @@ module Pact
32
30
  "The following changes have been made since the previous distinct version of this pact, and may be responsible for verification failure:\n"
33
31
  end
34
32
 
35
- def pact_hash
36
- @pact_hash ||= json_load(pact_json)
37
- end
38
-
39
- def links
40
- pact_hash['_links'] || pact_hash['links']
41
- end
42
-
43
- def diff_rel
44
- return nil unless links
45
- key = links.keys.find { | key | key =~ /diff/ && key =~ /distinct/ && key =~ /previous/}
46
- key ? links[key] : nil
47
- end
48
-
49
- def diff_url
50
- diff_rel['href']
51
- end
52
-
53
33
  def get_diff
54
34
  begin
55
- open(diff_url) { | file | file.read }
35
+ pact_source.hal_entity._link!("pb:diff-previous-distinct").get!(nil, "Accept" => "text/plain").body
56
36
  rescue StandardError => e
57
- raise PrintPactDiffError.new("Tried to retrieve diff with previous pact from #{diff_url}, but received response code #{e}.")
37
+ raise PrintPactDiffError.new("Tried to retrieve diff with previous pact, but received error #{e.class} #{e.message}.")
58
38
  end
59
39
  end
60
-
61
- def json_load json
62
- JSON.load(json, nil, { max_nesting: 50 })
63
- end
64
40
  end
65
41
  end
66
42
  end
@@ -9,12 +9,12 @@ module Pact
9
9
 
10
10
  HELP_FILE_NAME = 'help.md'
11
11
 
12
- def self.call pact_jsons, reports_dir = Pact.configuration.reports_dir
13
- new(pact_jsons, reports_dir).call
12
+ def self.call pact_sources, reports_dir = Pact.configuration.reports_dir
13
+ new(pact_sources, reports_dir).call
14
14
  end
15
15
 
16
- def initialize pact_jsons, reports_dir
17
- @pact_jsons = pact_jsons
16
+ def initialize pact_sources, reports_dir
17
+ @pact_sources = pact_sources
18
18
  @reports_dir = File.expand_path(reports_dir)
19
19
  end
20
20
 
@@ -25,7 +25,7 @@ module Pact
25
25
 
26
26
  private
27
27
 
28
- attr_reader :reports_dir, :pact_jsons
28
+ attr_reader :reports_dir, :pact_sources
29
29
 
30
30
  def clean_reports_dir
31
31
  raise "Cleaning report dir #{reports_dir} would delete project!" if reports_dir_contains_pwd
@@ -46,9 +46,8 @@ module Pact
46
46
  end
47
47
 
48
48
  def help_text
49
- Content.new(pact_jsons).text
49
+ Content.new(pact_sources).text
50
50
  end
51
-
52
51
  end
53
52
  end
54
53
  end
@@ -1,4 +1,6 @@
1
1
  require 'pact/consumer_contract/pact_file'
2
+ require 'pact/hal/http_client'
3
+ require 'pact/hal/entity'
2
4
 
3
5
  module Pact
4
6
  module Provider
@@ -17,6 +19,13 @@ module Pact
17
19
  def pact_hash
18
20
  @pact_hash ||= JSON.load(pact_json, nil, { max_nesting: 50 })
19
21
  end
22
+
23
+ def hal_entity
24
+ http_client_keys = [:username, :password, :token]
25
+ http_client_options = uri.options.reject{ |k, _| !http_client_keys.include?(k) }
26
+ http_client = Pact::Hal::HttpClient.new(http_client_options.merge(verbose: true))
27
+ Pact::Hal::Entity.new(uri, pact_hash, http_client)
28
+ end
20
29
  end
21
30
  end
22
31
  end
@@ -80,7 +80,7 @@ module Pact
80
80
  executing_with_ruby = executing_with_ruby?
81
81
 
82
82
  config.after(:suite) do | suite |
83
- Pact::Provider::Help::Write.call(jsons) if executing_with_ruby
83
+ Pact::Provider::Help::Write.call(Pact.provider_world.pact_sources) if executing_with_ruby
84
84
  end
85
85
  end
86
86
 
@@ -1,4 +1,4 @@
1
1
  # Remember to bump pact-provider-proxy when this changes major version
2
2
  module Pact
3
- VERSION = "1.43.0"
3
+ VERSION = "1.43.1"
4
4
  end
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.43.0
4
+ version: 1.43.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Fraser
@@ -308,6 +308,7 @@ files:
308
308
  - lib/pact/hal/entity.rb
309
309
  - lib/pact/hal/http_client.rb
310
310
  - lib/pact/hal/link.rb
311
+ - lib/pact/hal/non_json_entity.rb
311
312
  - lib/pact/pact_broker.rb
312
313
  - lib/pact/pact_broker/fetch_pact_uris_for_verification.rb
313
314
  - lib/pact/pact_broker/fetch_pacts.rb