pact_broker 2.112.0 → 2.113.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 +4 -4
- data/CHANGELOG.md +12 -0
- data/Gemfile +5 -4
- data/docs/developer/business_domain_models.md +9 -0
- data/lib/pact_broker/api/decorators/provider_states_decorator.rb +19 -0
- data/lib/pact_broker/api/resources/provider_states.rb +38 -0
- data/lib/pact_broker/api.rb +5 -0
- data/lib/pact_broker/db/data_migrations/set_interactions_counts.rb +2 -0
- data/lib/pact_broker/db/migrate_data.rb +28 -16
- data/lib/pact_broker/doc/views/pact/provider-states.markdown +28 -0
- data/lib/pact_broker/matrix/matrix_row_instance_methods.rb +7 -1
- data/lib/pact_broker/pacticipants/repository.rb +4 -1
- data/lib/pact_broker/pacts/content.rb +24 -7
- data/lib/pact_broker/pacts/provider_state_service.rb +22 -0
- data/lib/pact_broker/pacts/selector.rb +4 -0
- data/lib/pact_broker/pacts/selectors.rb +4 -0
- data/lib/pact_broker/services.rb +9 -0
- data/lib/pact_broker/version.rb +1 -1
- data/lib/sequel/extensions/pg_advisory_lock.rb +2 -2
- data/pact_broker.gemspec +1 -3
- metadata +12 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f58c954e3864629cd056224198acfe87df68d7a38ff2a098bf1c7e78541a8d1
|
4
|
+
data.tar.gz: 6f59e94416775c9beb054cd7ef0ca77e055505e99864a8cc0c0dd4c8a0bf3f9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d64bab2b42d053d80a63c797e2a3ee84f2731a8eee85368a31bb1d70a102ef38df362feb7ef9151b2890307944123e0a0ec04acb82e1c7d956f88c12d6935116
|
7
|
+
data.tar.gz: 8c46ee348ffad72bad86d132873e1d812c70585b570d8e63c7b71187dfd653afa1eea795f804b8fb2d2ed3fe1f7d372996ff4eb598fcc17a775cd214be5cb236
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
<a name="v2.113.0"></a>
|
2
|
+
### v2.113.0 (2025-02-13)
|
3
|
+
|
4
|
+
#### Features
|
5
|
+
|
6
|
+
* aggregated provider state endpoint (#734) ([108d11a7](/../../commit/108d11a7))
|
7
|
+
* add more logging to data migrations ([9482d44d](/../../commit/9482d44d))
|
8
|
+
|
9
|
+
#### Bug Fixes
|
10
|
+
|
11
|
+
* make sure last_action_date always returns a DateTime object ([d60c264e](/../../commit/d60c264e))
|
12
|
+
|
1
13
|
<a name="v2.112.0"></a>
|
2
14
|
### v2.112.0 (2024-09-09)
|
3
15
|
|
data/Gemfile
CHANGED
@@ -3,15 +3,17 @@ source "https://rubygems.org"
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
|
6
|
-
gem "rake", "~>
|
6
|
+
gem "rake", "~>13.0"
|
7
7
|
gem "sqlite3", ">=2.0.0"
|
8
8
|
gem "conventional-changelog", "~>1.3"
|
9
9
|
gem "bump", "~> 0.5"
|
10
|
+
gem "padrino-core", ">= 0.14.3", "~> 0.14", require: false
|
11
|
+
gem "sinatra", "~> 3.0", require: false
|
10
12
|
|
11
13
|
group :development do
|
12
14
|
gem "pry-byebug"
|
13
|
-
gem "rubocop", "~>1.
|
14
|
-
gem "rubocop-performance", "~> 1.
|
15
|
+
gem "rubocop", "~>1.7"
|
16
|
+
gem "rubocop-performance", "~> 1.23"
|
15
17
|
gem "sequel-annotate", "~>1.3"
|
16
18
|
gem "yard", "~> 0.9"
|
17
19
|
end
|
@@ -21,7 +23,6 @@ group :test do
|
|
21
23
|
gem "pact", "~>1.14"
|
22
24
|
gem "rspec-pact-matchers", "~>0.1"
|
23
25
|
gem "bundler-audit", "~>0.4"
|
24
|
-
gem "fakefs", "~>0.4"
|
25
26
|
gem "webmock", "~>3.9"
|
26
27
|
gem "rspec", "~>3.0"
|
27
28
|
gem "rspec-its", "~>1.2"
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# Business Domain Models
|
2
|
+
|
3
|
+
Sorry this is so scarce. I'm in a hurry, and this is better than nothing.
|
4
|
+
|
5
|
+

|
6
|
+
|
7
|
+

|
8
|
+
|
9
|
+

|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "pact_broker/api/decorators/base_decorator"
|
2
|
+
|
3
|
+
module PactBroker
|
4
|
+
module Api
|
5
|
+
module Decorators
|
6
|
+
class ProviderStateDecorator < BaseDecorator
|
7
|
+
camelize_property_names
|
8
|
+
|
9
|
+
property :name
|
10
|
+
property :params
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
class ProviderStatesDecorator < BaseDecorator
|
15
|
+
collection :providerStates, getter: -> (context) { context[:represented].sort_by(&:name) }, :extend => PactBroker::Api::Decorators::ProviderStateDecorator
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "pact_broker/api/resources/base_resource"
|
2
|
+
require "pact_broker/api/decorators/provider_states_decorator"
|
3
|
+
|
4
|
+
module PactBroker
|
5
|
+
module Api
|
6
|
+
module Resources
|
7
|
+
class ProviderStates < BaseResource
|
8
|
+
def content_types_provided
|
9
|
+
[["application/hal+json", :to_json]]
|
10
|
+
end
|
11
|
+
|
12
|
+
def allowed_methods
|
13
|
+
["GET", "OPTIONS"]
|
14
|
+
end
|
15
|
+
|
16
|
+
def resource_exists?
|
17
|
+
!!provider
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_json
|
21
|
+
decorator_class(:provider_states_decorator).new(provider_states).to_json(decorator_options)
|
22
|
+
end
|
23
|
+
|
24
|
+
def policy_name
|
25
|
+
:'pacts::pacts'
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
# attr_reader :provider_states
|
31
|
+
|
32
|
+
def provider_states
|
33
|
+
@provider_states ||= provider_state_service.list_provider_states(provider)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/pact_broker/api.rb
CHANGED
@@ -44,6 +44,11 @@ module PactBroker
|
|
44
44
|
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
45
|
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"}
|
46
46
|
|
47
|
+
# Provider states
|
48
|
+
|
49
|
+
add ["pacts", "provider", :provider_name, "provider-states"], Api::Resources::ProviderStates, { resource_name: "provider_states" }
|
50
|
+
|
51
|
+
|
47
52
|
# Verifications
|
48
53
|
add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "pact-version", :pact_version_sha, "verification-results"], Api::Resources::Verifications, {resource_name: "verification_results"}
|
49
54
|
add ["pacts", "provider", :provider_name, "consumer", :consumer_name, "pact-version", :pact_version_sha, "metadata", :metadata, "verification-results"], Api::Resources::Verifications, {resource_name: "verification_results"}
|
@@ -4,6 +4,8 @@ module PactBroker
|
|
4
4
|
module DB
|
5
5
|
module DataMigrations
|
6
6
|
class SetInteractionsCounts
|
7
|
+
# This was never included in PactBroker::DB::MigrateData::MIGRATIONS
|
8
|
+
|
7
9
|
def self.call(connection)
|
8
10
|
self_join = {
|
9
11
|
Sequel[:pact_publications][:consumer_id] => Sequel[:pp2][:consumer_id],
|
@@ -13,23 +13,35 @@ end
|
|
13
13
|
module PactBroker
|
14
14
|
module DB
|
15
15
|
class MigrateData
|
16
|
+
include PactBroker::Logging
|
17
|
+
|
18
|
+
MIGRATIONS = [
|
19
|
+
DataMigrations::SetPacticipantIdsForVerifications,
|
20
|
+
DataMigrations::SetConsumerIdsForPactPublications,
|
21
|
+
DataMigrations::SetLatestVersionSequenceValue,
|
22
|
+
DataMigrations::SetWebhooksEnabled,
|
23
|
+
DataMigrations::DeleteDeprecatedWebhookExecutions,
|
24
|
+
DataMigrations::SetCreatedAtForLatestPactPublications,
|
25
|
+
DataMigrations::SetCreatedAtForLatestVerifications,
|
26
|
+
DataMigrations::SetExtraColumnsForTags,
|
27
|
+
DataMigrations::SetPacticipantDisplayName,
|
28
|
+
DataMigrations::SetWebhookUuid,
|
29
|
+
DataMigrations::SetConsumerVersionOrderForPactPublications,
|
30
|
+
DataMigrations::CreateBranches,
|
31
|
+
DataMigrations::MigrateIntegrations,
|
32
|
+
DataMigrations::MigratePactVersionProviderTagSuccessfulVerifications,
|
33
|
+
DataMigrations::SetContractDataUpdatedAtForIntegrations
|
34
|
+
].freeze
|
35
|
+
|
36
|
+
def self.registered_migrations
|
37
|
+
MIGRATIONS
|
38
|
+
end
|
39
|
+
|
16
40
|
def self.call database_connection, _options = {}
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
DataMigrations::DeleteDeprecatedWebhookExecutions.call(database_connection)
|
22
|
-
DataMigrations::SetCreatedAtForLatestPactPublications.call(database_connection)
|
23
|
-
DataMigrations::SetCreatedAtForLatestVerifications.call(database_connection)
|
24
|
-
DataMigrations::SetExtraColumnsForTags.call(database_connection)
|
25
|
-
DataMigrations::SetPacticipantDisplayName.call(database_connection)
|
26
|
-
DataMigrations::SetWebhookUuid.call(database_connection)
|
27
|
-
DataMigrations::SetConsumerVersionOrderForPactPublications.call(database_connection)
|
28
|
-
DataMigrations::SetExtraColumnsForTags.call(database_connection)
|
29
|
-
DataMigrations::CreateBranches.call(database_connection)
|
30
|
-
DataMigrations::MigrateIntegrations.call(database_connection)
|
31
|
-
DataMigrations::MigratePactVersionProviderTagSuccessfulVerifications.call(database_connection)
|
32
|
-
DataMigrations::SetContractDataUpdatedAtForIntegrations.call(database_connection)
|
41
|
+
registered_migrations.each do | migration |
|
42
|
+
logger.debug "Running data migration #{migration.to_s.split("::").last.gsub(/([a-z\d])([A-Z])/, '\1 \2').split.join("-")}"
|
43
|
+
migration.call(database_connection)
|
44
|
+
end
|
33
45
|
end
|
34
46
|
end
|
35
47
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Provider States - Aggregated view by provider
|
2
|
+
|
3
|
+
Allowed methods: `GET`
|
4
|
+
|
5
|
+
Path: `/pacts/provider/{provider}/provider-states`
|
6
|
+
|
7
|
+
This resource returns a aggregated de-duplicated list of all provider states for a given provider.
|
8
|
+
|
9
|
+
Provider states are collected from the latest pact on the main branch for any dependant consumers.
|
10
|
+
|
11
|
+
Example response
|
12
|
+
|
13
|
+
```json
|
14
|
+
{
|
15
|
+
"providerStates": [
|
16
|
+
{
|
17
|
+
"name": "an error occurs retrieving an alligator"
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"name": "there is an alligator named Mary"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"name": "there is not an alligator named Mary"
|
24
|
+
}
|
25
|
+
]
|
26
|
+
}
|
27
|
+
```
|
28
|
+
|
@@ -129,7 +129,13 @@ module PactBroker
|
|
129
129
|
end
|
130
130
|
|
131
131
|
def last_action_date
|
132
|
-
return_or_raise_if_not_set(:last_action_date)
|
132
|
+
date = return_or_raise_if_not_set(:last_action_date)
|
133
|
+
|
134
|
+
if date.class == String
|
135
|
+
DateTime.parse(date)
|
136
|
+
else
|
137
|
+
date
|
138
|
+
end
|
133
139
|
end
|
134
140
|
|
135
141
|
def has_verification?
|
@@ -37,7 +37,10 @@ module PactBroker
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def find(options = {}, pagination_options = {}, eager_load_associations = [])
|
40
|
-
query = scope_for(PactBroker::Domain::Pacticipant)
|
40
|
+
query = scope_for(PactBroker::Domain::Pacticipant)
|
41
|
+
return [] if query.empty?
|
42
|
+
|
43
|
+
query = query.select_all_qualified
|
41
44
|
query = query.filter(:name, options[:query_string]) if options[:query_string]
|
42
45
|
query = query.label(options[:label_name]) if options[:label_name]
|
43
46
|
query.order_ignore_case(Sequel[:pacticipants][:name]).eager(*eager_load_associations).all_with_pagination_options(pagination_options)
|
@@ -5,7 +5,10 @@ require "pact_broker/hash_refinements"
|
|
5
5
|
|
6
6
|
module PactBroker
|
7
7
|
module Pacts
|
8
|
+
ProviderState = Struct.new(:name, :params)
|
8
9
|
class Content
|
10
|
+
|
11
|
+
|
9
12
|
include GenerateInteractionSha
|
10
13
|
using PactBroker::HashRefinements
|
11
14
|
|
@@ -33,9 +36,21 @@ module PactBroker
|
|
33
36
|
Content.from_hash(SortContent.call(pact_hash))
|
34
37
|
end
|
35
38
|
|
39
|
+
def provider_states
|
40
|
+
messages_and_or_interactions_or_empty_array.flat_map do | interaction |
|
41
|
+
if interaction["providerState"].is_a?(String)
|
42
|
+
[ProviderState.new(interaction["providerState"])]
|
43
|
+
elsif interaction["providerStates"].is_a?(Array)
|
44
|
+
interaction["providerStates"].collect do | provider_state |
|
45
|
+
ProviderState.new(provider_state["name"], provider_state["params"])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end.compact
|
49
|
+
end
|
50
|
+
|
36
51
|
def interactions_missing_test_results
|
37
|
-
return [] unless
|
38
|
-
|
52
|
+
return [] unless messages_and_or_interactions
|
53
|
+
messages_and_or_interactions.reject do | interaction |
|
39
54
|
interaction["tests"]&.any?
|
40
55
|
end
|
41
56
|
end
|
@@ -90,7 +105,7 @@ module PactBroker
|
|
90
105
|
end
|
91
106
|
|
92
107
|
def interaction_ids
|
93
|
-
|
108
|
+
messages_and_or_interactions_or_empty_array.collect do | interaction |
|
94
109
|
interaction["_id"]
|
95
110
|
end.compact
|
96
111
|
end
|
@@ -116,12 +131,14 @@ module PactBroker
|
|
116
131
|
pact_hash.is_a?(Hash) && pact_hash["interactions"].is_a?(Array) ? pact_hash["interactions"] : nil
|
117
132
|
end
|
118
133
|
|
119
|
-
def
|
120
|
-
messages || interactions
|
134
|
+
def messages_and_or_interactions
|
135
|
+
if messages || interactions
|
136
|
+
(messages || []) + (interactions || [])
|
137
|
+
end
|
121
138
|
end
|
122
139
|
|
123
|
-
def
|
124
|
-
|
140
|
+
def messages_and_or_interactions_or_empty_array
|
141
|
+
messages_and_or_interactions || []
|
125
142
|
end
|
126
143
|
|
127
144
|
def pact_specification_version
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require "pact_broker/services"
|
2
|
+
require "pact_broker/pacts/selectors"
|
3
|
+
require "pact_broker/pacts/pact_publication"
|
4
|
+
require "pact_broker/repositories"
|
5
|
+
|
6
|
+
|
7
|
+
module PactBroker
|
8
|
+
module Pacts
|
9
|
+
class ProviderStateService
|
10
|
+
# extend self
|
11
|
+
extend PactBroker::Services
|
12
|
+
extend PactBroker::Repositories::Scopes
|
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)
|
16
|
+
query.all.flat_map do | pact_publication |
|
17
|
+
pact_publication.to_domain.content_object.provider_states
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -155,6 +155,10 @@ module PactBroker
|
|
155
155
|
new(latest: true, branch: branch)
|
156
156
|
end
|
157
157
|
|
158
|
+
def self.latest_for_main_branch
|
159
|
+
new(latest: true, main_branch: true)
|
160
|
+
end
|
161
|
+
|
158
162
|
def self.latest_for_tag_with_fallback(tag, fallback_tag)
|
159
163
|
new(latest: true, tag: tag, fallback_tag: fallback_tag)
|
160
164
|
end
|
@@ -27,6 +27,10 @@ module PactBroker
|
|
27
27
|
Selectors.new([Selector.latest_for_branch(branch)])
|
28
28
|
end
|
29
29
|
|
30
|
+
def self.create_for_latest_from_main_branch
|
31
|
+
Selectors.new([Selector.latest_for_main_branch])
|
32
|
+
end
|
33
|
+
|
30
34
|
def self.create_for_overall_latest
|
31
35
|
Selectors.new([Selector.overall_latest])
|
32
36
|
end
|
data/lib/pact_broker/services.rb
CHANGED
@@ -93,6 +93,10 @@ module PactBroker
|
|
93
93
|
get_service(:branch_service)
|
94
94
|
end
|
95
95
|
|
96
|
+
def provider_state_service
|
97
|
+
get_service(:provider_state_service)
|
98
|
+
end
|
99
|
+
|
96
100
|
# rubocop: disable Metrics/MethodLength
|
97
101
|
def register_default_services
|
98
102
|
register_service(:index_service) do
|
@@ -194,6 +198,11 @@ module PactBroker
|
|
194
198
|
require "pact_broker/versions/branch_service"
|
195
199
|
PactBroker::Versions::BranchService
|
196
200
|
end
|
201
|
+
|
202
|
+
register_service(:provider_state_service) do
|
203
|
+
require "pact_broker/pacts/provider_state_service"
|
204
|
+
PactBroker::Pacts::ProviderStateService
|
205
|
+
end
|
197
206
|
end
|
198
207
|
# rubocop: enable Metrics/MethodLength
|
199
208
|
end
|
data/lib/pact_broker/version.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
# locks to be registered because different threads running the same code
|
4
4
|
# should not cause a Sequel::Error to be raised.
|
5
5
|
# Also, I wanted it to use Concurrent::Hash for multi-threaded environments.
|
6
|
+
# Made minor change in begin ensure block in with_advisory_lock method.
|
6
7
|
|
7
8
|
require "sequel"
|
8
9
|
require "zlib"
|
@@ -57,10 +58,9 @@ module Sequel
|
|
57
58
|
synchronize do
|
58
59
|
if get(Sequel.function(lock_function, *function_params))
|
59
60
|
begin
|
60
|
-
|
61
|
+
yield
|
61
62
|
ensure
|
62
63
|
get(Sequel.function(UNLOCK_FUNCTION, *function_params))
|
63
|
-
result
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
data/pact_broker.gemspec
CHANGED
@@ -60,9 +60,7 @@ Gem::Specification.new do |gem|
|
|
60
60
|
gem.add_runtime_dependency "semver2", "~> 3.4.2"
|
61
61
|
gem.add_runtime_dependency "rack", ">= 2.2.3", "~> 2.2" # TODO update to 3
|
62
62
|
gem.add_runtime_dependency "redcarpet", ">= 3.5.1", "~>3.5"
|
63
|
-
gem.add_runtime_dependency "pact-support" , "
|
64
|
-
gem.add_runtime_dependency "padrino-core", ">= 0.14.3", "~> 0.14"
|
65
|
-
gem.add_runtime_dependency "sinatra", "~> 3.0"
|
63
|
+
gem.add_runtime_dependency "pact-support" , ">= 1.21.2", "~> 1.21"
|
66
64
|
gem.add_runtime_dependency "haml", "~>5.0"
|
67
65
|
gem.add_runtime_dependency "sucker_punch", "~>3.0"
|
68
66
|
gem.add_runtime_dependency "rack-protection", "~> 3.0"
|
metadata
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pact_broker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.113.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bethany Skurrie
|
8
8
|
- Sergei Matheson
|
9
9
|
- Warner Godfrey
|
10
|
-
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2025-02-13 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: json
|
@@ -186,58 +185,24 @@ dependencies:
|
|
186
185
|
version: '3.5'
|
187
186
|
- !ruby/object:Gem::Dependency
|
188
187
|
name: pact-support
|
189
|
-
requirement: !ruby/object:Gem::Requirement
|
190
|
-
requirements:
|
191
|
-
- - "~>"
|
192
|
-
- !ruby/object:Gem::Version
|
193
|
-
version: '1.16'
|
194
|
-
- - ">="
|
195
|
-
- !ruby/object:Gem::Version
|
196
|
-
version: 1.16.4
|
197
|
-
type: :runtime
|
198
|
-
prerelease: false
|
199
|
-
version_requirements: !ruby/object:Gem::Requirement
|
200
|
-
requirements:
|
201
|
-
- - "~>"
|
202
|
-
- !ruby/object:Gem::Version
|
203
|
-
version: '1.16'
|
204
|
-
- - ">="
|
205
|
-
- !ruby/object:Gem::Version
|
206
|
-
version: 1.16.4
|
207
|
-
- !ruby/object:Gem::Dependency
|
208
|
-
name: padrino-core
|
209
188
|
requirement: !ruby/object:Gem::Requirement
|
210
189
|
requirements:
|
211
190
|
- - ">="
|
212
191
|
- !ruby/object:Gem::Version
|
213
|
-
version:
|
192
|
+
version: 1.21.2
|
214
193
|
- - "~>"
|
215
194
|
- !ruby/object:Gem::Version
|
216
|
-
version: '
|
195
|
+
version: '1.21'
|
217
196
|
type: :runtime
|
218
197
|
prerelease: false
|
219
198
|
version_requirements: !ruby/object:Gem::Requirement
|
220
199
|
requirements:
|
221
200
|
- - ">="
|
222
201
|
- !ruby/object:Gem::Version
|
223
|
-
version:
|
224
|
-
- - "~>"
|
225
|
-
- !ruby/object:Gem::Version
|
226
|
-
version: '0.14'
|
227
|
-
- !ruby/object:Gem::Dependency
|
228
|
-
name: sinatra
|
229
|
-
requirement: !ruby/object:Gem::Requirement
|
230
|
-
requirements:
|
231
|
-
- - "~>"
|
232
|
-
- !ruby/object:Gem::Version
|
233
|
-
version: '3.0'
|
234
|
-
type: :runtime
|
235
|
-
prerelease: false
|
236
|
-
version_requirements: !ruby/object:Gem::Requirement
|
237
|
-
requirements:
|
202
|
+
version: 1.21.2
|
238
203
|
- - "~>"
|
239
204
|
- !ruby/object:Gem::Version
|
240
|
-
version: '
|
205
|
+
version: '1.21'
|
241
206
|
- !ruby/object:Gem::Dependency
|
242
207
|
name: haml
|
243
208
|
requirement: !ruby/object:Gem::Requirement
|
@@ -582,6 +547,7 @@ files:
|
|
582
547
|
- docs/api/PACTICIPANTS.md
|
583
548
|
- docs/api/PAGINATION.md
|
584
549
|
- docs/api/WEBHOOKS.md
|
550
|
+
- docs/developer/business_domain_models.md
|
585
551
|
- docs/developer/design_pattern_for_eager_loading_collections.md
|
586
552
|
- docs/developer/matrix.md
|
587
553
|
- docs/developer/rack.md
|
@@ -672,6 +638,7 @@ files:
|
|
672
638
|
- lib/pact_broker/api/decorators/pacts_for_verification_query_decorator.rb
|
673
639
|
- lib/pact_broker/api/decorators/pagination_links.rb
|
674
640
|
- lib/pact_broker/api/decorators/provider_pacts_decorator.rb
|
641
|
+
- lib/pact_broker/api/decorators/provider_states_decorator.rb
|
675
642
|
- lib/pact_broker/api/decorators/publish_contract_decorator.rb
|
676
643
|
- lib/pact_broker/api/decorators/publish_contracts_decorator.rb
|
677
644
|
- lib/pact_broker/api/decorators/publish_contracts_results_decorator.rb
|
@@ -774,6 +741,7 @@ files:
|
|
774
741
|
- lib/pact_broker/api/resources/previous_distinct_pact_version.rb
|
775
742
|
- lib/pact_broker/api/resources/provider_pacts.rb
|
776
743
|
- lib/pact_broker/api/resources/provider_pacts_for_verification.rb
|
744
|
+
- lib/pact_broker/api/resources/provider_states.rb
|
777
745
|
- lib/pact_broker/api/resources/publish_contracts.rb
|
778
746
|
- lib/pact_broker/api/resources/relationships.rb
|
779
747
|
- lib/pact_broker/api/resources/released_version.rb
|
@@ -899,6 +867,7 @@ files:
|
|
899
867
|
- lib/pact_broker/doc/views/pact/latest-pact-version.markdown
|
900
868
|
- lib/pact_broker/doc/views/pact/matrix-for-consumer-version.markdown
|
901
869
|
- lib/pact_broker/doc/views/pact/pact-webhooks.markdown
|
870
|
+
- lib/pact_broker/doc/views/pact/provider-states.markdown
|
902
871
|
- lib/pact_broker/doc/views/pact/publish-verification-results.markdown
|
903
872
|
- lib/pact_broker/doc/views/pact/tag-prod-version.markdown
|
904
873
|
- lib/pact_broker/doc/views/pact/tag-version.markdown
|
@@ -1000,6 +969,7 @@ files:
|
|
1000
969
|
- lib/pact_broker/pacts/pacts_for_verification_repository.rb
|
1001
970
|
- lib/pact_broker/pacts/parse.rb
|
1002
971
|
- lib/pact_broker/pacts/placeholder_pact.rb
|
972
|
+
- lib/pact_broker/pacts/provider_state_service.rb
|
1003
973
|
- lib/pact_broker/pacts/repository.rb
|
1004
974
|
- lib/pact_broker/pacts/selected_pact.rb
|
1005
975
|
- lib/pact_broker/pacts/selector.rb
|
@@ -1254,7 +1224,6 @@ homepage: https://github.com/pact-foundation/pact_broker
|
|
1254
1224
|
licenses:
|
1255
1225
|
- MIT
|
1256
1226
|
metadata: {}
|
1257
|
-
post_install_message:
|
1258
1227
|
rdoc_options: []
|
1259
1228
|
require_paths:
|
1260
1229
|
- lib
|
@@ -1269,8 +1238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1269
1238
|
- !ruby/object:Gem::Version
|
1270
1239
|
version: '0'
|
1271
1240
|
requirements: []
|
1272
|
-
rubygems_version: 3.
|
1273
|
-
signing_key:
|
1241
|
+
rubygems_version: 3.6.3
|
1274
1242
|
specification_version: 4
|
1275
1243
|
summary: See description
|
1276
1244
|
test_files: []
|