pact_broker 2.116.0 → 2.117.1

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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/Gemfile +10 -5
  4. data/lib/pact_broker/api/contracts/dry_validation_errors_formatter.rb +3 -0
  5. data/lib/pact_broker/api/contracts/pacts_for_verification_json_query_schema.rb +1 -1
  6. data/lib/pact_broker/api/decorators/version_decorator.rb +3 -1
  7. data/lib/pact_broker/api/resources/clean.rb +1 -1
  8. data/lib/pact_broker/api/resources/index.rb +48 -0
  9. data/lib/pact_broker/api/resources/latest_provider_pacts_for_branch.rb +26 -0
  10. data/lib/pact_broker/api/resources/pact_versions_for_branch.rb +15 -1
  11. data/lib/pact_broker/api/resources/provider_pacts_for_consumer_branch.rb +47 -0
  12. data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +2 -2
  13. data/lib/pact_broker/api/resources/provider_states.rb +9 -3
  14. data/lib/pact_broker/api.rb +9 -0
  15. data/lib/pact_broker/app.rb +0 -1
  16. data/lib/pact_broker/config/runtime_configuration.rb +1 -1
  17. data/lib/pact_broker/doc/views/index/branch-pact-versions.markdown +7 -0
  18. data/lib/pact_broker/doc/views/index/latest-branch-pact-versions.markdown +7 -0
  19. data/lib/pact_broker/doc/views/index/latest-main-branch-pact-versions.markdown +7 -0
  20. data/lib/pact_broker/doc/views/index/latest-provider-pacts-with-branch.markdown +7 -0
  21. data/lib/pact_broker/doc/views/index/latest-provider-pacts-with-main-branch.markdown +7 -0
  22. data/lib/pact_broker/doc/views/index/latest-provider-pacts-with-tag.markdown +3 -1
  23. data/lib/pact_broker/doc/views/index/main-branch-pact-versions.markdown +7 -0
  24. data/lib/pact_broker/doc/views/index/provider-pacts-with-branch.markdown +7 -0
  25. data/lib/pact_broker/doc/views/index/provider-pacts-with-main-branch.markdown +7 -0
  26. data/lib/pact_broker/doc/views/index/provider-pacts-with-tag.markdown +2 -0
  27. data/lib/pact_broker/doc/views/pact/provider-states.markdown +10 -3
  28. data/lib/pact_broker/pacts/pact_publication.rb +1 -1
  29. data/lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb +8 -0
  30. data/lib/pact_broker/pacts/provider_state_service.rb +10 -2
  31. data/lib/pact_broker/pacts/repository.rb +30 -0
  32. data/lib/pact_broker/pacts/service.rb +20 -0
  33. data/lib/pact_broker/tasks/clean_task.rb +1 -0
  34. data/lib/pact_broker/ui/controllers/can_i_deploy.rb +2 -2
  35. data/lib/pact_broker/ui/controllers/clusters.rb +1 -1
  36. data/lib/pact_broker/ui/controllers/dashboard.rb +2 -2
  37. data/lib/pact_broker/ui/controllers/error_test.rb +1 -1
  38. data/lib/pact_broker/ui/controllers/groups.rb +1 -1
  39. data/lib/pact_broker/ui/controllers/index.rb +2 -2
  40. data/lib/pact_broker/ui/controllers/matrix.rb +3 -3
  41. data/lib/pact_broker/ui/controllers/pacts.rb +1 -1
  42. data/lib/pact_broker/ui/view_models/index_item.rb +1 -1
  43. data/lib/pact_broker/ui/view_models/index_item_branch_head.rb +1 -1
  44. data/lib/pact_broker/ui/view_models/index_item_provider_branch_head.rb +1 -1
  45. data/lib/pact_broker/ui/view_models/index_items.rb +1 -1
  46. data/lib/pact_broker/ui/view_models/matrix_branch.rb +1 -1
  47. data/lib/pact_broker/ui/view_models/matrix_deployed_version.rb +1 -1
  48. data/lib/pact_broker/ui/view_models/matrix_line.rb +1 -1
  49. data/lib/pact_broker/ui/view_models/matrix_lines.rb +2 -2
  50. data/lib/pact_broker/ui/view_models/matrix_released_version.rb +1 -1
  51. data/lib/pact_broker/ui/view_models/matrix_tag.rb +1 -1
  52. data/lib/pact_broker/version.rb +1 -1
  53. data/pact_broker.gemspec +8 -4
  54. metadata +93 -15
  55. data/lib/pact_broker/dashboard/service.rb +0 -0
  56. data/lib/pact_broker/ui/view_models/clusters.rb +0 -0
  57. /data/lib/pact_broker/config/{basic_auth_configuration.rb → runtime_configuration_basic_auth_methods.rb} +0 -0
  58. /data/lib/pact_broker/tags/{head_pact_tags.rb → head_pact_tag.rb} +0 -0
  59. /data/lib/pact_broker/ui/controllers/{base_controller.rb → base.rb} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b6fe2169fc6d5b3554dc0da5de9e5e73fddbb186fb56a0bede25809d7ef3254
4
- data.tar.gz: 5c0e050b04a5d478b46b016a8bda1eae907457c4d7dac7985ca6c8c1c4b25226
3
+ metadata.gz: c52b0ab9c14e0eff3a49143fa09d4205ba9c1d9c16e96fd8e88bc74fb2b798d2
4
+ data.tar.gz: bf44ad81e1676d10d8af2912875726cdc50e91bbfbd10b02b62d689d7590fbaa
5
5
  SHA512:
6
- metadata.gz: 3fa91a39b55d0d3783e9ac6ce873bc1c2b88434409d6b64e49aff53747b1d776806fedf1342285741883bcf6aebe11e7bdca79fe91fc2ac1ec5fbe29d3fb4d31
7
- data.tar.gz: 6fc4a2ff15cfb1a0cda2b83d73317c0ff28b835c1bc1205c68ebfcea52428c619c5439c96ad35d2dcdfd06aeda670c2ebc4c8ad6bc4f7f68dd3d9e720712b67b
6
+ metadata.gz: 0f9ef0b473f58fd3b60c4c6e61125041bf93002d5cff4fe03f589583ca4bff47e719a23bd14220c18a78e0ce662cb0dfcda0947c94b253d96c7caf4bfdb55238
7
+ data.tar.gz: 8558c5f412cd6bbbdf21b1af7e235c7f3f78b6e871a7584d7654319758043c7652d341cab21e4b00c1f6014bd5e950bd7484a4eb1ec5e384dcb09237d8e0db2d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,31 @@
1
+ <a name="v2.117.1"></a>
2
+ ### v2.117.1 (2025-11-02)
3
+
4
+ #### Bug Fixes
5
+
6
+ * dashboard loading after zeitwerk rename prep ([13112e2f](/../../commit/13112e2f))
7
+
8
+ <a name="v2.117.0"></a>
9
+ ### v2.117.0 (2025-10-28)
10
+
11
+ #### Features
12
+
13
+ * add provider pacts by branch endpoints ([0ccff2ec](/../../commit/0ccff2ec))
14
+ * PACT-4511/updated matrix decorator to return app instance for an env if present (#838) ([8bc24e72](/../../commit/8bc24e72))
15
+ * support provider states by branch/env ([f4db396f](/../../commit/f4db396f))
16
+
17
+ #### Bug Fixes
18
+
19
+ * update hal relations for provider pacts ([b6e8e8e3](/../../commit/b6e8e8e3))
20
+ * drop pact-support pin ([3c7eb4c5](/../../commit/3c7eb4c5))
21
+ * fixed the text fixtures (#826) ([28035c27](/../../commit/28035c27))
22
+
23
+ * **test**
24
+ * update expectation of webhook_certificates source format dependant on rb version ([5364c1b1](/../../commit/5364c1b1))
25
+
26
+ * **deps**
27
+ * add mutex_m/csv/ostruct/pstore ([075d2522](/../../commit/075d2522))
28
+
1
29
  <a name="v2.116.0"></a>
2
30
  ### v2.116.0 (2025-07-04)
3
31
 
data/Gemfile CHANGED
@@ -9,8 +9,7 @@ gem "conventional-changelog", "~>1.3"
9
9
  gem "bump", "~> 0.5"
10
10
  gem "padrino-core", ">= 0.16.0.pre3", require: false
11
11
  gem "rackup", "~> 2.2"
12
- # TODO: using release-candidate of pact-support is release remove this and restore to gemspec.
13
- gem "pact-support", github: "pact-foundation/pact-support", branch: "release-1.21.3.rc1"
12
+ gem "thor", "~> 1.4" # thor is secondary dependency but bumping here to avoid CVEs
14
13
 
15
14
  group :development do
16
15
  gem "pry-byebug"
@@ -22,7 +21,13 @@ end
22
21
 
23
22
  group :test do
24
23
  gem "simplecov", :require => false
25
- gem "pact", "~>1.14"
24
+ if ENV["X_PACT_DEVELOPMENT"] == "true"
25
+ gem "pact", path: "../pact-ruby"
26
+ gem "pact-ffi", path: "../pact-ruby-ffi"
27
+ else
28
+ gem "pact", "~>1.14"
29
+ gem "pact-ffi", "~>0.4.28"
30
+ end
26
31
  gem "rspec-pact-matchers", "~>0.1"
27
32
  gem "bundler-audit", "~>0.4"
28
33
  gem "webmock", "~>3.9"
@@ -35,11 +40,11 @@ group :test do
35
40
  gem "approvals", ">=0.0.24", "<1.0.0"
36
41
  gem "tzinfo", "~>2.0"
37
42
  gem "faraday-retry", "~>2.0"
38
- gem "openapi_first", "2.9.2" # pinned to specific version due to changelog volatility
43
+ gem "openapi_first", "~>2.0"
39
44
  end
40
45
 
41
46
  group :pg, optional: true do
42
- gem "pg", "~>1.2"
47
+ gem "pg", "~>1.6"
43
48
  end
44
49
 
45
50
  group :mysql, optional: true do
@@ -41,6 +41,9 @@ module PactBroker
41
41
  add_error(errors_hash, error.path.first, "#{error.path.last} #{error.text} (at index #{error.path[1]})")
42
42
  elsif error_path_classes == [Symbol, Integer]
43
43
  add_error(errors_hash, error.path.first, "#{error.text} (at index #{error.path[1]})")
44
+ elsif error_path_classes == [Symbol, Symbol, Integer]
45
+ # this should be refactored to dynamically handle patterns instead of hardcoding the patterns
46
+ add_error(errors_hash, error.path.first, "#{error.path[1]} #{error.text} (at index #{error.path[2]})")
44
47
  else
45
48
  # Don't have any usecases for this - will deal with it when it happens
46
49
  raise PactBroker::Error, "Cannot currently format an error message with path classes #{error_path_classes}"
@@ -5,7 +5,7 @@ require "pact_broker/logging"
5
5
  module PactBroker
6
6
  module Api
7
7
  module Contracts
8
- class PactsForVerificationJSONQuerySchema < BaseContract
8
+ class PactsForVerificationJsonQuerySchema < BaseContract
9
9
  json do
10
10
  optional(:providerVersionBranch).maybe(:string)
11
11
  optional(:providerVersionTags).maybe(:array?)
@@ -83,7 +83,9 @@ module PactBroker
83
83
  name: deployed_version.environment.display_name,
84
84
  href: deployed_version_url(deployed_version, context.fetch(:base_url)),
85
85
  currently_deployed: deployed_version.currently_deployed
86
- }
86
+ }.tap do |hash|
87
+ hash[:application_instance] = deployed_version.application_instance unless deployed_version.application_instance.nil?
88
+ end
87
89
  end
88
90
  end
89
91
 
@@ -19,7 +19,7 @@ module PactBroker
19
19
  def process_post
20
20
  if content_type_json?
21
21
  keep_selectors = (params[:keep] || []).collect do | hash |
22
- PactBroker::Matrix::UnresolvedSelector.new(hash)
22
+ PactBroker::DB::Clean::Selector.new(hash)
23
23
  end
24
24
 
25
25
  result = PactBroker::DB::Clean.call(Sequel::Model.db, { keep: keep_selectors })
@@ -49,6 +49,54 @@ module PactBroker
49
49
  title: "All versions of a pact for a given consumer, provider and consumer version tag",
50
50
  templated: false
51
51
  },
52
+ "pb:branch-pact-versions" =>
53
+ {
54
+ href: base_url + "/pacts/provider/{provider}/consumer/{consumer}/branch/{branch}",
55
+ title: "All versions of pacts for a provider, for a named consumers branch",
56
+ templated: true
57
+ },
58
+ "pb:latest-branch-pact-versions" =>
59
+ {
60
+ href: base_url + "/pacts/provider/{provider}/consumer/{consumer}/branch/{branch}/latest",
61
+ title: "Latest version of pact for a provider, for a named consumers branch",
62
+ templated: true
63
+ },
64
+ "pb:main-branch-pact-versions" =>
65
+ {
66
+ href: base_url + "/pacts/provider/{provider}/consumer/{consumer}/branch",
67
+ title: "All versions of pacts for a provider, for a named consumers main branch",
68
+ templated: true
69
+ },
70
+ "pb:latest-main-branch-pact-versions" =>
71
+ {
72
+ href: base_url + "/pacts/provider/{provider}/consumer/{consumer}/branch/latest",
73
+ title: "Latest version of pact for a provider, for a named consumers main branch",
74
+ templated: true
75
+ },
76
+ "pb:provider-pacts-with-main-branch" =>
77
+ {
78
+ href: base_url + "/pacts/provider/{provider}/branch",
79
+ title: "All pacts for a provider, for any consumers main branch",
80
+ templated: true
81
+ },
82
+ "pb:provider-pacts-with-branch" =>
83
+ {
84
+ href: base_url + "/pacts/provider/{provider}/branch/{branch}",
85
+ title: "All pacts for a provider, for any consumers named branch",
86
+ templated: true
87
+ },
88
+ "pb:latest-provider-pacts-with-main-branch" =>
89
+ {
90
+ href: base_url + "/pacts/provider/{provider}/branch/latest",
91
+ title: "Latest pact for a provider, for any consumers main branch",
92
+ templated: true
93
+ },
94
+ "pb:latest-provider-pacts-with-branch" =>
95
+ {
96
+ href: base_url + "/pacts/provider/{provider}/branch/{branch}/latest",
97
+ title: "Latest pacts for a provider, for any consumers named branch",
98
+ templated: true
99
+ },
52
100
  "pb:pacticipants" =>
53
101
  {
54
102
  href: base_url + "/pacticipants",
@@ -0,0 +1,26 @@
1
+ require "pact_broker/api/resources/provider_pacts"
2
+ require "pact_broker/configuration"
3
+ require "pact_broker/api/decorators/provider_pacts_decorator"
4
+
5
+ module PactBroker
6
+ module Api
7
+ module Resources
8
+ class LatestProviderPactsForBranch < ProviderPacts
9
+ private
10
+
11
+ def pacts
12
+ pact_service.find_latest_pacts_for_provider_by_consumer_branch(
13
+ provider_name,
14
+ branch_name: identifier_from_path[:branch_name],
15
+ main_branch: identifier_from_path[:branch_name].nil?,
16
+ )
17
+ end
18
+
19
+ def resource_title
20
+ suffix = identifier_from_path[:branch_name] ? " with consumer version branch '#{identifier_from_path[:branch_name]}'" : ""
21
+ "Latest pact versions for the provider #{identifier_from_path[:provider_name]}#{suffix}#{!!identifier_from_path[:main_branch] ? ' for main branch' : ''}"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -14,13 +14,27 @@ module PactBroker
14
14
  end
15
15
 
16
16
  def allowed_methods
17
- ["DELETE", "OPTIONS"]
17
+ ["GET", "DELETE", "OPTIONS"]
18
18
  end
19
19
 
20
20
  def resource_exists?
21
21
  consumer && provider
22
22
  end
23
23
 
24
+ def to_json
25
+ decorator_class(:pact_versions_decorator).new(pacts).to_json(**decorator_options(identifier_from_path))
26
+ end
27
+
28
+ def pacts
29
+ @pacts ||= pact_service.find_pacts_for_provider_and_consumer_by_consumer_branch(
30
+ provider_name,
31
+ consumer_name,
32
+ branch_name: identifier_from_path[:branch_name],
33
+ main_branch: identifier_from_path[:branch_name].nil?,
34
+ latest: identifier_from_path[:resource_name] == "latest_pact_publications_for_main_branch" || identifier_from_path[:resource_name] == "latest_pact_publications_for_branch"
35
+ )
36
+ end
37
+
24
38
  def delete_resource
25
39
  pact_service.delete_all_pact_publications_between consumer_name, and: provider_name, branch_name: identifier_from_path[:branch_name]
26
40
  set_post_deletion_response
@@ -0,0 +1,47 @@
1
+ require "pact_broker/api/resources/base_resource"
2
+ require "pact_broker/configuration"
3
+ require "pact_broker/api/decorators/provider_pacts_decorator"
4
+
5
+ module PactBroker
6
+ module Api
7
+ module Resources
8
+ class ProviderPactsForConsumerBranch < BaseResource
9
+
10
+ def content_types_provided
11
+ [["application/hal+json", :to_json]]
12
+ end
13
+
14
+ def allowed_methods
15
+ ["GET", "OPTIONS"]
16
+ end
17
+
18
+ def resource_exists?
19
+ !!provider
20
+ end
21
+
22
+ def policy_name
23
+ :'pacts::provider_pacts'
24
+ end
25
+
26
+ def to_json
27
+ decorator_class(:provider_pacts_decorator).new(pacts).to_json(**decorator_options(identifier_from_path.merge(title: resource_title)))
28
+ end
29
+
30
+ private
31
+
32
+ def pacts
33
+ pact_service.find_pacts_for_provider_by_consumer_branch(
34
+ provider_name,
35
+ branch_name: identifier_from_path[:branch_name],
36
+ main_branch: identifier_from_path[:branch_name].nil?,
37
+ )
38
+ end
39
+
40
+ def resource_title
41
+ suffix = identifier_from_path[:branch_name] ? " with consumer version branch '#{identifier_from_path[:branch_name]}'" : ""
42
+ "All pact versions for the provider #{identifier_from_path[:provider_name]}#{suffix}#{!!identifier_from_path[:main_branch] ? ' for main branch' : ''}"
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -73,9 +73,9 @@ module PactBroker
73
73
 
74
74
  def schema
75
75
  if request.get?
76
- PactBroker::Api::Contracts::PactsForVerificationQueryStringSchema
76
+ api_contract_class(:pacts_for_verification_query_string_schema)
77
77
  elsif request.post?
78
- PactBroker::Api::Contracts::PactsForVerificationJSONQuerySchema
78
+ api_contract_class(:pacts_for_verification_json_query_schema)
79
79
  end
80
80
  end
81
81
 
@@ -25,12 +25,18 @@ module PactBroker
25
25
  :'pacts::pact'
26
26
  end
27
27
 
28
- private
28
+ def environment_uuid
29
+ identifier_from_path[:environment_uuid]
30
+ end
29
31
 
30
- # attr_reader :provider_states
32
+ def branch_name
33
+ identifier_from_path[:branch_name]
34
+ end
35
+
36
+ private
31
37
 
32
38
  def provider_states
33
- @provider_states ||= provider_state_service.list_provider_states(provider)
39
+ @provider_states ||= provider_state_service.list_provider_states(provider, branch_name, environment_uuid)
34
40
  end
35
41
  end
36
42
  end
@@ -33,6 +33,9 @@ module PactBroker
33
33
  add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "versions"], Api::Resources::PactVersions, {resource_name: "pact_publications"}
34
34
  add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "versions", :consumer_version_number], Api::Resources::Pact, {resource_name: "pact_publication", deprecated: true} # Not the standard URL, but keep for backwards compatibility
35
35
  add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "tag", :tag], Api::Resources::TaggedPactVersions, {resource_name: "tagged_pact_publications"}
36
+ add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "branch"], Api::Resources::PactVersionsForBranch, {resource_name: "pact_publications_for_main_branch"}
37
+ add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "branch", "latest"], Api::Resources::PactVersionsForBranch, {resource_name: "latest_pact_publications_for_main_branch"}
38
+ add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "branch", :branch_name, "latest"], Api::Resources::PactVersionsForBranch, {resource_name: "latest_pact_publications_for_branch"}
36
39
  add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "branch", :branch_name], Api::Resources::PactVersionsForBranch, {resource_name: "pact_publications_for_branch"}
37
40
 
38
41
  # Pacts
@@ -43,10 +46,16 @@ module PactBroker
43
46
  add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "version", :consumer_version_number, "diff", "previous-distinct"], Api::Resources::PactContentDiff, {resource_name: "previous_distinct_pact_version_diff"}
44
47
  add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "version", :consumer_version_number, "diff", "version", :comparison_consumer_version], Api::Resources::PactContentDiff, {resource_name: "pact_version_diff_by_consumer_version"}
45
48
  add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "pact-version", :pact_version_sha, "diff", "pact-version", :comparison_pact_version_sha], Api::Resources::PactContentDiff, {resource_name: "pact_version_diff_by_pact_version_sha"}
49
+ add ["pacts", "provider", :provider_name, "branch", "latest"], Api::Resources::LatestProviderPactsForBranch, {resource_name: "latest_main_branch_provider_pact_publications"}
50
+ add ["pacts", "provider", :provider_name, "branch", :branch_name, "latest"], Api::Resources::LatestProviderPactsForBranch, {resource_name: "latest_branch_provider_pact_publications"}
51
+ add ["pacts", "provider", :provider_name, "branch", :branch_name], Api::Resources::ProviderPactsForConsumerBranch, {resource_name: "branch_provider_pact_publications"}
52
+ add ["pacts", "provider", :provider_name, "branch"], Api::Resources::ProviderPactsForConsumerBranch, {resource_name: "main_branch_provider_pact_publications"}
46
53
 
47
54
  # Provider states
48
55
 
49
56
  add ["pacts", "provider", :provider_name, "provider-states"], Api::Resources::ProviderStates, { resource_name: "provider_states" }
57
+ add ["pacts", "provider", :provider_name, "provider-states", "branch", :branch_name], Api::Resources::ProviderStates, { resource_name: "provider_states_for_branch" }
58
+ add ["pacts", "provider", :provider_name, "provider-states", "environment", :environment_uuid], Api::Resources::ProviderStates, { resource_name: "provider_states_for_environment" }
50
59
 
51
60
 
52
61
  # Verifications
@@ -23,7 +23,6 @@ require "rack/pact_broker/application_context"
23
23
  require "sucker_punch"
24
24
  require "pact_broker/api/middleware/configuration"
25
25
  require "pact_broker/api/middleware/basic_auth"
26
- require "pact_broker/config/basic_auth_configuration"
27
26
  require "pact_broker/api/authorization/resource_access_policy"
28
27
  require "pact_broker/api/middleware/http_debug_logs"
29
28
  require "pact_broker/application_context"
@@ -3,7 +3,7 @@ require "pact_broker/config/runtime_configuration_logging_methods"
3
3
  require "pact_broker/config/runtime_configuration_database_methods"
4
4
  require "pact_broker/config/runtime_configuration_coercion_methods"
5
5
  require "pact_broker/version"
6
- require "pact_broker/config/basic_auth_configuration"
6
+ require "pact_broker/config/runtime_configuration_basic_auth_methods"
7
7
  require "pact_broker/string_refinements"
8
8
  require "pact_broker/hash_refinements"
9
9
  require "pact_broker/error"
@@ -0,0 +1,7 @@
1
+ # Branch pact versions
2
+
3
+ Allowed methods: `GET`
4
+
5
+ Path: `/pacts/provider/{provider}/consumer/{consumer}/branch/{branch}`
6
+
7
+ Lists all the pact versions with the specified consumer, provider and consumer version branch.
@@ -0,0 +1,7 @@
1
+ # Latest Branch pact versions
2
+
3
+ Allowed methods: `GET`
4
+
5
+ Path: `/pacts/provider/{provider}/consumer/{consumer}/branch/{branch}/latest`
6
+
7
+ Returns the latest pact version with the specified consumer, provider and consumer version branch.
@@ -0,0 +1,7 @@
1
+ # Latest main branch pact versions
2
+
3
+ Allowed methods: `GET`
4
+
5
+ Path: `/pacts/provider/{provider}/consumer/{consumer}/branch/latest`
6
+
7
+ Lists all latest pact version with the specified consumer, provider and the consumers main branch.
@@ -0,0 +1,7 @@
1
+ # Latest pacts for provider with the specified consumer branch
2
+
3
+ Allowed methods: `GET`
4
+
5
+ Path: `/pacts/provider/{provider}/branch/{branch}/latest`
6
+
7
+ Given a provider name and a consumer version branch name, this resource returns the latest pact for each consumer that has the specified branch.
@@ -0,0 +1,7 @@
1
+ # Latest pacts for provider with the consumer main branch
2
+
3
+ Allowed methods: `GET`
4
+
5
+ Path: `/pacts/provider/{provider}/branch/latest`
6
+
7
+ Given a provider name, this resource returns the latest pact for each consumers specified main branch.
@@ -1,5 +1,7 @@
1
- # Latest pacts for provider with the specified tag
1
+ # Latest pacts for provider with the specified consumer version tag
2
2
 
3
3
  Allowed methods: `GET`
4
4
 
5
+ Path: `/pacts/provider/{provider}/latest/{tag}`
6
+
5
7
  Given a provider name and a consumer version tag name, this resource returns the latest pact for each consumer that has the specified tag.
@@ -0,0 +1,7 @@
1
+ # Main Branch pact versions
2
+
3
+ Allowed methods: `GET`
4
+
5
+ Path: `/pacts/provider/{provider}/consumer/{consumer}/branch`
6
+
7
+ Lists all the pact versions with the specified consumer, provider and the consumers main branch.
@@ -0,0 +1,7 @@
1
+ # Provider pacts with consumer branch
2
+
3
+ Allowed methods: `GET`
4
+
5
+ Path: `/pacts/provider/{provider}/branch/{branch}`
6
+
7
+ Given a pacticipant name and a consumer branch, this resource returns all the pact versions for all consumers of this provider with the specified consumer branch. For most use cases, the `latest-provider-pacts-with-branch` relation will better serve consumer needs by only returning the latest pact version for specified consumer branches.
@@ -0,0 +1,7 @@
1
+ # All pacts for provider with the consumer main branch
2
+
3
+ Allowed methods: `GET`
4
+
5
+ Path: `/pacts/provider/{provider}/branch`
6
+
7
+ Given a provider name, this resource returns the latest pact for each consumers specified main branch.
@@ -2,4 +2,6 @@
2
2
 
3
3
  Allowed methods: `GET`
4
4
 
5
+ Path: `/pacts/provider/{provider}/tag/{tag}`
6
+
5
7
  Given a pacticipant name and a consumer version tag, this resource returns all the pact versions for all consumers of this provider with the specified tag. The most common use of this resource is to find all the `production` pact versions for the mobile consumers of an API, so that backwards compatibility can be maintained.
@@ -2,12 +2,20 @@
2
2
 
3
3
  Allowed methods: `GET`
4
4
 
5
- Path: `/pacts/provider/{provider}/provider-states`
6
-
7
5
  This resource returns a aggregated de-duplicated list of all provider states for a given provider.
8
6
 
7
+ Path: `/pacts/provider/{provider}/provider-states`
8
+
9
9
  Provider states are collected from the latest pact on the main branch for any dependant consumers.
10
10
 
11
+ Path: `/pacts/provider/{provider}/provider-states/branch/{branch_name}`
12
+
13
+ Provider states are collected from the latest pacts on the specified branch for any dependant consumers.
14
+
15
+ Path: `/pacts/provider/{provider}/provider-states/environment/{environment_name}`
16
+
17
+ Provider states are collected from the latest pacts in the specified environment for any dependant consumers.
18
+
11
19
  Example response
12
20
 
13
21
  ```json
@@ -25,4 +33,3 @@ Example response
25
33
  ]
26
34
  }
27
35
  ```
28
-
@@ -3,7 +3,7 @@ require "pact_broker/dataset"
3
3
  require "pact_broker/domain/pact"
4
4
  require "pact_broker/pacts/pact_version"
5
5
  require "pact_broker/integrations/integration"
6
- require "pact_broker/tags/head_pact_tags"
6
+ require "pact_broker/tags/head_pact_tag"
7
7
  require "pact_broker/pacts/pact_publication_dataset_module"
8
8
  require "pact_broker/pacts/pact_publication_wip_dataset_module"
9
9
  require "pact_broker/pacts/eager_loaders"
@@ -44,6 +44,14 @@ module PactBroker
44
44
  .remove_overridden_revisions_from_complete_query
45
45
  end
46
46
 
47
+ def for_main_branches
48
+ consumers_join = { Sequel[:pact_publications][:consumer_id] => Sequel[:consumers][:id] }
49
+ query = self
50
+ query
51
+ .join(:pacticipants, consumers_join, { table_alias: :consumers })
52
+ .remove_overridden_revisions_from_complete_query
53
+ end
54
+
47
55
  def for_currently_deployed_versions(environment_name)
48
56
  deployed_versions_join = {
49
57
  Sequel[:pact_publications][:consumer_version_id] => Sequel[:deployed_versions][:version_id]
@@ -11,8 +11,16 @@ module PactBroker
11
11
  extend PactBroker::Services
12
12
  extend PactBroker::Repositories::Scopes
13
13
 
14
- def self.list_provider_states(provider)
15
- query = scope_for(PactPublication).eager_for_domain_with_content.for_provider_and_consumer_version_selector(provider, PactBroker::Pacts::Selector.latest_for_main_branch)
14
+ def self.list_provider_states(provider, branch_name = nil, environment_name = nil)
15
+ selector =
16
+ if branch_name
17
+ PactBroker::Pacts::Selector.latest_for_branch(branch_name)
18
+ elsif environment_name
19
+ PactBroker::Pacts::Selector.for_environment(environment_name)
20
+ else
21
+ PactBroker::Pacts::Selector.latest_for_main_branch
22
+ end
23
+ query = scope_for(PactPublication).eager_for_domain_with_content.for_provider_and_consumer_version_selector(provider, selector)
16
24
  query.all.flat_map do | pact_publication |
17
25
  { "providerStates" => pact_publication.to_domain.content_object.provider_states, "consumer" => pact_publication.to_domain.consumer.name }
18
26
  end
@@ -151,6 +151,36 @@ module PactBroker
151
151
  query.all.sort_by{ | p| p.consumer_name.downcase }.collect(&:to_head_pact)
152
152
  end
153
153
 
154
+ def find_pacts_by_consumer_branch(provider_name, options = {})
155
+ consumer_name = options[:consumer]
156
+ latest = options.fetch(:latest, false)
157
+ branch = options[:branch_name]
158
+ main_branch = options.fetch(:main_branch, false)
159
+
160
+ query = scope_for(PactPublication)
161
+ .eager_for_domain_with_content
162
+ .for_provider_name(provider_name)
163
+
164
+ if consumer_name
165
+ query = query.for_consumer_name(consumer_name)
166
+ end
167
+
168
+ if main_branch
169
+ if latest
170
+ query = query.latest_for_main_branches
171
+ else
172
+ query = query.for_main_branches
173
+ end
174
+ else
175
+ if latest
176
+ query = query.latest_for_consumer_branch(branch)
177
+ else
178
+ query = query.for_branch_name(branch)
179
+ end
180
+ end
181
+ query.all.sort_by{ | p| p.consumer_name.downcase }.collect(&:to_head_pact)
182
+ end
183
+
154
184
  def find_for_verification(provider_name, consumer_version_selectors)
155
185
  PactsForVerificationRepository.new.find(provider_name, consumer_version_selectors)
156
186
  end
@@ -95,6 +95,26 @@ module PactBroker
95
95
  pact_repository.find_latest_pacts_for_provider provider_name, options[:tag]
96
96
  end
97
97
 
98
+ def find_latest_pacts_for_provider_by_consumer_branch provider_name, options = {}
99
+ options[:latest] = true
100
+ pact_repository.find_pacts_by_consumer_branch provider_name, options
101
+ end
102
+
103
+ def find_pacts_for_provider_by_consumer_branch provider_name, options = {}
104
+ pact_repository.find_pacts_by_consumer_branch provider_name, options
105
+ end
106
+
107
+ def find_pacts_for_provider_and_consumer_by_consumer_branch provider_name, consumer, options = {}
108
+ options[:consumer] = consumer
109
+ pact_repository.find_pacts_by_consumer_branch provider_name, options
110
+ end
111
+
112
+ def find_latest_pacts_for_provider_and_consumer_by_consumer_branch provider_name, consumer, options = {}
113
+ options[:consumer] = consumer
114
+ options[:latest] = true
115
+ pact_repository.find_pacts_by_consumer_branch provider_name, options
116
+ end
117
+
98
118
  def find_pact_versions_for_provider provider_name, options = {}
99
119
  pact_repository.find_pact_versions_for_provider provider_name, options[:tag]
100
120
  end
@@ -2,6 +2,7 @@
2
2
  # to stop performance issues from slowing down responses when there is
3
3
  # too much data.
4
4
  # See https://docs.pact.io/pact_broker/administration/maintenance
5
+ require "rake/tasklib"
5
6
 
6
7
  module PactBroker
7
8
  module DB
@@ -1,4 +1,4 @@
1
- require "pact_broker/ui/controllers/base_controller"
1
+ require "pact_broker/ui/controllers/base"
2
2
  require "pact_broker/ui/view_models/matrix_lines"
3
3
  require "pact_broker/matrix/unresolved_selector"
4
4
  require "pact_broker/matrix/parse_query"
@@ -20,7 +20,7 @@ module PactBroker
20
20
  selectors = [ PactBroker::Matrix::UnresolvedSelector.new(pacticipant_name: params[:pacticipant_name], latest: true, tag: params[:tag]) ]
21
21
  options = { latestby: "cvp", limit: 100, tag: params[:to] }
22
22
  result = matrix_service.find(selectors, options)
23
- lines = PactBroker::UI::ViewDomain::MatrixLines.new(result, base_url: base_url)
23
+ lines = PactBroker::UI::ViewModels::MatrixLines.new(result, base_url: base_url)
24
24
  locals = {
25
25
  lines: lines,
26
26
  selectors: create_selector_objects(selectors),
@@ -18,7 +18,7 @@ module PactBroker
18
18
  end
19
19
 
20
20
  get "/" do
21
- view_model = ViewDomain::IndexItems.new(pacticipant_service.find_index_items, base_url: base_url)
21
+ view_model = PactBroker::UI::ViewModels::IndexItems.new(pacticipant_service.find_index_items, base_url: base_url)
22
22
  haml "clusters/show", locals: { relationships: view_model, base_url: base_url }, escape_html: true
23
23
  end
24
24
 
@@ -1,4 +1,4 @@
1
- require "pact_broker/ui/controllers/base_controller"
1
+ require "pact_broker/ui/controllers/base"
2
2
  require "pact_broker/ui/view_models/index_items"
3
3
  require "haml"
4
4
 
@@ -44,7 +44,7 @@ module PactBroker
44
44
  []
45
45
  end
46
46
 
47
- view_index_items = ViewDomain::IndexItems.new(index_items, base_url: base_url, view: view)
47
+ view_index_items = PactBroker::UI::ViewModels::IndexItems.new(index_items, base_url: base_url, view: view)
48
48
 
49
49
  page = :'dashboard/show'
50
50
  locals = {
@@ -1,4 +1,4 @@
1
- require "pact_broker/ui/controllers/base_controller"
1
+ require "pact_broker/ui/controllers/base"
2
2
  require "pact_broker/logging"
3
3
  require "pact_broker/error"
4
4
 
@@ -1,4 +1,4 @@
1
- require "pact_broker/ui/controllers/base_controller"
1
+ require "pact_broker/ui/controllers/base"
2
2
  require "pact_broker/ui/view_models/index_items"
3
3
  require "haml"
4
4
 
@@ -1,4 +1,4 @@
1
- require "pact_broker/ui/controllers/base_controller"
1
+ require "pact_broker/ui/controllers/base"
2
2
  require "pact_broker/ui/view_models/index_items"
3
3
  require "pact_broker/string_refinements"
4
4
  require "haml"
@@ -33,7 +33,7 @@ module PactBroker
33
33
  error_messages << "No pacticipants found matching: \"#{search}\""
34
34
  end
35
35
 
36
- view_index_items = ViewDomain::IndexItems.new(index_items, base_url: base_url)
36
+ view_index_items = PactBroker::UI::ViewModels::IndexItems.new(index_items, base_url: base_url)
37
37
 
38
38
  page = tags ? :'index/show-with-tags' : :'index/show'
39
39
  locals = {
@@ -1,4 +1,4 @@
1
- require "pact_broker/ui/controllers/base_controller"
1
+ require "pact_broker/ui/controllers/base"
2
2
  require "pact_broker/ui/view_models/matrix_lines"
3
3
  require "pact_broker/matrix/unresolved_selector"
4
4
  require "pact_broker/matrix/parse_query"
@@ -32,7 +32,7 @@ module PactBroker
32
32
  errors = matrix_service.validate_selectors(selectors, options)
33
33
  if errors.empty?
34
34
  lines = matrix_service.find(selectors, options)
35
- locals[:lines] = PactBroker::UI::ViewDomain::MatrixLines.new(lines, base_url: base_url)
35
+ locals[:lines] = PactBroker::UI::ViewModels::MatrixLines.new(lines, base_url: base_url)
36
36
  locals[:badge_url] = matrix_badge_url(selectors, lines, base_url)
37
37
  else
38
38
  locals[:errors] = errors
@@ -52,7 +52,7 @@ module PactBroker
52
52
  ]
53
53
  options = { latestby: "cvpv", limit: 100 }
54
54
  lines = matrix_service.find(selectors, options)
55
- lines = PactBroker::UI::ViewDomain::MatrixLines.new(lines, base_url: base_url)
55
+ lines = PactBroker::UI::ViewModels::MatrixLines.new(lines, base_url: base_url)
56
56
  locals = {
57
57
  lines: lines,
58
58
  consumer_name: params[:consumer_name],
@@ -1,4 +1,4 @@
1
- require "pact_broker/ui/controllers/base_controller"
1
+ require "pact_broker/ui/controllers/base"
2
2
 
3
3
  module PactBroker
4
4
  module UI
@@ -9,7 +9,7 @@ require "forwardable"
9
9
 
10
10
  module PactBroker
11
11
  module UI
12
- module ViewDomain
12
+ module ViewModels
13
13
  class IndexItem
14
14
  extend Forwardable
15
15
 
@@ -4,7 +4,7 @@ require "pact_broker/date_helper"
4
4
 
5
5
  module PactBroker
6
6
  module UI
7
- module ViewDomain
7
+ module ViewModels
8
8
  class IndexItemBranchHead
9
9
 
10
10
  include PactBroker::Api::PactBrokerUrls
@@ -4,7 +4,7 @@ require "pact_broker/date_helper"
4
4
 
5
5
  module PactBroker
6
6
  module UI
7
- module ViewDomain
7
+ module ViewModels
8
8
  class IndexItemProviderBranchHead
9
9
 
10
10
  include PactBroker::Api::PactBrokerUrls
@@ -2,7 +2,7 @@ require "pact_broker/ui/view_models/index_item"
2
2
 
3
3
  module PactBroker
4
4
  module UI
5
- module ViewDomain
5
+ module ViewModels
6
6
  class IndexItems
7
7
 
8
8
  attr_reader :pagination_record_count
@@ -4,7 +4,7 @@ require "pact_broker/date_helper"
4
4
 
5
5
  module PactBroker
6
6
  module UI
7
- module ViewDomain
7
+ module ViewModels
8
8
  class MatrixBranch
9
9
 
10
10
  include PactBroker::Api::PactBrokerUrls
@@ -4,7 +4,7 @@ require "pact_broker/date_helper"
4
4
 
5
5
  module PactBroker
6
6
  module UI
7
- module ViewDomain
7
+ module ViewModels
8
8
  class MatrixDeployedVersion
9
9
  include PactBroker::Api::PactBrokerUrls
10
10
 
@@ -11,7 +11,7 @@ require "forwardable"
11
11
 
12
12
  module PactBroker
13
13
  module UI
14
- module ViewDomain
14
+ module ViewModels
15
15
  class MatrixLine
16
16
  include PactBroker::Api::PactBrokerUrls
17
17
  include PactBroker::Messages
@@ -2,12 +2,12 @@ require "pact_broker/ui/view_models/matrix_line"
2
2
 
3
3
  module PactBroker
4
4
  module UI
5
- module ViewDomain
5
+ module ViewModels
6
6
  class MatrixLines < Array
7
7
 
8
8
  def initialize rows, options = {}
9
9
  lines = rows.collect do | row |
10
- PactBroker::UI::ViewDomain::MatrixLine.new(row, options)
10
+ PactBroker::UI::ViewModels::MatrixLine.new(row, options)
11
11
  end
12
12
  super(lines.sort)
13
13
  end
@@ -4,7 +4,7 @@ require "pact_broker/date_helper"
4
4
 
5
5
  module PactBroker
6
6
  module UI
7
- module ViewDomain
7
+ module ViewModels
8
8
  class MatrixReleasedVersion
9
9
  include PactBroker::Api::PactBrokerUrls
10
10
 
@@ -4,7 +4,7 @@ require "pact_broker/date_helper"
4
4
 
5
5
  module PactBroker
6
6
  module UI
7
- module ViewDomain
7
+ module ViewModels
8
8
  class MatrixTag
9
9
  include PactBroker::Api::PactBrokerUrls
10
10
 
@@ -1,3 +1,3 @@
1
1
  module PactBroker
2
- VERSION = "2.116.0"
2
+ VERSION = "2.117.1"
3
3
  end
data/pact_broker.gemspec CHANGED
@@ -57,11 +57,9 @@ Gem::Specification.new do |gem|
57
57
  gem.add_runtime_dependency "sequel", "~> 5.90"
58
58
  gem.add_runtime_dependency "webmachine", ">= 2.0.0.beta", "< 3.0"
59
59
  gem.add_runtime_dependency "semver2", "~> 3.4.2"
60
- gem.add_runtime_dependency "rack", "~> 3.1", ">= 3.1.16"
60
+ gem.add_runtime_dependency "rack", "~> 3.2"
61
61
  gem.add_runtime_dependency "redcarpet", ">= 3.5.1", "~>3.5"
62
- # TODO: restore this with when latest master is released as 1.21.3
63
- # remove the Gemfile entry pointing to master
64
- # gem.add_runtime_dependency "pact-support" , ">= 1.21.3", "~> 1.21"
62
+ gem.add_runtime_dependency "pact-support" , ">= 1.21.2", "~> 1.21"
65
63
  gem.add_runtime_dependency "haml", "~>5.0"
66
64
  gem.add_runtime_dependency "sucker_punch", "~>3.0"
67
65
  gem.add_runtime_dependency "rack-protection", "~> 4.1"
@@ -72,4 +70,10 @@ Gem::Specification.new do |gem|
72
70
  gem.add_runtime_dependency "anyway_config", "~> 2.1"
73
71
  gem.add_runtime_dependency "request_store", "~> 1.5"
74
72
  gem.add_runtime_dependency "moments", "~> 0.2"
73
+ # dropped in ruby 3.4 stdlib
74
+ gem.add_runtime_dependency "mutex_m", "~> 0.3" # until as-notifications -> webmachine requires it
75
+ gem.add_runtime_dependency "csv", "~> 3.0" # lib/pact_broker/api/decorators/relationships_csv_decorator.rb
76
+ # dropped in ruby 3.5 stdlib
77
+ gem.add_runtime_dependency "ostruct", "~> 0.5"
78
+ gem.add_development_dependency "pstore", "~> 0.1" # until webmachine requires it
75
79
  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.116.0
4
+ version: 2.117.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bethany Skurrie
@@ -135,20 +135,14 @@ dependencies:
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3.1'
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- version: 3.1.16
138
+ version: '3.2'
142
139
  type: :runtime
143
140
  prerelease: false
144
141
  version_requirements: !ruby/object:Gem::Requirement
145
142
  requirements:
146
143
  - - "~>"
147
144
  - !ruby/object:Gem::Version
148
- version: '3.1'
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: 3.1.16
145
+ version: '3.2'
152
146
  - !ruby/object:Gem::Dependency
153
147
  name: redcarpet
154
148
  requirement: !ruby/object:Gem::Requirement
@@ -169,6 +163,26 @@ dependencies:
169
163
  - - "~>"
170
164
  - !ruby/object:Gem::Version
171
165
  version: '3.5'
166
+ - !ruby/object:Gem::Dependency
167
+ name: pact-support
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 1.21.2
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '1.21'
176
+ type: :runtime
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: 1.21.2
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '1.21'
172
186
  - !ruby/object:Gem::Dependency
173
187
  name: haml
174
188
  requirement: !ruby/object:Gem::Requirement
@@ -309,6 +323,62 @@ dependencies:
309
323
  - - "~>"
310
324
  - !ruby/object:Gem::Version
311
325
  version: '0.2'
326
+ - !ruby/object:Gem::Dependency
327
+ name: mutex_m
328
+ requirement: !ruby/object:Gem::Requirement
329
+ requirements:
330
+ - - "~>"
331
+ - !ruby/object:Gem::Version
332
+ version: '0.3'
333
+ type: :runtime
334
+ prerelease: false
335
+ version_requirements: !ruby/object:Gem::Requirement
336
+ requirements:
337
+ - - "~>"
338
+ - !ruby/object:Gem::Version
339
+ version: '0.3'
340
+ - !ruby/object:Gem::Dependency
341
+ name: csv
342
+ requirement: !ruby/object:Gem::Requirement
343
+ requirements:
344
+ - - "~>"
345
+ - !ruby/object:Gem::Version
346
+ version: '3.0'
347
+ type: :runtime
348
+ prerelease: false
349
+ version_requirements: !ruby/object:Gem::Requirement
350
+ requirements:
351
+ - - "~>"
352
+ - !ruby/object:Gem::Version
353
+ version: '3.0'
354
+ - !ruby/object:Gem::Dependency
355
+ name: ostruct
356
+ requirement: !ruby/object:Gem::Requirement
357
+ requirements:
358
+ - - "~>"
359
+ - !ruby/object:Gem::Version
360
+ version: '0.5'
361
+ type: :runtime
362
+ prerelease: false
363
+ version_requirements: !ruby/object:Gem::Requirement
364
+ requirements:
365
+ - - "~>"
366
+ - !ruby/object:Gem::Version
367
+ version: '0.5'
368
+ - !ruby/object:Gem::Dependency
369
+ name: pstore
370
+ requirement: !ruby/object:Gem::Requirement
371
+ requirements:
372
+ - - "~>"
373
+ - !ruby/object:Gem::Version
374
+ version: '0.1'
375
+ type: :development
376
+ prerelease: false
377
+ version_requirements: !ruby/object:Gem::Requirement
378
+ requirements:
379
+ - - "~>"
380
+ - !ruby/object:Gem::Version
381
+ version: '0.1'
312
382
  description: A server that stores and returns pact files generated by the pact gem.
313
383
  It enables head/prod cross testing of the consumer and provider projects.
314
384
  email:
@@ -681,6 +751,7 @@ files:
681
751
  - lib/pact_broker/api/resources/latest_pact.rb
682
752
  - lib/pact_broker/api/resources/latest_pacts.rb
683
753
  - lib/pact_broker/api/resources/latest_provider_pacts.rb
754
+ - lib/pact_broker/api/resources/latest_provider_pacts_for_branch.rb
684
755
  - lib/pact_broker/api/resources/latest_verification_for_latest_pact.rb
685
756
  - lib/pact_broker/api/resources/latest_verification_for_pact.rb
686
757
  - lib/pact_broker/api/resources/latest_verifications_for_consumer_version.rb
@@ -708,6 +779,7 @@ files:
708
779
  - lib/pact_broker/api/resources/pagination_methods.rb
709
780
  - lib/pact_broker/api/resources/previous_distinct_pact_version.rb
710
781
  - lib/pact_broker/api/resources/provider_pacts.rb
782
+ - lib/pact_broker/api/resources/provider_pacts_for_consumer_branch.rb
711
783
  - lib/pact_broker/api/resources/provider_pacts_for_verification.rb
712
784
  - lib/pact_broker/api/resources/provider_states.rb
713
785
  - lib/pact_broker/api/resources/publish_contracts.rb
@@ -733,10 +805,10 @@ files:
733
805
  - lib/pact_broker/build_http_options.rb
734
806
  - lib/pact_broker/certificates/certificate.rb
735
807
  - lib/pact_broker/certificates/service.rb
736
- - lib/pact_broker/config/basic_auth_configuration.rb
737
808
  - lib/pact_broker/config/load.rb
738
809
  - lib/pact_broker/config/repository.rb
739
810
  - lib/pact_broker/config/runtime_configuration.rb
811
+ - lib/pact_broker/config/runtime_configuration_basic_auth_methods.rb
740
812
  - lib/pact_broker/config/runtime_configuration_coercion_methods.rb
741
813
  - lib/pact_broker/config/runtime_configuration_database_methods.rb
742
814
  - lib/pact_broker/config/runtime_configuration_logging_methods.rb
@@ -751,7 +823,6 @@ files:
751
823
  - lib/pact_broker/contracts/contracts_to_publish.rb
752
824
  - lib/pact_broker/contracts/notice.rb
753
825
  - lib/pact_broker/contracts/service.rb
754
- - lib/pact_broker/dashboard/service.rb
755
826
  - lib/pact_broker/dataset.rb
756
827
  - lib/pact_broker/dataset/page.rb
757
828
  - lib/pact_broker/date_helper.rb
@@ -806,18 +877,26 @@ files:
806
877
  - lib/pact_broker/doc/views/can-i-deploy.markdown
807
878
  - lib/pact_broker/doc/views/consumer-version.markdown
808
879
  - lib/pact_broker/doc/views/consumer.markdown
880
+ - lib/pact_broker/doc/views/index/branch-pact-versions.markdown
809
881
  - lib/pact_broker/doc/views/index/environment.markdown
810
882
  - lib/pact_broker/doc/views/index/environments.markdown
883
+ - lib/pact_broker/doc/views/index/latest-branch-pact-versions.markdown
884
+ - lib/pact_broker/doc/views/index/latest-main-branch-pact-versions.markdown
811
885
  - lib/pact_broker/doc/views/index/latest-pact-versions.markdown
886
+ - lib/pact_broker/doc/views/index/latest-provider-pacts-with-branch.markdown
887
+ - lib/pact_broker/doc/views/index/latest-provider-pacts-with-main-branch.markdown
812
888
  - lib/pact_broker/doc/views/index/latest-provider-pacts-with-tag.markdown
813
889
  - lib/pact_broker/doc/views/index/latest-provider-pacts.markdown
814
890
  - lib/pact_broker/doc/views/index/latest-tagged-version.markdown
815
891
  - lib/pact_broker/doc/views/index/latest-version.markdown
892
+ - lib/pact_broker/doc/views/index/main-branch-pact-versions.markdown
816
893
  - lib/pact_broker/doc/views/index/pacticipant-branch-version.markdown
817
894
  - lib/pact_broker/doc/views/index/pacticipant-branch.markdown
818
895
  - lib/pact_broker/doc/views/index/pacticipant-version-tag.markdown
819
896
  - lib/pact_broker/doc/views/index/pacticipant-version.markdown
820
897
  - lib/pact_broker/doc/views/index/pacticipants.markdown
898
+ - lib/pact_broker/doc/views/index/provider-pacts-with-branch.markdown
899
+ - lib/pact_broker/doc/views/index/provider-pacts-with-main-branch.markdown
821
900
  - lib/pact_broker/doc/views/index/provider-pacts-with-tag.markdown
822
901
  - lib/pact_broker/doc/views/index/provider-pacts.markdown
823
902
  - lib/pact_broker/doc/views/index/publish-contracts.markdown
@@ -955,7 +1034,7 @@ files:
955
1034
  - lib/pact_broker/services.rb
956
1035
  - lib/pact_broker/string_refinements.rb
957
1036
  - lib/pact_broker/tags/eager_loaders.rb
958
- - lib/pact_broker/tags/head_pact_tags.rb
1037
+ - lib/pact_broker/tags/head_pact_tag.rb
959
1038
  - lib/pact_broker/tags/repository.rb
960
1039
  - lib/pact_broker/tags/service.rb
961
1040
  - lib/pact_broker/tasks.rb
@@ -968,7 +1047,7 @@ files:
968
1047
  - lib/pact_broker/test/test_data_builder.rb
969
1048
  - lib/pact_broker/ui.rb
970
1049
  - lib/pact_broker/ui/app.rb
971
- - lib/pact_broker/ui/controllers/base_controller.rb
1050
+ - lib/pact_broker/ui/controllers/base.rb
972
1051
  - lib/pact_broker/ui/controllers/can_i_deploy.rb
973
1052
  - lib/pact_broker/ui/controllers/clusters.rb
974
1053
  - lib/pact_broker/ui/controllers/dashboard.rb
@@ -980,7 +1059,6 @@ files:
980
1059
  - lib/pact_broker/ui/helpers/haml_helpers.rb
981
1060
  - lib/pact_broker/ui/helpers/matrix_helper.rb
982
1061
  - lib/pact_broker/ui/helpers/url_helper.rb
983
- - lib/pact_broker/ui/view_models/clusters.rb
984
1062
  - lib/pact_broker/ui/view_models/index_item.rb
985
1063
  - lib/pact_broker/ui/view_models/index_item_branch_head.rb
986
1064
  - lib/pact_broker/ui/view_models/index_item_provider_branch_head.rb
@@ -1209,7 +1287,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1209
1287
  - !ruby/object:Gem::Version
1210
1288
  version: '0'
1211
1289
  requirements: []
1212
- rubygems_version: 3.6.9
1290
+ rubygems_version: 3.7.2
1213
1291
  specification_version: 4
1214
1292
  summary: See description
1215
1293
  test_files: []
File without changes
File without changes