pact_broker 2.75.0 → 2.76.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 +8 -0
- data/ISSUES.md +3 -3
- data/docker-compose-issue-repro-with-pact-broker-docker-image.yml +33 -0
- data/lib/pact_broker/api/paths.rb +5 -0
- data/lib/pact_broker/api/resources/default_base_resource.rb +2 -2
- data/lib/pact_broker/app.rb +5 -0
- data/lib/pact_broker/doc/controllers/app.rb +1 -1
- data/lib/pact_broker/test/http_test_data_builder.rb +10 -10
- data/lib/pact_broker/version.rb +1 -1
- data/lib/rack/pact_broker/hal_browser_redirect.rb +42 -0
- data/lib/rack/pact_broker/set_base_url.rb +22 -0
- data/script/reproduce-issue.rb +17 -14
- data/spec/lib/pact_broker/api/resources/default_base_resource_spec.rb +1 -12
- data/spec/lib/pact_broker/doc/controllers/app_spec.rb +3 -5
- data/spec/lib/rack/pact_broker/hal_browser_redirect_spec.rb +27 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d14eafba260b6b71dd75c725768863c0f923e167bdb37084606a0b51d110d363
|
4
|
+
data.tar.gz: 545dabeda5ede4c25508e8ca5135d94dacec61f9df1692207787bdc6e3227ec4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8df83a6bf1588e8a9a96f915b0926d1a164ebd8f246d7ed831d83d43610bcbaf38875800bbd56ab792af3c9b2b6a9b2f415b6e3a581b6d8955e80248b25d67d
|
7
|
+
data.tar.gz: f1bb7162afee7913b9ac53fc523aa47d021f760350cca52758af1f626f3c440dd73bd02921254487820b1724b5a4c3e334283f728e7b279d92a69b29995de074
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
<a name="v2.76.0"></a>
|
2
|
+
### v2.76.0 (2021-01-21)
|
3
|
+
|
4
|
+
#### Features
|
5
|
+
|
6
|
+
* **verification results**
|
7
|
+
* redirect requests for verification results to the HAL browser if requested in a web browser ([0f948de5](/../../commit/0f948de5))
|
8
|
+
|
1
9
|
<a name="v2.75.0"></a>
|
2
10
|
### v2.75.0 (2021-01-18)
|
3
11
|
|
data/ISSUES.md
CHANGED
@@ -8,16 +8,16 @@ You can use it to easily reproduce issues.
|
|
8
8
|
|
9
9
|
To use it:
|
10
10
|
|
11
|
-
* Run the Pact Broker using the
|
11
|
+
* Run the Pact Broker using a specific Pact Broker Docker image by setting the required tag for the pact-broker service in the docker-compose-issue-repro-with-pact-broker-docker-image.yml file.
|
12
12
|
|
13
13
|
```
|
14
|
-
docker-compose -f docker-compose-issue-repro.yml up --build pact-broker
|
14
|
+
docker-compose -f docker-compose-issue-repro-with-pact-broker-docker-image.yml up --build pact-broker
|
15
15
|
```
|
16
16
|
|
17
17
|
* Run the reproduction script.
|
18
18
|
|
19
19
|
```
|
20
|
-
docker-compose -f docker-compose-issue-repro.yml up repro-issue
|
20
|
+
docker-compose -f docker-compose-issue-repro-with-pact-broker-docker-image.yml up repro-issue
|
21
21
|
```
|
22
22
|
|
23
23
|
You can modify `script/reproduce-issue.rb` and then re-run it with the change applied.
|
@@ -0,0 +1,33 @@
|
|
1
|
+
version: "3"
|
2
|
+
|
3
|
+
services:
|
4
|
+
postgres:
|
5
|
+
image: postgres
|
6
|
+
healthcheck:
|
7
|
+
test: psql postgres --command "select 1" -U postgres
|
8
|
+
environment:
|
9
|
+
POSTGRES_USER: postgres
|
10
|
+
POSTGRES_PASSWORD: password
|
11
|
+
POSTGRES_DB: postgres
|
12
|
+
|
13
|
+
pact-broker:
|
14
|
+
image: pactfoundation/pact-broker:2.73.0.0
|
15
|
+
ports:
|
16
|
+
- "9292:9292"
|
17
|
+
depends_on:
|
18
|
+
- postgres
|
19
|
+
environment:
|
20
|
+
PACT_BROKER_PORT: '9292'
|
21
|
+
PACT_BROKER_DATABASE_URL: "postgres://postgres:password@postgres/postgres"
|
22
|
+
PACT_BROKER_LOG_LEVEL: INFO
|
23
|
+
PACT_BROKER_SQL_LOG_LEVEL: DEBUG
|
24
|
+
|
25
|
+
repro-issue:
|
26
|
+
build: .
|
27
|
+
depends_on:
|
28
|
+
- pact-broker
|
29
|
+
command: dockerize -wait http://pact-broker:9292 -timeout 30s /home/script/reproduce-issue.rb
|
30
|
+
environment:
|
31
|
+
- PACT_BROKER_BASE_URL=http://pact-broker:9292
|
32
|
+
volumes:
|
33
|
+
- $PWD:/home
|
@@ -4,9 +4,14 @@ module PactBroker
|
|
4
4
|
PACT_BADGE_PATH = %r{^/pacts/provider/[^/]+/consumer/.*/badge(?:\.[A-Za-z]+)?$}.freeze
|
5
5
|
MATRIX_BADGE_PATH = %r{^/matrix/provider/[^/]+/latest/[^/]+/consumer/[^/]+/latest/[^/]+/badge(?:\.[A-Za-z]+)?$}.freeze
|
6
6
|
CAN_I_DEPLOY_BADGE_PATH = %r{^/pacticipants/[^/]+/latest-version/[^/]+/can-i-deploy/to/[^/]+/badge(?:\.[A-Za-z]+)?$}.freeze
|
7
|
+
VERIFICATION_RESULTS = %r{^/pacts/provider/[^/]+/consumer/[^/]+/pact-version/[^/]+/verification-results/[^/]+}
|
7
8
|
|
8
9
|
extend self
|
9
10
|
|
11
|
+
def is_verification_results_path?(path)
|
12
|
+
path.start_with?('/pacts') && (path =~ VERIFICATION_RESULTS)
|
13
|
+
end
|
14
|
+
|
10
15
|
def is_badge_path?(path)
|
11
16
|
# Optimise by checking include? first - regexp slow
|
12
17
|
path.include?('/badge') && (path =~ PACT_BADGE_PATH || path =~ MATRIX_BADGE_PATH || path =~ CAN_I_DEPLOY_BADGE_PATH)
|
@@ -68,12 +68,12 @@ module PactBroker
|
|
68
68
|
alias_method :path_info, :identifier_from_path
|
69
69
|
|
70
70
|
def base_url
|
71
|
-
request.env["pactbroker.base_url"] ||
|
71
|
+
request.env["pactbroker.base_url"] || request.base_uri.to_s.chomp('/')
|
72
72
|
end
|
73
73
|
|
74
74
|
# See comments for base_url in lib/pact_broker/doc/controllers/app.rb
|
75
75
|
def ui_base_url
|
76
|
-
request.env["pactbroker.base_url"] ||
|
76
|
+
request.env["pactbroker.base_url"] || ''
|
77
77
|
end
|
78
78
|
|
79
79
|
def charsets_provided
|
data/lib/pact_broker/app.rb
CHANGED
@@ -5,6 +5,8 @@ require 'pact_broker/logging/default_formatter'
|
|
5
5
|
require 'pact_broker/policies'
|
6
6
|
require 'rack-protection'
|
7
7
|
require 'rack/hal_browser'
|
8
|
+
require 'rack/pact_broker/hal_browser_redirect'
|
9
|
+
require 'rack/pact_broker/set_base_url'
|
8
10
|
require 'rack/pact_broker/add_pact_broker_version_header'
|
9
11
|
require 'rack/pact_broker/convert_file_extension_to_accept_header'
|
10
12
|
require 'rack/pact_broker/database_transaction'
|
@@ -189,10 +191,13 @@ module PactBroker
|
|
189
191
|
@app_builder.use Rack::Static, :urls => ["/stylesheets", "/css", "/fonts", "/js", "/javascripts", "/images"], :root => PactBroker.project_root.join("public")
|
190
192
|
@app_builder.use Rack::Static, :urls => ["/favicon.ico"], :root => PactBroker.project_root.join("public/images"), header_rules: [[:all, {'Content-Type' => 'image/x-icon'}]]
|
191
193
|
@app_builder.use Rack::PactBroker::ConvertFileExtensionToAcceptHeader
|
194
|
+
# Rack::PactBroker::SetBaseUrl needs to be before the Rack::PactBroker::HalBrowserRedirect
|
195
|
+
@app_builder.use Rack::PactBroker::SetBaseUrl, configuration.base_url
|
192
196
|
|
193
197
|
if configuration.use_hal_browser
|
194
198
|
logger.info "Mounting HAL browser"
|
195
199
|
@app_builder.use Rack::HalBrowser::Redirect
|
200
|
+
@app_builder.use Rack::PactBroker::HalBrowserRedirect
|
196
201
|
else
|
197
202
|
logger.info "Not mounting HAL browser"
|
198
203
|
end
|
@@ -51,7 +51,7 @@ module PactBroker
|
|
51
51
|
# https://www.acunetix.com/blog/articles/automated-detection-of-host-header-attacks/
|
52
52
|
# Either use the explicitly configured base url or an empty string,
|
53
53
|
# rather than request.base_url, which uses the X-Forwarded headers.
|
54
|
-
env["pactbroker.base_url"] ||
|
54
|
+
env["pactbroker.base_url"] || ''
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
@@ -10,7 +10,7 @@ module PactBroker
|
|
10
10
|
|
11
11
|
attr_reader :client, :last_consumer_name, :last_provider_name, :last_consumer_version_number, :last_provider_version_number
|
12
12
|
|
13
|
-
def initialize(pact_broker_base_url, auth)
|
13
|
+
def initialize(pact_broker_base_url, auth = {})
|
14
14
|
@client = Faraday.new(url: pact_broker_base_url) do |faraday|
|
15
15
|
faraday.request :json
|
16
16
|
faraday.response :json, :content_type => /\bjson$/
|
@@ -42,7 +42,7 @@ module PactBroker
|
|
42
42
|
|
43
43
|
def create_tag(pacticipant:, version:, tag:)
|
44
44
|
puts "Creating tag '#{tag}' for #{pacticipant} version #{version}"
|
45
|
-
client.put("
|
45
|
+
client.put("pacticipants/#{encode(pacticipant)}/versions/#{encode(version)}/tags/#{encode(tag)}", {}).tap { |response| check_for_error(response) }
|
46
46
|
self
|
47
47
|
end
|
48
48
|
|
@@ -55,7 +55,7 @@ module PactBroker
|
|
55
55
|
|
56
56
|
def create_pacticipant(name)
|
57
57
|
puts "Creating pacticipant with name #{name}"
|
58
|
-
client.post("
|
58
|
+
client.post("pacticipants", { name: name}).tap { |response| check_for_error(response) }
|
59
59
|
separate
|
60
60
|
self
|
61
61
|
end
|
@@ -72,7 +72,7 @@ module PactBroker
|
|
72
72
|
|
73
73
|
content = generate_content(consumer, provider, content_id)
|
74
74
|
puts "Publishing pact for consumer #{consumer} version #{consumer_version} and provider #{provider}"
|
75
|
-
pact_path = "
|
75
|
+
pact_path = "pacts/provider/#{encode(provider)}/consumer/#{encode(consumer)}/version/#{encode(consumer_version)}"
|
76
76
|
@publish_pact_response = client.put(pact_path, content).tap { |response| check_for_error(response) }
|
77
77
|
separate
|
78
78
|
self
|
@@ -89,7 +89,7 @@ module PactBroker
|
|
89
89
|
}.compact
|
90
90
|
puts body.to_yaml
|
91
91
|
puts ""
|
92
|
-
@pacts_for_verification_response = client.post("
|
92
|
+
@pacts_for_verification_response = client.post("pacts/provider/#{encode(provider)}/for-verification", body).tap { |response| check_for_error(response) }
|
93
93
|
|
94
94
|
print_pacts_for_verification
|
95
95
|
separate
|
@@ -150,7 +150,7 @@ module PactBroker
|
|
150
150
|
"url" => url
|
151
151
|
}
|
152
152
|
}
|
153
|
-
path = "
|
153
|
+
path = "webhooks/#{uuid}"
|
154
154
|
response = client.put(path, request_body.to_json).tap { |response| check_for_error(response) }
|
155
155
|
separate
|
156
156
|
self
|
@@ -158,7 +158,7 @@ module PactBroker
|
|
158
158
|
|
159
159
|
def delete_webhook(uuid:)
|
160
160
|
puts "Deleting webhook with uuid #{uuid}"
|
161
|
-
path = "
|
161
|
+
path = "webhooks/#{uuid}"
|
162
162
|
response = client.delete(path).tap { |response| check_for_error(response) }
|
163
163
|
separate
|
164
164
|
self
|
@@ -170,7 +170,7 @@ module PactBroker
|
|
170
170
|
end
|
171
171
|
|
172
172
|
def can_i_deploy(pacticipant:, version:, to:)
|
173
|
-
can_i_deploy_response = client.get("
|
173
|
+
can_i_deploy_response = client.get("can-i-deploy", { pacticipant: pacticipant, version: version, to: to} ).tap { |response| check_for_error(response) }
|
174
174
|
can = !!(can_i_deploy_response.body['summary'] || {})['deployable']
|
175
175
|
puts "can-i-deploy #{pacticipant} version #{version} to #{to}: #{can ? 'yes' : 'no'}"
|
176
176
|
puts (can_i_deploy_response.body['summary'] || can_i_deploy_response.body).to_yaml
|
@@ -180,14 +180,14 @@ module PactBroker
|
|
180
180
|
|
181
181
|
def delete_integration(consumer:, provider:)
|
182
182
|
puts "Deleting all data for the integration between #{consumer} and #{provider}"
|
183
|
-
client.delete("
|
183
|
+
client.delete("integrations/provider/#{encode(provider)}/consumer/#{encode(consumer)}").tap { |response| check_for_error(response) }
|
184
184
|
separate
|
185
185
|
self
|
186
186
|
end
|
187
187
|
|
188
188
|
def delete_pacticipant(name)
|
189
189
|
puts "Deleting pacticipant #{name}"
|
190
|
-
@publish_pact_response = client.delete("
|
190
|
+
@publish_pact_response = client.delete("pacticipants/#{encode(name)}").tap { |response| check_for_error(response) }
|
191
191
|
separate
|
192
192
|
self
|
193
193
|
end
|
data/lib/pact_broker/version.rb
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'pact_broker/api/paths'
|
3
|
+
require 'pact_broker/configuration'
|
4
|
+
|
5
|
+
module Rack
|
6
|
+
module PactBroker
|
7
|
+
class HalBrowserRedirect
|
8
|
+
include ::PactBroker::Api::Paths
|
9
|
+
|
10
|
+
def initialize(app, options = {}, &block)
|
11
|
+
@app = app
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(env)
|
15
|
+
if redirect?(env)
|
16
|
+
return [303, {'Location' => hal_browser_url_from_request(env)}, []]
|
17
|
+
else
|
18
|
+
app.call(env)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
attr_reader :app
|
25
|
+
|
26
|
+
def redirect?(env)
|
27
|
+
is_get_for_html?(env) && is_verification_results_path?(env["PATH_INFO"])
|
28
|
+
end
|
29
|
+
|
30
|
+
def is_get_for_html?(env)
|
31
|
+
env["REQUEST_METHOD"] == "GET" && env["HTTP_ACCEPT"]&.include?("text/html")
|
32
|
+
end
|
33
|
+
|
34
|
+
# Doesn't support non root URLs currently
|
35
|
+
def hal_browser_url_from_request(env)
|
36
|
+
url = URI.parse("#{env["pactbroker.base_url"]}/hal-browser/browser.html")
|
37
|
+
url.fragment = "#{env["pactbroker.base_url"]}#{env["PATH_INFO"]}"
|
38
|
+
url.to_s
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Rack
|
2
|
+
module PactBroker
|
3
|
+
class SetBaseUrl
|
4
|
+
def initialize app, base_url
|
5
|
+
@app = app
|
6
|
+
@base_url = base_url
|
7
|
+
end
|
8
|
+
|
9
|
+
def call env
|
10
|
+
if env["pactbroker.base_url"]
|
11
|
+
app.call(env)
|
12
|
+
else
|
13
|
+
app.call(env.merge("pactbroker.base_url" => base_url))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
attr_reader :app, :base_url
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/script/reproduce-issue.rb
CHANGED
@@ -1,28 +1,31 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$LOAD_PATH << "#{Dir.pwd}/lib"
|
4
|
-
|
5
2
|
begin
|
6
3
|
|
4
|
+
$LOAD_PATH << "#{Dir.pwd}/lib"
|
7
5
|
require 'pact_broker/test/http_test_data_builder'
|
8
6
|
base_url = ENV['PACT_BROKER_BASE_URL'] || 'http://localhost:9292'
|
9
7
|
|
10
|
-
td = PactBroker::Test::HttpTestDataBuilder.new(base_url
|
11
|
-
td.delete_integration(consumer: "
|
12
|
-
.
|
13
|
-
.create_pacticipant("MyProvider")
|
14
|
-
.publish_pact(consumer: "MyConsumer", consumer_version: "1", provider: "MyProvider", content_id: "111", tag: "main")
|
15
|
-
.publish_pact(consumer: "MyConsumer", consumer_version: "2", provider: "MyProvider", content_id: "222", tag: "main")
|
16
|
-
.publish_pact(consumer: "MyConsumer", consumer_version: "3", provider: "MyProvider", content_id: "111", tag: "feat/a")
|
8
|
+
td = PactBroker::Test::HttpTestDataBuilder.new(base_url)
|
9
|
+
td.delete_integration(consumer: "foo-consumer", provider: "bar-provider")
|
10
|
+
.publish_pact(consumer: "foo-consumer", consumer_version: "1", provider: "bar-provider", content_id: "111", tag: "main")
|
17
11
|
.get_pacts_for_verification(
|
12
|
+
enable_pending: true,
|
18
13
|
provider_version_tag: "main",
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
include_wip_pacts_since: "2020-01-01",
|
15
|
+
consumer_version_selectors: [{ tag: "main", latest: true }])
|
16
|
+
.verify_pact(
|
17
|
+
index: 0,
|
18
|
+
provider_version_tag: "main",
|
19
|
+
provider_version: "1",
|
20
|
+
success: true
|
21
|
+
)
|
22
|
+
.can_i_deploy(pacticipant: "bar-provider", version: "1", to: "prod")
|
23
|
+
.deploy_to_prod(pacticipant: "bar-provider", version: "1")
|
24
|
+
.can_i_deploy(pacticipant: "foo-consumer", version: "1", to: "prod")
|
25
|
+
.deploy_to_prod(pacticipant: "foo-consumer", version: "1")
|
22
26
|
|
23
27
|
rescue StandardError => e
|
24
28
|
puts "#{e.class} #{e.message}"
|
25
29
|
puts e.backtrace
|
26
30
|
exit 1
|
27
31
|
end
|
28
|
-
|
@@ -90,7 +90,6 @@ module PactBroker
|
|
90
90
|
describe "base_url" do
|
91
91
|
before do
|
92
92
|
allow(env).to receive(:[]).with("pactbroker.base_url").and_return("http://rack")
|
93
|
-
allow(PactBroker.configuration).to receive(:base_url).and_return("http://foo")
|
94
93
|
end
|
95
94
|
|
96
95
|
context "when pactbroker.base_url is set on the env" do
|
@@ -99,20 +98,10 @@ module PactBroker
|
|
99
98
|
end
|
100
99
|
end
|
101
100
|
|
102
|
-
context "when
|
101
|
+
context "when the rack env value is not set" do
|
103
102
|
before do
|
104
103
|
allow(env).to receive(:[]).with("pactbroker.base_url").and_return(nil)
|
105
104
|
end
|
106
|
-
it "returns the configured base URL" do
|
107
|
-
expect(subject.base_url).to eq "http://foo"
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
context "when PactBroker.configuration.base_url is nil and the rack env value is not set" do
|
112
|
-
before do
|
113
|
-
allow(env).to receive(:[]).with("pactbroker.base_url").and_return(nil)
|
114
|
-
allow(PactBroker.configuration).to receive(:base_url).and_return(nil)
|
115
|
-
end
|
116
105
|
|
117
106
|
it "returns the base URL from the request" do
|
118
107
|
expect(subject.base_url).to eq "http://example.org"
|
@@ -4,13 +4,13 @@ module PactBroker
|
|
4
4
|
module Doc
|
5
5
|
module Controllers
|
6
6
|
describe App do
|
7
|
-
|
8
7
|
describe "GET relation" do
|
9
8
|
|
10
9
|
let(:app) { PactBroker::Doc::Controllers::App }
|
10
|
+
let(:rack_env) { {} }
|
11
11
|
|
12
12
|
context "when the resource exists" do
|
13
|
-
subject { get "/webhooks" }
|
13
|
+
subject { get "/webhooks", nil, rack_env }
|
14
14
|
|
15
15
|
it "returns a 200 status" do
|
16
16
|
subject
|
@@ -34,9 +34,7 @@ module PactBroker
|
|
34
34
|
end
|
35
35
|
|
36
36
|
context "with the base_url set" do
|
37
|
-
|
38
|
-
allow(PactBroker.configuration).to receive(:base_url).and_return('http://example.org/pact-broker')
|
39
|
-
end
|
37
|
+
let(:rack_env) { { "pactbroker.base_url" => "http://example.org/pact-broker"} }
|
40
38
|
|
41
39
|
it "returns absolute links" do
|
42
40
|
expect(subject.body).to include "href='http://example.org/pact-broker/css"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rack/pact_broker/hal_browser_redirect'
|
2
|
+
|
3
|
+
module Rack
|
4
|
+
module PactBroker
|
5
|
+
describe HalBrowserRedirect do
|
6
|
+
let(:target_app) { ->(env){ [200, {}, []] } }
|
7
|
+
let(:app) { HalBrowserRedirect.new(target_app) }
|
8
|
+
let(:rack_env) do
|
9
|
+
{
|
10
|
+
"pactbroker.base_url" => "http://base/foo",
|
11
|
+
"HTTP_ACCEPT" => "text/html"
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { get(path, nil, rack_env) }
|
16
|
+
|
17
|
+
context "when requesting verification results" do
|
18
|
+
let(:path) { "/pacts/provider/Bar/consumer/Foo/pact-version/a2456ade40d0e148e23fb3310ec56831fef6ce8e/verification-results/106" }
|
19
|
+
|
20
|
+
it "redirects to the HAL browser" do
|
21
|
+
expect(subject.status).to eq 303
|
22
|
+
expect(subject.headers["Location"]).to eq "http://base/foo/hal-browser/browser.html#http://base/foo/pacts/provider/Bar/consumer/Foo/pact-version/a2456ade40d0e148e23fb3310ec56831fef6ce8e/verification-results/106"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
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.
|
4
|
+
version: 2.76.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bethany Skurrie
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-01-
|
13
|
+
date: 2021-01-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: httparty
|
@@ -565,6 +565,7 @@ files:
|
|
565
565
|
- db/test/change_migration_strategy/before/Gemfile
|
566
566
|
- docker-compose-ci-mysql.yml
|
567
567
|
- docker-compose-dev-postgres.yml
|
568
|
+
- docker-compose-issue-repro-with-pact-broker-docker-image.yml
|
568
569
|
- docker-compose-issue-repro.yml
|
569
570
|
- docker-compose-test.yml
|
570
571
|
- docs/images/Pactflow logo - black small.png
|
@@ -970,10 +971,12 @@ files:
|
|
970
971
|
- lib/rack/pact_broker/convert_404_to_hal.rb
|
971
972
|
- lib/rack/pact_broker/convert_file_extension_to_accept_header.rb
|
972
973
|
- lib/rack/pact_broker/database_transaction.rb
|
974
|
+
- lib/rack/pact_broker/hal_browser_redirect.rb
|
973
975
|
- lib/rack/pact_broker/invalid_uri_protection.rb
|
974
976
|
- lib/rack/pact_broker/no_auth.rb
|
975
977
|
- lib/rack/pact_broker/request_target.rb
|
976
978
|
- lib/rack/pact_broker/reset_thread_data.rb
|
979
|
+
- lib/rack/pact_broker/set_base_url.rb
|
977
980
|
- lib/rack/pact_broker/ui_authentication.rb
|
978
981
|
- lib/rack/pact_broker/ui_request_filter.rb
|
979
982
|
- lib/rack/pact_broker/use_when.rb
|
@@ -1380,6 +1383,7 @@ files:
|
|
1380
1383
|
- spec/lib/rack/hal_browser/redirect_spec.rb
|
1381
1384
|
- spec/lib/rack/pact_broker/add_pact_broker_version_header_spec.rb
|
1382
1385
|
- spec/lib/rack/pact_broker/database_transaction_spec.rb
|
1386
|
+
- spec/lib/rack/pact_broker/hal_browser_redirect_spec.rb
|
1383
1387
|
- spec/lib/rack/pact_broker/invalid_uri_protection_spec.rb
|
1384
1388
|
- spec/lib/rack/pact_broker/request_target_spec.rb
|
1385
1389
|
- spec/lib/rack/pact_broker/use_when_spec.rb
|
@@ -1782,6 +1786,7 @@ test_files:
|
|
1782
1786
|
- spec/lib/rack/hal_browser/redirect_spec.rb
|
1783
1787
|
- spec/lib/rack/pact_broker/add_pact_broker_version_header_spec.rb
|
1784
1788
|
- spec/lib/rack/pact_broker/database_transaction_spec.rb
|
1789
|
+
- spec/lib/rack/pact_broker/hal_browser_redirect_spec.rb
|
1785
1790
|
- spec/lib/rack/pact_broker/invalid_uri_protection_spec.rb
|
1786
1791
|
- spec/lib/rack/pact_broker/request_target_spec.rb
|
1787
1792
|
- spec/lib/rack/pact_broker/use_when_spec.rb
|