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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f58c954e3864629cd056224198acfe87df68d7a38ff2a098bf1c7e78541a8d1
4
- data.tar.gz: 6f59e94416775c9beb054cd7ef0ca77e055505e99864a8cc0c0dd4c8a0bf3f9b
3
+ metadata.gz: aae45f50ce42ed60ea96c782c5cea44a8c3398d28aabdb705e0941e87690f59f
4
+ data.tar.gz: a27c8cbf72dd52c2d75a7c06319029c115d4b6c284033fa5487b4e6eefe6f565
5
5
  SHA512:
6
- metadata.gz: d64bab2b42d053d80a63c797e2a3ee84f2731a8eee85368a31bb1d70a102ef38df362feb7ef9151b2890307944123e0a0ec04acb82e1c7d956f88c12d6935116
7
- data.tar.gz: 8c46ee348ffad72bad86d132873e1d812c70585b570d8e63c7b71187dfd653afa1eea795f804b8fb2d2ed3fe1f7d372996ff4eb598fcc17a775cd214be5cb236
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.14.3", "~> 0.14", require: false
11
- gem "sinatra", "~> 3.0", require: false
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", "~>1.34"
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", "~>0.20"
36
+ gem "openapi_first", ">= 2.3", "< 3"
37
37
  end
38
38
 
39
39
  group :pg, optional: true do
@@ -22,7 +22,7 @@ module PactBroker
22
22
  end
23
23
 
24
24
  def policy_name
25
- :'pacts::pacts'
25
+ :'pacts::pact'
26
26
  end
27
27
 
28
28
  private
@@ -1,6 +1,6 @@
1
1
  require "pact_broker/diagnostic/resources/heartbeat"
2
2
  require "pact_broker/diagnostic/resources/dependencies"
3
- require "webmachine/adapters/rack_mapped"
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 = :RackMapped
30
+ config.adapter = :Rack3Mapped
31
31
  end
32
32
 
33
33
  app.adapter
@@ -1,3 +1,4 @@
1
+ require "rackup"
1
2
  require "padrino-core"
2
3
  require "haml"
3
4
  require "pact_broker/services"
@@ -1,3 +1,3 @@
1
1
  module PactBroker
2
- VERSION = "2.113.0"
2
+ VERSION = "2.113.1"
3
3
  end
@@ -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::Utils::HeaderHash.new(attributes[:headers] || {})
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 = Rack::Utils::HeaderHash.new(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::Utils::HeaderHash.new) do | (key, value), new_headers |
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/rack_mapped"
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 = :RackMapped
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/rack_mapped"
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::Rack::RackRequest.new(
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::Rack::RequestBody.new(rack_req),
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::Rack::RackRequest.new(http_method, "/", Webmachine::Headers["host" => "example.org"], nil, {}, {}, { "REQUEST_METHOD" => http_method })
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", ">= 2.2.3", "~> 2.2" # TODO update to 3
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", "~> 3.0"
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.0
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-02-13 00:00:00.000000000 Z
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: '2.2'
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: '2.2'
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: '3.0'
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: '3.0'
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.3
1228
+ rubygems_version: 3.6.5
1242
1229
  specification_version: 4
1243
1230
  summary: See description
1244
1231
  test_files: []