pact_broker 2.113.0 → 2.113.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile +4 -4
- data/lib/pact_broker/api/resources/provider_states.rb +1 -1
- data/lib/pact_broker/diagnostic/app.rb +2 -2
- data/lib/pact_broker/ui/controllers/base_controller.rb +1 -0
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/webhooks/webhook_request_template.rb +4 -3
- data/lib/pact_broker/webmachine.rb +2 -3
- data/lib/webmachine/adapters/rack3_adapter.rb +178 -0
- data/lib/webmachine/describe_routes.rb +4 -4
- data/pact_broker.gemspec +2 -3
- metadata +14 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aae45f50ce42ed60ea96c782c5cea44a8c3398d28aabdb705e0941e87690f59f
|
4
|
+
data.tar.gz: a27c8cbf72dd52c2d75a7c06319029c115d4b6c284033fa5487b4e6eefe6f565
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76ad626f57a946907f476c41a17ededfdcb27352a85196e640bbe228a49300f3a6efbc74b32576a3d76b778544c2ee8c2f3255182be90985db4a0683bc06fa34
|
7
|
+
data.tar.gz: 21aa4ec4d72413459dc670f896e5a5c2d9dfd7b3ac6635685fce9d91b1d8ee0e41d73ed4a0e46ae75a8a88eb9069267b762f110d5cb5fcd9b7c2c8aa6519b20a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
<a name="v2.113.1"></a>
|
2
|
+
### v2.113.1 (2025-02-20)
|
3
|
+
|
4
|
+
#### Bug Fixes
|
5
|
+
|
6
|
+
* Update openapi_first and use it's coverage thing (#783) ([b3da850b](/../../commit/b3da850b))
|
7
|
+
* incorrect ProviderStates policy name. (#782) ([bddfd2d0](/../../commit/bddfd2d0))
|
8
|
+
|
1
9
|
<a name="v2.113.0"></a>
|
2
10
|
### v2.113.0 (2025-02-13)
|
3
11
|
|
data/Gemfile
CHANGED
@@ -7,8 +7,8 @@ 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.
|
11
|
-
gem "
|
10
|
+
gem "padrino-core", ">= 0.16.0.pre3", require: false
|
11
|
+
gem "rackup", "~> 2.2"
|
12
12
|
|
13
13
|
group :development do
|
14
14
|
gem "pry-byebug"
|
@@ -29,11 +29,11 @@ group :test do
|
|
29
29
|
gem "database_cleaner", "~>1.8", ">= 1.8.1"
|
30
30
|
gem "timecop", "~> 0.9"
|
31
31
|
gem "faraday", "~>2.0"
|
32
|
-
gem "docker-api", "~>
|
32
|
+
gem "docker-api", "~>2.0"
|
33
33
|
gem "approvals", ">=0.0.24", "<1.0.0"
|
34
34
|
gem "tzinfo", "~>2.0"
|
35
35
|
gem "faraday-retry", "~>2.0"
|
36
|
-
gem "openapi_first", "
|
36
|
+
gem "openapi_first", ">= 2.3", "< 3"
|
37
37
|
end
|
38
38
|
|
39
39
|
group :pg, optional: true do
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "pact_broker/diagnostic/resources/heartbeat"
|
2
2
|
require "pact_broker/diagnostic/resources/dependencies"
|
3
|
-
require "webmachine/adapters/
|
3
|
+
require "webmachine/adapters/rack3_adapter"
|
4
4
|
|
5
5
|
module PactBroker
|
6
6
|
module Diagnostic
|
@@ -27,7 +27,7 @@ module PactBroker
|
|
27
27
|
end
|
28
28
|
|
29
29
|
app.configure do |config|
|
30
|
-
config.adapter = :
|
30
|
+
config.adapter = :Rack3Mapped
|
31
31
|
end
|
32
32
|
|
33
33
|
app.adapter
|
data/lib/pact_broker/version.rb
CHANGED
@@ -24,7 +24,8 @@ module PactBroker
|
|
24
24
|
attributes.each do | (name, value) |
|
25
25
|
instance_variable_set("@#{name}", value) if respond_to?(name)
|
26
26
|
end
|
27
|
-
@headers = Rack::
|
27
|
+
@headers = Rack::Headers.new
|
28
|
+
@headers.merge!(attributes[:headers]) if attributes[:headers]
|
28
29
|
end
|
29
30
|
|
30
31
|
def build(template_params, user_agent: nil, disable_ssl_verification: false, cert_store: nil)
|
@@ -59,7 +60,7 @@ module PactBroker
|
|
59
60
|
end
|
60
61
|
|
61
62
|
def headers= headers
|
62
|
-
@headers
|
63
|
+
@headers.replace(headers)
|
63
64
|
end
|
64
65
|
|
65
66
|
def uses_parameter?(parameter_name)
|
@@ -114,7 +115,7 @@ module PactBroker
|
|
114
115
|
end
|
115
116
|
|
116
117
|
def build_headers(template_params)
|
117
|
-
headers.each_with_object(Rack::
|
118
|
+
headers.each_with_object(Rack::Headers.new) do | (key, value), new_headers |
|
118
119
|
new_headers[key] = build_string(value, template_params)
|
119
120
|
end
|
120
121
|
end
|
@@ -1,10 +1,9 @@
|
|
1
1
|
require "webmachine"
|
2
2
|
require "webmachine/application_monkey_patch"
|
3
|
-
require "webmachine/adapters/
|
3
|
+
require "webmachine/adapters/rack3_adapter"
|
4
4
|
require "webmachine/application_monkey_patch"
|
5
5
|
require "webmachine/render_error_monkey_patch"
|
6
6
|
|
7
|
-
|
8
7
|
module Webmachine
|
9
8
|
def self.build_rack_api(application_context)
|
10
9
|
api = Webmachine::Application.new do |app|
|
@@ -14,7 +13,7 @@ module Webmachine
|
|
14
13
|
api.application_context = application_context
|
15
14
|
|
16
15
|
api.configure do |config|
|
17
|
-
config.adapter = :
|
16
|
+
config.adapter = :Rack3Mapped
|
18
17
|
end
|
19
18
|
|
20
19
|
api.adapter
|
@@ -0,0 +1,178 @@
|
|
1
|
+
# Taken from https://github.com/webmachine/webmachine-ruby/blob/master/lib/webmachine/adapters/rack.rb
|
2
|
+
|
3
|
+
require "webmachine/adapter"
|
4
|
+
require "rack"
|
5
|
+
require "webmachine/constants"
|
6
|
+
require "webmachine/headers"
|
7
|
+
require "webmachine/request"
|
8
|
+
require "webmachine/response"
|
9
|
+
require "webmachine/version"
|
10
|
+
require "webmachine/chunked_body"
|
11
|
+
|
12
|
+
module Webmachine
|
13
|
+
module Adapters
|
14
|
+
class Rack3 < Adapter
|
15
|
+
# Used to override default Rack server options (useful in testing)
|
16
|
+
DEFAULT_OPTIONS = {}
|
17
|
+
|
18
|
+
REQUEST_URI = "REQUEST_URI".freeze
|
19
|
+
RACK_VERSION = ::Rack::RELEASE.match(/^(\d+\.\d+)/)[1]
|
20
|
+
VERSION_STRING = "#{Webmachine::SERVER_STRING} Rack/#{RACK_VERSION}".freeze
|
21
|
+
NEWLINE = "\n".freeze
|
22
|
+
|
23
|
+
# Start the Rack adapter
|
24
|
+
def run
|
25
|
+
options = DEFAULT_OPTIONS.merge({
|
26
|
+
app: self,
|
27
|
+
Port: application.configuration.port,
|
28
|
+
Host: application.configuration.ip
|
29
|
+
}).merge(application.configuration.adapter_options)
|
30
|
+
|
31
|
+
@server = ::Rack::Server.new(options)
|
32
|
+
@server.start
|
33
|
+
end
|
34
|
+
|
35
|
+
# Handles a Rack-based request.
|
36
|
+
# @param [Hash] env the Rack environment
|
37
|
+
def call(env)
|
38
|
+
headers = Webmachine::Headers.from_cgi(env)
|
39
|
+
|
40
|
+
rack_req = ::Rack::Request.new env
|
41
|
+
request = build_webmachine_request(rack_req, headers)
|
42
|
+
|
43
|
+
response = Webmachine::Response.new
|
44
|
+
application.dispatcher.dispatch(request, response)
|
45
|
+
|
46
|
+
response.headers[SERVER] = VERSION_STRING
|
47
|
+
|
48
|
+
rack_body =
|
49
|
+
case response.body
|
50
|
+
when String # Strings are enumerable in ruby 1.8
|
51
|
+
[response.body]
|
52
|
+
else
|
53
|
+
if (io_body = IO.try_convert(response.body))
|
54
|
+
io_body
|
55
|
+
elsif response.body.respond_to?(:call)
|
56
|
+
response.body
|
57
|
+
elsif response.body.respond_to?(:each)
|
58
|
+
response.body
|
59
|
+
else
|
60
|
+
[response.body.to_s]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
rack_res = ::Rack::Response.new(rack_body, response.code, response.headers)
|
65
|
+
rack_res.finish
|
66
|
+
end
|
67
|
+
|
68
|
+
protected
|
69
|
+
|
70
|
+
def routing_tokens(_rack_req)
|
71
|
+
nil # no-op for default, un-mapped rack adapter
|
72
|
+
end
|
73
|
+
|
74
|
+
def base_uri(_rack_req)
|
75
|
+
nil # no-op for default, un-mapped rack adapter
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
def build_webmachine_request(rack_req, headers)
|
81
|
+
RackRequest.new(rack_req.request_method,
|
82
|
+
rack_req.url,
|
83
|
+
headers,
|
84
|
+
RequestBody.new(rack_req),
|
85
|
+
routing_tokens(rack_req),
|
86
|
+
base_uri(rack_req),
|
87
|
+
rack_req.env)
|
88
|
+
end
|
89
|
+
|
90
|
+
class RackRequest < Webmachine::Request
|
91
|
+
attr_reader :env
|
92
|
+
|
93
|
+
# Yeah, Rubocop, piss off!
|
94
|
+
# rubocop:disable ParameterLists
|
95
|
+
def initialize(method, uri, headers, body, routing_tokens, base_uri, env)
|
96
|
+
super(method, uri, headers, body, routing_tokens, base_uri)
|
97
|
+
@env = env
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
# Wraps the Rack input so it can be treated like a String or
|
102
|
+
# Enumerable.
|
103
|
+
# @api private
|
104
|
+
class RequestBody
|
105
|
+
# @param [Rack::Request] request the Rack request
|
106
|
+
def initialize(request)
|
107
|
+
@request = request
|
108
|
+
end
|
109
|
+
|
110
|
+
# Rack Servers differ in the way you can access their request bodys.
|
111
|
+
# While some allow you to directly get a Ruby IO object others don't.
|
112
|
+
# You have to check the methods they expose, like #gets, #read, #each, #rewind and maybe others.
|
113
|
+
# See: https://github.com/rack/rack/blob/rack-1.5/lib/rack/lint.rb#L296
|
114
|
+
# @return [IO] the request body
|
115
|
+
def to_io
|
116
|
+
@request.body
|
117
|
+
end
|
118
|
+
|
119
|
+
# Converts the body to a String so you can work with the entire
|
120
|
+
# thing.
|
121
|
+
# @return [String] the request body as a string
|
122
|
+
def to_s
|
123
|
+
if @value
|
124
|
+
@value.join
|
125
|
+
elsif @request.body.respond_to?(:to_ary)
|
126
|
+
@request.body.to_ary.join
|
127
|
+
elsif @request.body.respond_to?(:read)
|
128
|
+
@request.body.rewind if @request.body.respond_to?(:rewind)
|
129
|
+
@request.body.read
|
130
|
+
else
|
131
|
+
@request.body&.to_s || ""
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
# Iterates over the body in chunks. If the body has previously
|
136
|
+
# been read, this method can be called again and get the same
|
137
|
+
# sequence of chunks.
|
138
|
+
# @yield [chunk]
|
139
|
+
# @yieldparam [String] chunk a chunk of the request body
|
140
|
+
def each
|
141
|
+
if @value
|
142
|
+
@value.each { |chunk| yield chunk }
|
143
|
+
elsif @request.body.respond_to?(:each)
|
144
|
+
@value = []
|
145
|
+
@request.body.each { |chunk|
|
146
|
+
@value << chunk
|
147
|
+
yield chunk
|
148
|
+
}
|
149
|
+
elsif @request.body.respond_to?(:to_ary)
|
150
|
+
@value = @request.body.to_ary
|
151
|
+
@value.each { |chunk| yield chunk }
|
152
|
+
else
|
153
|
+
yield @request.body
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end # class RequestBody
|
157
|
+
end # class Rack
|
158
|
+
|
159
|
+
class Rack3Mapped < Rack3
|
160
|
+
protected
|
161
|
+
|
162
|
+
def routing_tokens(rack_req)
|
163
|
+
routing_match = rack_req.path_info.match(Webmachine::Request::ROUTING_PATH_MATCH)
|
164
|
+
routing_path = routing_match ? routing_match[1] : ""
|
165
|
+
routing_path.split(SLASH)
|
166
|
+
end
|
167
|
+
|
168
|
+
def base_uri(rack_req)
|
169
|
+
# rack SCRIPT_NAME env var doesn't end with "/". This causes weird
|
170
|
+
# behavour when URI.join concatenates URI components in
|
171
|
+
# Webmachine::Decision::Flow#n11
|
172
|
+
script_name = rack_req.script_name + SLASH
|
173
|
+
URI.join(rack_req.base_url, script_name)
|
174
|
+
end
|
175
|
+
end # class RackMapped
|
176
|
+
|
177
|
+
end # module Adapters
|
178
|
+
end # module Webmachine
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require "webmachine/adapters/
|
1
|
+
require "webmachine/adapters/rack3_adapter"
|
2
2
|
require "pact_broker/string_refinements"
|
3
3
|
|
4
4
|
# Code to describe the routes in a Webmachine API, including
|
@@ -44,11 +44,11 @@ module Webmachine
|
|
44
44
|
}.merge(path_params)
|
45
45
|
|
46
46
|
rack_req = ::Rack::Request.new({ "REQUEST_METHOD" => "GET", "rack.input" => StringIO.new("") }.merge(env) )
|
47
|
-
request = Webmachine::Adapters::
|
47
|
+
request = Webmachine::Adapters::Rack3::RackRequest.new(
|
48
48
|
rack_req.env["REQUEST_METHOD"],
|
49
49
|
path,
|
50
50
|
Webmachine::Headers.from_cgi({"HTTP_HOST" => "example.org"}.merge(env)),
|
51
|
-
Webmachine::Adapters::
|
51
|
+
Webmachine::Adapters::Rack3::RequestBody.new(rack_req),
|
52
52
|
{},
|
53
53
|
{},
|
54
54
|
rack_req.env
|
@@ -134,7 +134,7 @@ module Webmachine
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def self.build_request(http_method: "GET", path_info: )
|
137
|
-
request = Webmachine::Adapters::
|
137
|
+
request = Webmachine::Adapters::Rack3::RackRequest.new(http_method, "/", Webmachine::Headers["host" => "example.org"], nil, {}, {}, { "REQUEST_METHOD" => http_method })
|
138
138
|
request.path_info = path_info
|
139
139
|
request
|
140
140
|
end
|
data/pact_broker.gemspec
CHANGED
@@ -56,14 +56,13 @@ Gem::Specification.new do |gem|
|
|
56
56
|
gem.add_runtime_dependency "reform", "~> 2.6"
|
57
57
|
gem.add_runtime_dependency "sequel", "~> 5.28"
|
58
58
|
gem.add_runtime_dependency "webmachine", ">= 2.0.0.beta", "< 3.0"
|
59
|
-
gem.add_runtime_dependency "webrick", "~> 1.8" # webmachine requires webrick, but doesn't declare it as a dependency :shrug:
|
60
59
|
gem.add_runtime_dependency "semver2", "~> 3.4.2"
|
61
|
-
gem.add_runtime_dependency "rack", "
|
60
|
+
gem.add_runtime_dependency "rack", "~> 3.1", ">= 3.1.10"
|
62
61
|
gem.add_runtime_dependency "redcarpet", ">= 3.5.1", "~>3.5"
|
63
62
|
gem.add_runtime_dependency "pact-support" , ">= 1.21.2", "~> 1.21"
|
64
63
|
gem.add_runtime_dependency "haml", "~>5.0"
|
65
64
|
gem.add_runtime_dependency "sucker_punch", "~>3.0"
|
66
|
-
gem.add_runtime_dependency "rack-protection", "~>
|
65
|
+
gem.add_runtime_dependency "rack-protection", "~> 4.1"
|
67
66
|
gem.add_runtime_dependency "table_print", "~> 1.5"
|
68
67
|
gem.add_runtime_dependency "semantic_logger", "~> 4.11"
|
69
68
|
gem.add_runtime_dependency "sanitize", "~> 6.0"
|
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.113.
|
4
|
+
version: 2.113.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bethany Skurrie
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
- Warner Godfrey
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2025-
|
12
|
+
date: 2025-03-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -115,20 +115,6 @@ dependencies:
|
|
115
115
|
- - "<"
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '3.0'
|
118
|
-
- !ruby/object:Gem::Dependency
|
119
|
-
name: webrick
|
120
|
-
requirement: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '1.8'
|
125
|
-
type: :runtime
|
126
|
-
prerelease: false
|
127
|
-
version_requirements: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '1.8'
|
132
118
|
- !ruby/object:Gem::Dependency
|
133
119
|
name: semver2
|
134
120
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,22 +133,22 @@ dependencies:
|
|
147
133
|
name: rack
|
148
134
|
requirement: !ruby/object:Gem::Requirement
|
149
135
|
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 2.2.3
|
153
136
|
- - "~>"
|
154
137
|
- !ruby/object:Gem::Version
|
155
|
-
version: '
|
138
|
+
version: '3.1'
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 3.1.10
|
156
142
|
type: :runtime
|
157
143
|
prerelease: false
|
158
144
|
version_requirements: !ruby/object:Gem::Requirement
|
159
145
|
requirements:
|
160
|
-
- - ">="
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
version: 2.2.3
|
163
146
|
- - "~>"
|
164
147
|
- !ruby/object:Gem::Version
|
165
|
-
version: '
|
148
|
+
version: '3.1'
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: 3.1.10
|
166
152
|
- !ruby/object:Gem::Dependency
|
167
153
|
name: redcarpet
|
168
154
|
requirement: !ruby/object:Gem::Requirement
|
@@ -237,14 +223,14 @@ dependencies:
|
|
237
223
|
requirements:
|
238
224
|
- - "~>"
|
239
225
|
- !ruby/object:Gem::Version
|
240
|
-
version: '
|
226
|
+
version: '4.1'
|
241
227
|
type: :runtime
|
242
228
|
prerelease: false
|
243
229
|
version_requirements: !ruby/object:Gem::Requirement
|
244
230
|
requirements:
|
245
231
|
- - "~>"
|
246
232
|
- !ruby/object:Gem::Version
|
247
|
-
version: '
|
233
|
+
version: '4.1'
|
248
234
|
- !ruby/object:Gem::Dependency
|
249
235
|
name: table_print
|
250
236
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1107,6 +1093,7 @@ files:
|
|
1107
1093
|
- lib/sequel/plugins/age.rb
|
1108
1094
|
- lib/sequel/plugins/insert_ignore.rb
|
1109
1095
|
- lib/sequel/plugins/upsert.rb
|
1096
|
+
- lib/webmachine/adapters/rack3_adapter.rb
|
1110
1097
|
- lib/webmachine/application_monkey_patch.rb
|
1111
1098
|
- lib/webmachine/describe_routes.rb
|
1112
1099
|
- lib/webmachine/render_error_monkey_patch.rb
|
@@ -1238,7 +1225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1238
1225
|
- !ruby/object:Gem::Version
|
1239
1226
|
version: '0'
|
1240
1227
|
requirements: []
|
1241
|
-
rubygems_version: 3.6.
|
1228
|
+
rubygems_version: 3.6.5
|
1242
1229
|
specification_version: 4
|
1243
1230
|
summary: See description
|
1244
1231
|
test_files: []
|