pact-support 1.6.4 → 1.6.5

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: ff8ff3846a8b04e97c85f0bc41ec7d0162e58195
4
- data.tar.gz: aba56d2bc4538303c403f236897ef29dd769c79c
3
+ metadata.gz: 0d403d886a68ff8d7dcc27760407ae9c38328347
4
+ data.tar.gz: abbf6ec8fe5c0aef4d88c27861206e3ad8911a07
5
5
  SHA512:
6
- metadata.gz: afc426f3151482889c6aec89940d44db5301f657e690bb34985a37af38c82c00cbbf1bc0ba865876b92688ebaeb10635ef157b9e99e31868619d1cfcbc73035c
7
- data.tar.gz: 9cf48a3493ddf6ef465720c79dd9b61e5588c206ddbba3d51b4997b0d13ef4b59162f14867961d6cbbacd6253584053c8c941337480476e5196d61855930b407
6
+ metadata.gz: 784021ebd38e3b04a2ce10078af2dd1575a80a66a6e3d10008086725407c3f2a568b41be3a7198ff5d7f52c70979c1cb034d601cd1bcdf0ab482d15da0c8da48
7
+ data.tar.gz: 13b5f238474aa903389b9252a76c71c0d6b416dbab8642571ac60d55100017dab53c98bd2d4b6056fe45922dba69e1984026ed6cea398a89ccf6d06269c69ea4
@@ -1,3 +1,20 @@
1
+ <a name="v1.6.5"></a>
2
+ ### v1.6.5 (2018-07-23)
3
+
4
+
5
+ #### Features
6
+
7
+ * use 0 as the nil pact specification version ([88e4750](/../../commit/88e4750))
8
+ * reify StringWithMatchingRules to a String ([a025dd3](/../../commit/a025dd3))
9
+ * parse String response and request bodies to StringWithMatchingRules to support pact-xml ([a9fbb58](/../../commit/a9fbb58))
10
+ * add custom contract parsers to front of pact parsers list so that customised parsers are tried first ([babc319](/../../commit/babc319))
11
+
12
+
13
+ #### Bug Fixes
14
+
15
+ * show a more helpful error when attempting to parse a URI that is not a pact ([a8ba1ed](/../../commit/a8ba1ed))
16
+
17
+
1
18
  <a name="v1.6.4"></a>
2
19
  ### v1.6.4 (2018-07-14)
3
20
 
@@ -13,6 +13,9 @@ require 'pact/consumer_contract/pact_file'
13
13
  require 'pact/consumer_contract/http_consumer_contract_parser'
14
14
 
15
15
  module Pact
16
+
17
+ class UnrecognizePactFormatError < ::Pact::Error; end
18
+
16
19
  class ConsumerContract
17
20
 
18
21
  include SymbolizeKeys
@@ -30,7 +33,7 @@ module Pact
30
33
  end
31
34
 
32
35
  def self.add_parser consumer_contract_parser
33
- parsers << consumer_contract_parser
36
+ parsers.unshift(consumer_contract_parser)
34
37
  end
35
38
 
36
39
  def self.parsers
@@ -41,7 +44,7 @@ module Pact
41
44
  parsers.each do | parser |
42
45
  return parser.call(hash) if parser.can_parse?(hash)
43
46
  end
44
- raise Pact::Error.new("No consumer contract parser found for hash: #{hash}")
47
+ raise Pact::UnrecognizePactFormatError.new("This document does not use a recognised Pact format: #{hash}")
45
48
  end
46
49
 
47
50
  def self.from_json string
@@ -51,6 +54,8 @@ module Pact
51
54
 
52
55
  def self.from_uri uri, options = {}
53
56
  from_json(Pact::PactFile.read(uri, options))
57
+ rescue UnrecognizePactFormatError
58
+ raise Pact::UnrecognizePactFormatError.new("This document does not use a recognised Pact format. Please check that #{uri} is a valid pact file.")
54
59
  end
55
60
 
56
61
  def self.maintain_backwards_compatiblity_with_producer_keys string
@@ -1,104 +1,71 @@
1
- require 'pact/consumer_contract/request'
2
- require 'pact/consumer_contract/response'
3
- require 'pact/symbolize_keys'
4
1
  require 'pact/shared/active_support_support'
5
- require 'pact/matching_rules'
6
- require 'pact/errors'
7
- require 'pact/specification_version'
2
+ require 'pact/consumer_contract/interaction_parser'
8
3
 
9
4
  module Pact
10
5
  class Interaction
11
6
  include ActiveSupportSupport
12
- include SymbolizeKeys
13
7
 
14
- attr_accessor :description, :request, :response, :provider_state
15
-
16
- def initialize attributes = {}
17
- @description = attributes[:description]
18
- @request = attributes[:request]
19
- @response = attributes[:response]
20
- @provider_state = attributes[:provider_state] || attributes[:providerState]
21
- end
22
-
23
- def self.from_hash hash, options = {}
24
- pact_specification_version = options[:pact_specification_version] || Pact::SpecificationVersion::NIL_VERSION
25
- case pact_specification_version.major
26
- when nil, 0, 1, 2 then parse_v2_interaction(hash, pact_specification_version: pact_specification_version)
27
- else parse_v3_interaction(hash, pact_specification_version: pact_specification_version)
8
+ attr_accessor :description, :request, :response, :provider_state
9
+
10
+ def initialize attributes = {}
11
+ @description = attributes[:description]
12
+ @request = attributes[:request]
13
+ @response = attributes[:response]
14
+ @provider_state = attributes[:provider_state] || attributes[:providerState]
15
+ end
16
+
17
+ def self.from_hash hash, options = {}
18
+ InteractionParser.call(hash, options)
19
+ end
20
+
21
+ def to_hash
22
+ {
23
+ description: description,
24
+ provider_state: provider_state,
25
+ request: request.to_hash,
26
+ response: response.to_hash
27
+ }
28
+ end
29
+
30
+ def http?
31
+ true
32
+ end
33
+
34
+ def validate!
35
+ raise Pact::InvalidInteractionError.new(self) unless description && request && response
36
+ end
37
+
38
+ def matches_criteria? criteria
39
+ criteria.each do | key, value |
40
+ unless match_criterion self.send(key.to_s), value
41
+ return false
28
42
  end
29
43
  end
44
+ true
45
+ end
30
46
 
31
- def self.parse_v2_interaction hash, options
32
- request_hash = Pact::MatchingRules.merge(hash['request'], hash['request']['matchingRules'], options)
33
- request = Pact::Request::Expected.from_hash(request_hash)
34
- response_hash = Pact::MatchingRules.merge(hash['response'], hash['response']['matchingRules'], options)
35
- response = Pact::Response.from_hash(response_hash)
36
- new(symbolize_keys(hash).merge(request: request, response: response))
37
- end
38
-
39
- def self.parse_v3_interaction hash, options
40
-
41
- request_hash = hash['request'].keys.each_with_object({}) do | key, new_hash |
42
- new_hash[key] = Pact::MatchingRules.merge(hash['request'][key], hash['request'].fetch('matchingRules', {})[key], options)
43
- end
44
- request = Pact::Request::Expected.from_hash(request_hash)
45
-
46
- response_hash = hash['response'].keys.each_with_object({}) do | key, new_hash |
47
- new_hash[key] = Pact::MatchingRules.merge(hash['response'][key], hash['response'].fetch('matchingRules', {})[key], options)
48
- end
47
+ def match_criterion target, criterion
48
+ target == criterion || (criterion.is_a?(Regexp) && criterion.match(target))
49
+ end
49
50
 
50
- response = Pact::Response.from_hash(response_hash)
51
- new(symbolize_keys(hash).merge(request: request, response: response))
52
- end
51
+ def == other
52
+ other.is_a?(Interaction) && to_hash == other.to_hash
53
+ end
53
54
 
54
- def to_hash
55
- {
56
- description: description,
57
- provider_state: provider_state,
58
- request: request.to_hash,
59
- response: response.to_hash
60
- }
61
- end
55
+ def eq? other
56
+ self == other
57
+ end
62
58
 
63
- def http?
64
- true
65
- end
59
+ def description_with_provider_state_quoted
60
+ provider_state ? "\"#{description}\" given \"#{provider_state}\"" : "\"#{description}\""
61
+ end
66
62
 
67
- def validate!
68
- raise Pact::InvalidInteractionError.new(self) unless description && request && response
69
- end
63
+ def request_modifies_resource_without_checking_response_body?
64
+ request.modifies_resource? && response.body_allows_any_value?
65
+ end
70
66
 
71
- def matches_criteria? criteria
72
- criteria.each do | key, value |
73
- unless match_criterion self.send(key.to_s), value
74
- return false
75
- end
76
- end
77
- true
78
- end
79
-
80
- def match_criterion target, criterion
81
- target == criterion || (criterion.is_a?(Regexp) && criterion.match(target))
82
- end
83
-
84
- def == other
85
- other.is_a?(Interaction) && to_hash == other.to_hash
86
- end
87
-
88
- def eq? other
89
- self == other
90
- end
91
-
92
- def description_with_provider_state_quoted
93
- provider_state ? "\"#{description}\" given \"#{provider_state}\"" : "\"#{description}\""
94
- end
95
-
96
- def request_modifies_resource_without_checking_response_body?
97
- request.modifies_resource? && response.body_allows_any_value?
98
- end
99
-
100
- def to_s
101
- to_hash.to_s
102
- end
103
- end
67
+ def to_s
68
+ to_hash.to_s
69
+ end
70
+ end
104
71
  end
@@ -0,0 +1,23 @@
1
+ require 'pact/specification_version'
2
+ require 'pact/consumer_contract/interaction_v2_parser'
3
+ require 'pact/consumer_contract/interaction_v3_parser'
4
+
5
+ module Pact
6
+ class InteractionParser
7
+ def self.call hash, options = {}
8
+ pact_specification_version = options[:pact_specification_version] || Pact::SpecificationVersion::NIL_VERSION
9
+ case pact_specification_version.major
10
+ when nil, 0, 1, 2 then parse_v2_interaction(hash, pact_specification_version: pact_specification_version)
11
+ else parse_v3_interaction(hash, pact_specification_version: pact_specification_version)
12
+ end
13
+ end
14
+
15
+ def self.parse_v2_interaction hash, options
16
+ InteractionV2Parser.call(hash, options)
17
+ end
18
+
19
+ def self.parse_v3_interaction hash, options
20
+ InteractionV3Parser.call(hash, options)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,28 @@
1
+ require 'pact/consumer_contract/request'
2
+ require 'pact/consumer_contract/response'
3
+ require 'pact/symbolize_keys'
4
+ require 'pact/matching_rules'
5
+ require 'pact/errors'
6
+
7
+ module Pact
8
+ class InteractionV2Parser
9
+
10
+ include SymbolizeKeys
11
+
12
+ def self.call hash, options
13
+ request = parse_request(hash['request'], options)
14
+ response = parse_response(hash['response'], options)
15
+ Interaction.new(symbolize_keys(hash).merge(request: request, response: response))
16
+ end
17
+
18
+ def self.parse_request request_hash, options
19
+ request_hash = Pact::MatchingRules.merge(request_hash, request_hash['matchingRules'], options)
20
+ Pact::Request::Expected.from_hash(request_hash)
21
+ end
22
+
23
+ def self.parse_response response_hash, options
24
+ response_hash = Pact::MatchingRules.merge(response_hash, response_hash['matchingRules'], options)
25
+ Pact::Response.from_hash(response_hash)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,61 @@
1
+ require 'pact/consumer_contract/request'
2
+ require 'pact/consumer_contract/response'
3
+ require 'pact/symbolize_keys'
4
+ require 'pact/matching_rules'
5
+ require 'pact/errors'
6
+ require 'pact/consumer_contract/string_with_matching_rules'
7
+
8
+ module Pact
9
+ class InteractionV3Parser
10
+
11
+ include SymbolizeKeys
12
+
13
+ def self.call hash, options
14
+ request = parse_request(hash['request'], options)
15
+ response = parse_response(hash['response'], options)
16
+ Interaction.new(symbolize_keys(hash).merge(request: request, response: response))
17
+ end
18
+
19
+ def self.parse_request request_hash, options
20
+ request_matching_rules = request_hash['matchingRules'] || {}
21
+ if request_hash['body'].is_a?(String)
22
+ parse_request_with_string_body(request_hash, request_matching_rules['body'] || {}, options)
23
+ else
24
+ parse_request_with_non_string_body(request_hash, request_matching_rules, options)
25
+ end
26
+ end
27
+
28
+ def self.parse_response response_hash, options
29
+ response_matching_rules = response_hash['matchingRules'] || {}
30
+ if response_hash['body'].is_a?(String)
31
+ parse_response_with_string_body(response_hash, response_matching_rules['body'] || {}, options)
32
+ else
33
+ parse_response_with_non_string_body(response_hash, response_matching_rules, options)
34
+ end
35
+ end
36
+
37
+ def self.parse_request_with_non_string_body request_hash, request_matching_rules, options
38
+ request_hash = request_hash.keys.each_with_object({}) do | key, new_hash |
39
+ new_hash[key] = Pact::MatchingRules.merge(request_hash[key], request_matching_rules[key], options)
40
+ end
41
+ Pact::Request::Expected.from_hash(request_hash)
42
+ end
43
+
44
+ def self.parse_response_with_non_string_body response_hash, response_matching_rules, options
45
+ response_hash = response_hash.keys.each_with_object({}) do | key, new_hash |
46
+ new_hash[key] = Pact::MatchingRules.merge(response_hash[key], response_matching_rules[key], options)
47
+ end
48
+ Pact::Response.from_hash(response_hash)
49
+ end
50
+
51
+ def self.parse_request_with_string_body request_hash, request_matching_rules, options
52
+ string_with_matching_rules = StringWithMatchingRules.new(request_hash['body'], options[:pact_specification_version], request_matching_rules)
53
+ Pact::Request::Expected.from_hash(request_hash.merge('body' => string_with_matching_rules))
54
+ end
55
+
56
+ def self.parse_response_with_string_body response_hash, response_matching_rules, options
57
+ string_with_matching_rules = StringWithMatchingRules.new(response_hash['body'], options[:pact_specification_version], response_matching_rules)
58
+ Pact::Response.from_hash(response_hash.merge('body' => string_with_matching_rules))
59
+ end
60
+ end
61
+ end
@@ -40,7 +40,7 @@ module Pact
40
40
  end
41
41
 
42
42
  private
43
-
43
+
44
44
  def local? uri
45
45
  !uri.start_with?("http://", "https://")
46
46
  end
@@ -74,7 +74,7 @@ module Pact
74
74
  end
75
75
  end
76
76
  end
77
-
77
+
78
78
  def get_remote(uri, options)
79
79
  request = Net::HTTP::Get.new(uri)
80
80
  request.basic_auth(options[:username], options[:password]) if options[:username]
@@ -0,0 +1,17 @@
1
+ module Pact
2
+ class StringWithMatchingRules < String
3
+ attr_reader :matching_rules
4
+ attr_reader :pact_specification_version
5
+
6
+ def initialize string, pact_specification_version, matching_rules = {}
7
+ super(string)
8
+ @matching_rules = matching_rules
9
+ @pact_specification_version = pact_specification_version
10
+ end
11
+
12
+ # How can we show the matching rules too?
13
+ def to_s
14
+ super
15
+ end
16
+ end
17
+ end
@@ -5,6 +5,7 @@ require 'pact/array_like'
5
5
  require 'pact/shared/request'
6
6
  require 'pact/consumer_contract/query_hash'
7
7
  require 'pact/consumer_contract/query_string'
8
+ require 'pact/consumer_contract/string_with_matching_rules'
8
9
 
9
10
  module Pact
10
11
  module Reification
@@ -35,6 +36,8 @@ module Pact
35
36
  "#{k}=#{escape(v)}"
36
37
  end
37
38
  }.join('&')
39
+ when Pact::StringWithMatchingRules
40
+ String.new(term)
38
41
  else
39
42
  term
40
43
  end
@@ -14,5 +14,5 @@ module Pact
14
14
  end
15
15
  end
16
16
 
17
- SpecificationVersion::NIL_VERSION = Pact::SpecificationVersion.new('')
17
+ SpecificationVersion::NIL_VERSION = Pact::SpecificationVersion.new('0')
18
18
  end
@@ -1,5 +1,5 @@
1
1
  module Pact
2
2
  module Support
3
- VERSION = "1.6.4"
3
+ VERSION = "1.6.5"
4
4
  end
5
5
  end
@@ -0,0 +1,3 @@
1
+ {
2
+ "foo": "bar"
3
+ }
@@ -3,6 +3,26 @@ require 'pact/consumer_contract'
3
3
 
4
4
  module Pact
5
5
  describe ConsumerContract do
6
+ describe "from_uri" do
7
+ context "when the URL does not point to a valid pact" do
8
+ subject { ConsumerContract.from_uri('spec/fixtures/not-a-pact.json') }
9
+
10
+ it "raises a helpful error" do
11
+ expect { subject }.to raise_error UnrecognizePactFormatError, /Please check that spec/
12
+ end
13
+ end
14
+ end
15
+
16
+ describe "from_hash" do
17
+ context "when the hash is not a valid pact" do
18
+ subject { ConsumerContract.from_hash({'foo' => 'bar'}) }
19
+
20
+ it "raises a helpful error" do
21
+ expect { subject }.to raise_error UnrecognizePactFormatError, 'This document does not use a recognised Pact format: {"foo"=>"bar"}'
22
+ end
23
+ end
24
+ end
25
+
6
26
  describe ".from_json" do
7
27
 
8
28
  let(:loaded_pact) { ConsumerContract.from_json(string) }
@@ -0,0 +1,62 @@
1
+ require 'pact/consumer_contract/interaction_parser'
2
+
3
+ module Pact
4
+ describe InteractionParser do
5
+ describe ".call" do
6
+
7
+ let(:request) { {method: 'get', path: 'path'} }
8
+ let(:response) { {} }
9
+
10
+ context "when providerState has been used instead of provider_state" do
11
+
12
+ subject { InteractionParser.call('response' => response, 'request' => request, 'providerState' => 'some state') }
13
+
14
+ it "recognises the provider state" do
15
+ expect(subject.provider_state).to eq 'some state'
16
+ end
17
+ end
18
+
19
+ context "when there are matching rules" do
20
+ let(:hash) { load_json_fixture 'interaction-with-matching-rules.json' }
21
+
22
+ subject { InteractionParser.call(hash, pact_specification_version: Pact::SpecificationVersion.new("2")) }
23
+
24
+ it "merges the rules with the example for the request" do
25
+ expect(subject.request.body['name']).to be_instance_of(Pact::Term)
26
+ end
27
+
28
+ it "merges the rules with the example for the response" do
29
+ expect(subject.response.body['_links']['self']['href']).to be_instance_of(Pact::Term)
30
+ end
31
+ end
32
+
33
+ context "when the request body is a String" do
34
+ let(:hash) { { 'request' => request, 'response' => response } }
35
+ subject { InteractionParser.call(hash, pact_specification_version: Pact::SpecificationVersion.new("3")) }
36
+
37
+ let(:request) { { 'method' => 'get', 'path' => 'path' , 'body' => "<xml></xml>", 'matchingRules' => {"body" => {"foo" => "bar"} } } }
38
+
39
+ it "returns an interaction with an StringWithMatchingRules in the request" do
40
+ expect(subject.request.body).to be_a(Pact::StringWithMatchingRules)
41
+ expect(subject.request.body).to eq "<xml></xml>"
42
+ expect(subject.request.body.matching_rules).to eq "foo" => "bar"
43
+ expect(subject.request.body.pact_specification_version).to eq Pact::SpecificationVersion.new("3")
44
+ end
45
+ end
46
+
47
+ context "when the response body is a String" do
48
+ let(:hash) { { 'request' => request, 'response' => response } }
49
+ subject { InteractionParser.call(hash, pact_specification_version: Pact::SpecificationVersion.new("3")) }
50
+
51
+ let(:response) { { 'status' => '200', 'body' => "<xml></xml>", 'matchingRules' => {"body" => {"foo" => "bar"} } } }
52
+
53
+ it "returns an interaction with an StringWithMatchingRules in the response" do
54
+ expect(subject.response.body).to be_a(Pact::StringWithMatchingRules)
55
+ expect(subject.response.body).to eq "<xml></xml>"
56
+ expect(subject.response.body.matching_rules).to eq "foo" => "bar"
57
+ expect(subject.response.body.pact_specification_version).to eq Pact::SpecificationVersion.new("3")
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -52,30 +52,7 @@ module Pact
52
52
  end
53
53
  end
54
54
 
55
- describe "from_hash" do
56
- context "when providerState has been used instead of provider_state" do
57
55
 
58
- subject { Interaction.from_hash('response' => response, 'request' => request, 'providerState' => 'some state') }
59
-
60
- it "recognises the provider state" do
61
- expect(subject.provider_state).to eq 'some state'
62
- end
63
- end
64
-
65
- context "when there are matching rules" do
66
- let(:hash) { load_json_fixture 'interaction-with-matching-rules.json' }
67
-
68
- subject { Interaction.from_hash hash, pact_specification_version: Pact::SpecificationVersion.new("2") }
69
-
70
- it "merges the rules with the example for the request" do
71
- expect(subject.request.body['name']).to be_instance_of(Pact::Term)
72
- end
73
-
74
- it "merges the rules with the example for the response" do
75
- expect(subject.response.body['_links']['self']['href']).to be_instance_of(Pact::Term)
76
- end
77
- end
78
- end
79
56
 
80
57
  describe "request_modifies_resource_without_checking_response_body?" do
81
58
 
@@ -160,5 +160,13 @@ module Pact
160
160
  expect(subject).to eq("param=1&param=1")
161
161
  end
162
162
  end
163
+
164
+ context "with a StringWithMatchingRules" do
165
+ subject { Reification.from_term(StringWithMatchingRules.new("foo", Pact::SpecificationVersion.new("3"), {}))}
166
+
167
+ it "returns a String" do
168
+ expect(subject.class).to be String
169
+ end
170
+ end
163
171
  end
164
172
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.4
4
+ version: 1.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Fraser
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2018-07-14 00:00:00.000000000 Z
15
+ date: 2018-07-24 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: randexp
@@ -270,6 +270,9 @@ files:
270
270
  - lib/pact/consumer_contract/headers.rb
271
271
  - lib/pact/consumer_contract/http_consumer_contract_parser.rb
272
272
  - lib/pact/consumer_contract/interaction.rb
273
+ - lib/pact/consumer_contract/interaction_parser.rb
274
+ - lib/pact/consumer_contract/interaction_v2_parser.rb
275
+ - lib/pact/consumer_contract/interaction_v3_parser.rb
273
276
  - lib/pact/consumer_contract/pact_file.rb
274
277
  - lib/pact/consumer_contract/query.rb
275
278
  - lib/pact/consumer_contract/query_hash.rb
@@ -278,6 +281,7 @@ files:
278
281
  - lib/pact/consumer_contract/response.rb
279
282
  - lib/pact/consumer_contract/service_consumer.rb
280
283
  - lib/pact/consumer_contract/service_provider.rb
284
+ - lib/pact/consumer_contract/string_with_matching_rules.rb
281
285
  - lib/pact/errors.rb
282
286
  - lib/pact/helpers.rb
283
287
  - lib/pact/logging.rb
@@ -327,6 +331,7 @@ files:
327
331
  - script/release.sh
328
332
  - script/update-pact-specification-v2
329
333
  - spec/fixtures/interaction-with-matching-rules.json
334
+ - spec/fixtures/not-a-pact.json
330
335
  - spec/fixtures/pact-http-v2.json
331
336
  - spec/fixtures/pact-http-v3.json
332
337
  - spec/integration/matching_rules_extract_and_merge_spec.rb
@@ -338,6 +343,7 @@ files:
338
343
  - spec/lib/pact/consumer_contract/file_name_spec.rb
339
344
  - spec/lib/pact/consumer_contract/headers_spec.rb
340
345
  - spec/lib/pact/consumer_contract/http_consumer_contract_parser_spec.rb
346
+ - spec/lib/pact/consumer_contract/interaction_parser_spec.rb
341
347
  - spec/lib/pact/consumer_contract/interaction_spec.rb
342
348
  - spec/lib/pact/consumer_contract/pact_file_spec.rb
343
349
  - spec/lib/pact/consumer_contract/query_hash_spec.rb
@@ -430,6 +436,7 @@ specification_version: 4
430
436
  summary: Shared code for Pact gems
431
437
  test_files:
432
438
  - spec/fixtures/interaction-with-matching-rules.json
439
+ - spec/fixtures/not-a-pact.json
433
440
  - spec/fixtures/pact-http-v2.json
434
441
  - spec/fixtures/pact-http-v3.json
435
442
  - spec/integration/matching_rules_extract_and_merge_spec.rb
@@ -441,6 +448,7 @@ test_files:
441
448
  - spec/lib/pact/consumer_contract/file_name_spec.rb
442
449
  - spec/lib/pact/consumer_contract/headers_spec.rb
443
450
  - spec/lib/pact/consumer_contract/http_consumer_contract_parser_spec.rb
451
+ - spec/lib/pact/consumer_contract/interaction_parser_spec.rb
444
452
  - spec/lib/pact/consumer_contract/interaction_spec.rb
445
453
  - spec/lib/pact/consumer_contract/pact_file_spec.rb
446
454
  - spec/lib/pact/consumer_contract/query_hash_spec.rb