pact_broker 2.75.0 → 2.76.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|