pact_broker 2.59.1 → 2.59.2

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
  SHA256:
3
- metadata.gz: 5b6703933e244f375a0ebc2a9be4ecc7d9baa65c1f72950e7ee9bd4bfc7fca6c
4
- data.tar.gz: 3d2e0906da58faeb0e882eb78cc4e255d52d1efd7a8ee19d7feeb8d8a31b00e3
3
+ metadata.gz: f1933f8f7902c43ed7d9db7c022a66f2569c6301dec2c8ac767e1da7b05f70b5
4
+ data.tar.gz: 40d82183c3a94b2bfc2bfa37a9aee12cc27729e1c3a1b3191df980c2ba3ad192
5
5
  SHA512:
6
- metadata.gz: 9022f0a89698c8cb3d648a895040059e908c7199489cc56e9183650a9b398592c5d1f1aff3394444e2d40417a02d02f621691c8db7e4de6500582a2ce4704c52
7
- data.tar.gz: ba3ea7d815830ae6e35339190909e5e2d06c799c69665ce01563bd952804961f54ef2a9424ab3cc8c323d2701abf305231d9796d4c86d9bd930f528981891dc9
6
+ metadata.gz: 5078b560d3d0abe897572f35276b3aec1c6752026ba849a9b61517def382ea0d936731a6b2f59801b0101cab7bde636ef3e9e5e7afe9524e13c3def552f48ded
7
+ data.tar.gz: 6fc016ea9e10bcbad4f78d60b93a81b5d0aab2ffbfef9d222a094e0348f632680995bce488abe9fefe55cad745afafef323ce3c972db3e78a7e1f6759d222f6e
@@ -1,3 +1,11 @@
1
+ <a name="v2.59.2"></a>
2
+ ### v2.59.2 (2020-08-06)
3
+
4
+ #### Bug Fixes
5
+
6
+ * gracefully handle contracts without interactions or messages in deployment status warnings ([6c223e69](/../../commit/6c223e69))
7
+ * add missing info level log for business level errors ([80a895bf](/../../commit/80a895bf))
8
+
1
9
  <a name="v2.59.1"></a>
2
10
  ### v2.59.1 (2020-08-04)
3
11
 
@@ -5,11 +5,8 @@ module PactBroker
5
5
  module Api
6
6
  module Resources
7
7
  class ErrorHandler
8
-
9
8
  include PactBroker::Logging
10
9
 
11
- WARNING_ERROR_CLASSES = [Sequel::ForeignKeyConstraintViolation]
12
-
13
10
  def self.call e, request, response
14
11
  error_reference = generate_error_reference
15
12
  if log_as_warning?(e)
@@ -17,6 +14,7 @@ module PactBroker
17
14
  elsif reportable?(e)
18
15
  log_error(e, "Error reference #{error_reference}")
19
16
  report(e, error_reference, request)
17
+ else
20
18
  logger.info("Error reference #{error_reference}", e)
21
19
  end
22
20
  response.body = response_body_hash(e, error_reference).to_json
@@ -31,7 +29,7 @@ module PactBroker
31
29
  end
32
30
 
33
31
  def self.log_as_warning?(e)
34
- WARNING_ERROR_CLASSES.any? { |clazz| e.is_a?(clazz) }
32
+ PactBroker.configuration.warning_error_classes.any? { |clazz| e.is_a?(clazz) }
35
33
  end
36
34
 
37
35
  def self.display_message(e, error_reference)
@@ -31,12 +31,14 @@ module PactBroker
31
31
  :webhook_host_whitelist,
32
32
  :base_equality_only_on_content_that_affects_verification_results,
33
33
  :seed_example_data,
34
- :badge_provider_mode
34
+ :badge_provider_mode,
35
+ :warning_error_class_names
35
36
  ]
36
37
 
37
38
  attr_accessor :base_url, :log_dir, :database_connection, :auto_migrate_db, :auto_migrate_db_data, :allow_missing_migration_files, :example_data_seeder, :seed_example_data, :use_hal_browser, :html_pact_renderer, :use_rack_protection
38
39
  attr_accessor :validate_database_connection_config, :enable_diagnostic_endpoints, :version_parser, :sha_generator
39
40
  attr_accessor :use_case_sensitive_resource_names, :order_versions_by_date
41
+ attr_accessor :warning_error_class_names
40
42
  attr_accessor :check_for_potential_duplicate_pacticipant_names
41
43
  attr_accessor :webhook_retry_schedule
42
44
  attr_reader :webhook_http_method_whitelist, :webhook_scheme_whitelist, :webhook_host_whitelist
@@ -115,6 +117,7 @@ module PactBroker
115
117
  require 'pact_broker/api/resources/default_base_resource'
116
118
  PactBroker::Api::Resources::DefaultBaseResource
117
119
  }
120
+ config.warning_error_class_names = ['Sequel::ForeignKeyConstraintViolation']
118
121
  config
119
122
  end
120
123
 
@@ -228,6 +231,12 @@ module PactBroker
228
231
  @webhook_host_whitelist = parse_space_delimited_string_list_property('webhook_host_whitelist', webhook_host_whitelist)
229
232
  end
230
233
 
234
+ def warning_error_classes
235
+ warning_error_class_names.collect do | class_name |
236
+ Object.const_get(class_name)
237
+ end
238
+ end
239
+
231
240
  private
232
241
 
233
242
  def parse_space_delimited_string_list_property property_name, property_value
@@ -195,7 +195,7 @@ module PactBroker
195
195
  InteractionsMissingVerifications.new(selector_for(row.consumer_name), selector_for(row.provider_name), row.verification.interactions_missing_test_results)
196
196
  end
197
197
  rescue StandardError => e
198
- log_error(e, "Error determining if there were missing interaction verifications")
198
+ logger.warn("Error determining if there were missing interaction verifications", e)
199
199
  nil
200
200
  end
201
201
  end.compact.tap { |it| report_missing_interaction_verifications(it) if it.any? }
@@ -32,7 +32,8 @@ module PactBroker
32
32
  end
33
33
 
34
34
  def interactions_missing_test_results
35
- interactions.reject do | interaction |
35
+ return [] unless messages_or_interactions
36
+ messages_or_interactions.reject do | interaction |
36
37
  interaction['tests']&.any?
37
38
  end
38
39
  end
@@ -1,3 +1,3 @@
1
1
  module PactBroker
2
- VERSION = '2.59.1'
2
+ VERSION = '2.59.2'
3
3
  end
@@ -5,7 +5,6 @@ module PactBroker
5
5
  module Resources
6
6
  describe ErrorHandler do
7
7
  describe "call" do
8
-
9
8
  before do
10
9
  allow(ErrorHandler).to receive(:logger).and_return(logger)
11
10
  allow(SecureRandom).to receive(:urlsafe_base64).and_return("bYWfn-+yWPlf")
@@ -45,6 +44,24 @@ module PactBroker
45
44
  subject
46
45
  end
47
46
 
47
+ context "when the error class is in the warning_error_classes list" do
48
+ let(:error) { Sequel::ForeignKeyConstraintViolation.new }
49
+
50
+ it "logs at warn so as not to wake everyone up in the middle of the night" do
51
+ expect(logger).to receive(:warn).with(/bYWfnyWPlf/, error)
52
+ subject
53
+ end
54
+ end
55
+
56
+ context "when the error is not reportable and not a warning level" do
57
+ let(:error) { PactBroker::Error.new('foo') }
58
+
59
+ it "logs at info" do
60
+ expect(logger).to receive(:info).with(/bYWfnyWPlf/, error)
61
+ subject
62
+ end
63
+ end
64
+
48
65
  context "when show_backtrace_in_error_response? is true" do
49
66
  before do
50
67
  allow(PactBroker.configuration).to receive(:show_backtrace_in_error_response?).and_return(true)
@@ -308,6 +308,14 @@ module PactBroker
308
308
  expect(subject.interactions_missing_test_results.count).to eq 1
309
309
  end
310
310
 
311
+ context "with no interactions" do
312
+ let(:pact_content) { {} }
313
+
314
+ it "does not blow up" do
315
+ expect(subject.interactions_missing_test_results.count).to eq 0
316
+ end
317
+ end
318
+
311
319
  context "with nil test results" do
312
320
  let(:test_results) { nil }
313
321
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.59.1
4
+ version: 2.59.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bethany Skurrie
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-08-04 00:00:00.000000000 Z
13
+ date: 2020-08-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty