pact_broker 2.95.1 → 2.96.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
  SHA256:
3
- metadata.gz: f65cf2bd6eb2b3f0f7fd727e61fc73005817200f8e72bbab574493e4ea9b9ba3
4
- data.tar.gz: aac1fb501fc5624227e63d424c8982f266fa0a9a2d80b1184844193347ba6724
3
+ metadata.gz: e08b2792c380c3066af4817bc219cc3dc134860b2769a6608e3d625269d53f7d
4
+ data.tar.gz: be1cefe3b370f3b227bff1330af71dd5a0adcfd609a7ae4fd1d1b144c76fe7a1
5
5
  SHA512:
6
- metadata.gz: 8272759e5880069606e56bea3893055df49543b76b237d7511ce8fa21c0414f1a0e593e98ed1f9e67c4b9048b4da1c2d3ef938b0dfea182406cda696111c2bc4
7
- data.tar.gz: 426a032f0016c8952934fbf630420be42accf192baeaff3bd2651aefa75170d055d8a4ed125640a7b3cad124cf5a461d7c930e5d289f4a6e5bd666366661940a
6
+ metadata.gz: 24dbb88676eb61e1e5809b54ef9cb6cae4d33093beefbe1e9140c0e43f68561aa0ef765cc176e5da04415964410dbc4f18b2393f6426a2b40dbf0826d86a5ff4
7
+ data.tar.gz: d3fdd055d91ba7b563b258c49fb666a17518432a72c8faa818ffc5dfd2c20a6095c82390ccc71c5c1f1a888e8aa7319d530d0d6c3fefe83170a5fab4320f724d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ <a name="v2.96.0"></a>
2
+ ### v2.96.0 (2022-03-21)
3
+
4
+ #### Features
5
+
6
+ * print final value of configuration attribute rather than source value ([9c0fd3c4](/../../commit/9c0fd3c4))
7
+
8
+ #### Bug Fixes
9
+
10
+ * ensure database and basic auth credentials are not coerced to arrays if they contain commas ([5bce7ce4](/../../commit/5bce7ce4))
11
+ * allow lazy loading when finding individual pacts ([04e03cb2](/../../commit/04e03cb2))
12
+
1
13
  <a name="v2.95.1"></a>
2
14
  ### v2.95.1 (2022-03-18)
3
15
 
@@ -20,6 +20,13 @@ module PactBroker
20
20
 
21
21
  sensitive_values(:basic_auth_password, :basic_auth_read_only_password)
22
22
 
23
+ coerce_types(
24
+ basic_auth_username: :string,
25
+ basic_auth_password: :string,
26
+ basic_auth_read_only_username: :string,
27
+ basic_auth_read_only_password: :string
28
+ )
29
+
23
30
  def basic_auth_credentials_provided?
24
31
  basic_auth_username&.not_blank? && basic_auth_password&.not_blank?
25
32
  end
@@ -31,6 +31,11 @@ module PactBroker
31
31
  database_connection_validation_timeout: nil
32
32
  )
33
33
 
34
+ coerce_types(
35
+ database_username: :string,
36
+ database_password: :string
37
+ )
38
+
34
39
  def database_configuration
35
40
  database_credentials
36
41
  .merge(
@@ -1,8 +1,11 @@
1
1
  require "uri"
2
+ require "pact_broker/hash_refinements"
2
3
 
3
4
  module PactBroker
4
5
  module Config
5
6
  module RuntimeConfigurationLoggingMethods
7
+ using PactBroker::HashRefinements
8
+
6
9
  module ClassMethods
7
10
  def sensitive_values(*values)
8
11
  @sensitive_values ||= []
@@ -19,8 +22,11 @@ module PactBroker
19
22
  end
20
23
 
21
24
  module InstanceMethods
25
+ # base_url raises a not implemented error
22
26
  def log_configuration(logger)
23
- to_source_trace.sort_by { |key, _| key }.each { |key, value| log_config_inner(key, value, logger) }
27
+ to_source_trace.without("base_url").each_with_object({})do | (key, details), new_hash |
28
+ new_hash[key] = details.merge(value: self.send(key.to_sym))
29
+ end.sort_by { |key, _| key }.each { |key, value| log_config_inner(key, value, logger) }
24
30
  end
25
31
 
26
32
  def log_config_inner(key, value, logger)
@@ -29,7 +35,7 @@ module PactBroker
29
35
  elsif self.class.sensitive_value?(key)
30
36
  logger.info "#{key}=#{redact(key, value[:value])} source=#{value[:source]}"
31
37
  else
32
- logger.info "#{key}=#{value[:value]} source=#{value[:source]}"
38
+ logger.info "#{key}=#{value[:value].inspect} source=#{value[:source]}"
33
39
  end
34
40
  end
35
41
  private :log_config_inner
@@ -15,10 +15,6 @@ module PactBroker
15
15
  RequestStore.store[:pact_broker_configuration] = configuration
16
16
  end
17
17
 
18
- def self.with_runtime_configuration_overrides(overrides, &block)
19
- self.configuration.with_runtime_configuration_overrides(overrides, &block)
20
- end
21
-
22
18
  # @private, for testing only
23
19
  def self.reset_configuration
24
20
  RequestStore.store[:pact_broker_configuration] = Configuration.default_configuration
@@ -82,14 +78,6 @@ module PactBroker
82
78
  config
83
79
  end
84
80
 
85
- def with_runtime_configuration_overrides(overrides)
86
- original_runtime_configuration = runtime_configuration
87
- self.runtime_configuration = override_runtime_configuration!(overrides)
88
- yield
89
- ensure
90
- self.runtime_configuration = original_runtime_configuration
91
- end
92
-
93
81
  def override_runtime_configuration!(overrides)
94
82
  new_runtime_configuration = runtime_configuration.dup
95
83
  valid_overrides = {}
@@ -108,7 +108,7 @@ module PactBroker
108
108
  # rubocop: disable Metrics/CyclomaticComplexity
109
109
  def self.latest_verification_for_pseudo_branch(pact_publication, is_overall_latest, latest_verifications_for_cv_tags, tags_option, options)
110
110
  if options[:view] == "branch" || (options[:view] == "all" && pact_publication.consumer_version.branch_heads.any?)
111
- pact_publication.latest_verification || pact_publication.latest_verification_for_consumer_branches(forbid_lazy_load: false)
111
+ pact_publication.latest_verification || pact_publication.latest_verification_for_consumer_branches
112
112
  elsif tags_option == true
113
113
  latest_verifications_for_cv_tags
114
114
  .select{ | v | v.consumer_id == pact_publication.consumer_id && v.provider_id == pact_publication.provider_id && pact_publication.head_pact_tags.collect(&:name).include?(v.consumer_version_tag_name) }
@@ -9,6 +9,32 @@ module PactBroker
9
9
  .latest_for_consumer_tag(consumer_version_tag_names)
10
10
  .from_self.order_by(:tag_name)
11
11
  }
12
+
13
+ LATEST_VERIFICATION_FOR_CONSUMER_BRANCHES = lambda {
14
+ bv_pp_join = {
15
+ Sequel[:branch_versions][:version_id] => Sequel[:pact_publications][:consumer_version_id],
16
+ Sequel[:pact_publications][:provider_id] => provider_id
17
+ }
18
+
19
+ verifications_join = {
20
+ Sequel[:verifications][:pact_version_id] => Sequel[:pact_publications][:pact_version_id]
21
+ }
22
+
23
+ branch_ids = PactBroker::Versions::BranchVersion
24
+ .select(:branch_id)
25
+ .where(version_id: consumer_version_id)
26
+
27
+
28
+ latest_verification_id = PactBroker::Versions::BranchVersion
29
+ .select(Sequel[:verifications][:id])
30
+ .where(Sequel[:branch_versions][:branch_id] => branch_ids)
31
+ .join(:pact_publications, bv_pp_join)
32
+ .join(:verifications, verifications_join)
33
+ .order(Sequel.desc(Sequel[:verifications][:id]))
34
+ .limit(1)
35
+
36
+ PactBroker::Domain::Verification.where(id: latest_verification_id)
37
+ }
12
38
  end
13
39
  end
14
40
  end
@@ -34,43 +34,19 @@ module PactBroker
34
34
  read_only: true,
35
35
  key: :id,
36
36
  primary_key: :id,
37
- dataset: lambda {
38
-
39
- bv_pp_join = {
40
- Sequel[:branch_versions][:version_id] => Sequel[:pact_publications][:consumer_version_id],
41
- Sequel[:pact_publications][:provider_id] => provider_id
42
- }
43
-
44
- verifications_join = {
45
- Sequel[:verifications][:pact_version_id] => Sequel[:pact_publications][:pact_version_id]
46
- }
47
-
48
- branch_ids = PactBroker::Versions::BranchVersion
49
- .select(:branch_id)
50
- .where(version_id: consumer_version_id)
51
-
52
-
53
- latest_verification_id = PactBroker::Versions::BranchVersion
54
- .select(Sequel[:verifications][:id])
55
- .where(Sequel[:branch_versions][:branch_id] => branch_ids)
56
- .join(:pact_publications, bv_pp_join)
57
- .join(:verifications, verifications_join)
58
- .order(Sequel.desc(Sequel[:verifications][:id]))
59
- .limit(1)
60
-
61
- PactBroker::Domain::Verification.where(id: latest_verification_id)
62
- },
37
+ forbid_lazy_load: false,
38
+ dataset: PactBroker::Pacts::LazyLoaders::LATEST_VERIFICATION_FOR_CONSUMER_BRANCHES,
63
39
  eager_loader: proc do | _ |
64
40
  raise NotImplementedError
65
41
  end
66
42
  )
67
43
 
68
-
69
44
  one_to_many(:head_pact_publications_for_tags,
70
45
  class: PactPublication,
71
46
  read_only: true,
72
47
  dataset: PactBroker::Pacts::LazyLoaders::HEAD_PACT_PUBLICATIONS_FOR_TAGS,
73
- eager_loader: PactBroker::Pacts::EagerLoaders::HeadPactPublicationsForTags
48
+ eager_loader: PactBroker::Pacts::EagerLoaders::HeadPactPublicationsForTags,
49
+ forbid_lazy_load: false
74
50
  )
75
51
 
76
52
  plugin :upsert, identifying_columns: [:consumer_version_id, :provider_id, :revision_number]
@@ -250,26 +250,28 @@ module PactBroker
250
250
  if consumer_version_number && !pact_version_sha
251
251
  pact_publication_by_consumer_version
252
252
  .eager(:tags)
253
+ .all_allowing_lazy_load
253
254
  .collect(&:to_domain_with_content).first
254
255
  elsif pact_version_sha && !consumer_version_number
255
256
  latest_pact_publication_by_sha
256
257
  .eager(:tags)
257
258
  .collect(&:to_domain_with_content).first
258
259
  elsif consumer_version_number && pact_version_sha
259
- pact_publication = pact_publication_by_consumer_version.all.first
260
- pact_publication&.allow_lazy_load
260
+ pact_publication = pact_publication_by_consumer_version.all_allowing_lazy_load.first
261
261
  if pact_publication && pact_publication.pact_version.sha == pact_version_sha
262
262
  pact_publication.tags
263
263
  pact_publication.to_domain_with_content
264
264
  else
265
265
  latest_pact_publication_by_sha
266
266
  .eager(:tags)
267
+ .all_allowing_lazy_load
267
268
  .collect(&:to_domain_with_content).first
268
269
  end
269
270
  else
270
271
  pact_publication_by_consumer_version
271
272
  .eager(:tags)
272
273
  .reverse_order(:consumer_version_order, :revision_number)
274
+ .all_allowing_lazy_load
273
275
  .collect(&:to_domain_with_content).first
274
276
  end
275
277
  end
@@ -10,6 +10,10 @@ module PactBroker
10
10
  all.each{ | row | row.forbid_lazy_load if row.respond_to?(:forbid_lazy_load) }
11
11
  end
12
12
 
13
+ def all_allowing_lazy_load
14
+ all.each{ | row | row.allow_lazy_load if row.respond_to?(:allow_lazy_load) }
15
+ end
16
+
13
17
  def name_like column_name, value
14
18
  if PactBroker.configuration.use_case_sensitive_resource_names
15
19
  if mysql?
@@ -1,3 +1,3 @@
1
1
  module PactBroker
2
- VERSION = "2.95.1"
2
+ VERSION = "2.96.0"
3
3
  end
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.95.1
4
+ version: 2.96.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bethany Skurrie