pact_broker 2.60.0 → 2.64.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 +48 -0
- data/db/migrations/20200922_add_event_to_triggered_webhook.rb +5 -0
- data/lib/pact_broker/api.rb +2 -0
- data/lib/pact_broker/api/contracts/verifiable_pacts_query_schema.rb +37 -0
- data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +16 -0
- data/lib/pact_broker/api/decorators/triggered_webhook_decorator.rb +1 -0
- data/lib/pact_broker/api/decorators/verifiable_pact_decorator.rb +5 -5
- data/lib/pact_broker/api/pact_broker_urls.rb +19 -4
- data/lib/pact_broker/api/resources/all_webhooks.rb +1 -6
- data/lib/pact_broker/api/resources/can_i_deploy.rb +0 -4
- data/lib/pact_broker/api/resources/can_i_deploy_badge.rb +85 -0
- data/lib/pact_broker/api/resources/can_i_deploy_pacticipant_version.rb +40 -0
- data/lib/pact_broker/api/resources/default_base_resource.rb +9 -0
- data/lib/pact_broker/api/resources/error_handler.rb +4 -4
- data/lib/pact_broker/api/resources/error_test.rb +4 -2
- data/lib/pact_broker/api/resources/group.rb +0 -4
- data/lib/pact_broker/api/resources/index.rb +1 -1
- data/lib/pact_broker/api/resources/integration.rb +0 -4
- data/lib/pact_broker/api/resources/integrations.rb +0 -4
- data/lib/pact_broker/api/resources/label.rb +0 -8
- data/lib/pact_broker/api/resources/latest_pact.rb +1 -5
- data/lib/pact_broker/api/resources/latest_pacts.rb +1 -5
- data/lib/pact_broker/api/resources/latest_verifications_for_consumer_version.rb +0 -4
- data/lib/pact_broker/api/resources/matrix.rb +4 -0
- data/lib/pact_broker/api/resources/matrix_for_consumer_and_provider.rb +4 -0
- data/lib/pact_broker/api/resources/metrics.rb +4 -0
- data/lib/pact_broker/api/resources/pact.rb +4 -8
- data/lib/pact_broker/api/resources/pact_content_diff.rb +4 -0
- data/lib/pact_broker/api/resources/pact_triggered_webhooks.rb +5 -1
- data/lib/pact_broker/api/resources/pact_versions.rb +5 -1
- data/lib/pact_broker/api/resources/pact_webhooks.rb +5 -1
- data/lib/pact_broker/api/resources/pact_webhooks_status.rb +5 -1
- data/lib/pact_broker/api/resources/pacticipant.rb +5 -9
- data/lib/pact_broker/api/resources/pacticipants.rb +0 -4
- data/lib/pact_broker/api/resources/pacticipants_for_label.rb +4 -0
- data/lib/pact_broker/api/resources/previous_distinct_pact_version.rb +4 -9
- data/lib/pact_broker/api/resources/provider_pacts.rb +1 -5
- data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +14 -7
- data/lib/pact_broker/api/resources/relationships.rb +4 -2
- data/lib/pact_broker/api/resources/tag.rb +5 -5
- data/lib/pact_broker/api/resources/tagged_pact_versions.rb +5 -2
- data/lib/pact_broker/api/resources/triggered_webhook_logs.rb +7 -5
- data/lib/pact_broker/api/resources/verification.rb +5 -5
- data/lib/pact_broker/api/resources/verification_triggered_webhooks.rb +6 -12
- data/lib/pact_broker/api/resources/verifications.rb +5 -5
- data/lib/pact_broker/api/resources/version.rb +11 -12
- data/lib/pact_broker/api/resources/versions.rb +5 -2
- data/lib/pact_broker/api/resources/webhook.rb +4 -0
- data/lib/pact_broker/api/resources/webhook_execution.rb +4 -0
- data/lib/pact_broker/api/resources/webhooks.rb +5 -1
- data/lib/pact_broker/app.rb +1 -1
- data/lib/pact_broker/badges/service.rb +12 -1
- data/lib/pact_broker/certificates/service.rb +2 -2
- data/lib/pact_broker/configuration.rb +12 -1
- data/lib/pact_broker/db.rb +14 -0
- data/lib/pact_broker/db/table_dependency_calculator.rb +45 -0
- data/lib/pact_broker/doc/views/pacticipant/can-i-deploy-badge.markdown +9 -0
- data/lib/pact_broker/domain/webhook_request.rb +3 -1
- data/lib/pact_broker/pacts/build_verifiable_pact_notices.rb +7 -4
- data/lib/pact_broker/test/test_data_builder.rb +1 -1
- data/lib/pact_broker/ui/app.rb +6 -0
- data/lib/pact_broker/ui/controllers/can_i_deploy.rb +42 -0
- data/lib/pact_broker/ui/controllers/matrix.rb +3 -34
- data/lib/pact_broker/ui/helpers/matrix_helper.rb +40 -0
- data/lib/pact_broker/ui/views/matrix/show.haml +1 -1
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/webhooks/repository.rb +3 -2
- data/lib/pact_broker/webhooks/service.rb +2 -2
- data/lib/pact_broker/webhooks/triggered_webhook.rb +1 -3
- data/lib/pact_broker/webhooks/webhook_event.rb +1 -2
- data/script/seed.rb +39 -17
- data/spec/features/get_can_i_deploy_badge_spec.rb +13 -0
- data/spec/features/get_matrix_badge_spec.rb +1 -1
- data/spec/features/get_provider_pacts_for_verification_spec.rb +26 -0
- data/spec/lib/pact_broker/api/contracts/verifiable_pacts_query_schema_spec.rb +97 -0
- data/spec/lib/pact_broker/api/decorators/pact_webhooks_status_decorator_spec.rb +2 -1
- data/spec/lib/pact_broker/api/decorators/triggered_webhook_decorator_spec.rb +3 -1
- data/spec/lib/pact_broker/api/pact_broker_urls_spec.rb +15 -0
- data/spec/lib/pact_broker/api/resources/can_i_deploy_badge_spec.rb +80 -0
- data/spec/lib/pact_broker/api/resources/can_i_deploy_pacticipant_version_spec.rb +31 -0
- data/spec/lib/pact_broker/api/resources/default_base_resource_spec.rb +10 -5
- data/spec/lib/pact_broker/api/resources/provider_pacts_for_verification_spec.rb +37 -7
- data/spec/lib/pact_broker/api/resources/verification_triggered_webhooks_spec.rb +0 -1
- data/spec/lib/pact_broker/badges/service_spec.rb +7 -1
- data/spec/lib/pact_broker/certificates/service_spec.rb +3 -3
- data/spec/lib/pact_broker/ui/controllers/can_i_deploy_spec.rb +26 -0
- data/spec/lib/pact_broker/webhooks/repository_spec.rb +3 -2
- data/spec/lib/pact_broker/webhooks/service_spec.rb +2 -2
- data/tasks/database.rb +1 -0
- data/tasks/database/table_dependency_calculator.rb +4 -41
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fee7d96bde4fc04adb41fe041a124e81c9b371336f9308f92c918a2fb4ca914
|
4
|
+
data.tar.gz: 3706e5b3a8fbf6db31c748658a1b0f22713f872889757844c9506250b2cefa54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1a1046845fb3832062d675ebfa1d49e0fa62ac6ea8acb8edb6c706b53e66888b72a243bc16e94842b89b4b349adf3ac22c3f35f043a75538f9dea7f3d28122a
|
7
|
+
data.tar.gz: fdad352fd207e05717eb127ec0ad0c35de8465b4dfed9a6cdcf862bc5d6f169bf15975a932c8cd355716b90ba3291552fadc35aab1768710179f330592fd5166
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,51 @@
|
|
1
|
+
<a name="v2.64.0"></a>
|
2
|
+
### v2.64.0 (2020-09-25)
|
3
|
+
|
4
|
+
#### Features
|
5
|
+
|
6
|
+
* add API endpoint for can-i-deploy for latest tagged pacticipant version ([88fdc60a](/../../commit/88fdc60a))
|
7
|
+
* render matrix UI page for can-i-deploy endpoint ([463e9cfd](/../../commit/463e9cfd))
|
8
|
+
* change text on can-i-deploy badge ([f9e183e9](/../../commit/f9e183e9))
|
9
|
+
|
10
|
+
<a name="v2.63.0"></a>
|
11
|
+
### v2.63.0 (2020-09-25)
|
12
|
+
|
13
|
+
#### Features
|
14
|
+
|
15
|
+
* allow label of can-i-deploy badge to be customised by setting the label query parameter ([ed544f94](/../../commit/ed544f94))
|
16
|
+
* add badges for can-i-deploy ([887a9ca3](/../../commit/887a9ca3))
|
17
|
+
|
18
|
+
<a name="v2.62.0"></a>
|
19
|
+
### v2.62.0 (2020-09-23)
|
20
|
+
|
21
|
+
#### Features
|
22
|
+
|
23
|
+
* **webhooks**
|
24
|
+
* remove user-agent and accept-encoding headers which the Ruby HTTP library adds by default ([ef25b88c](/../../commit/ef25b88c))
|
25
|
+
|
26
|
+
* add event name to triggered webhook ([ecce16fd](/../../commit/ecce16fd))
|
27
|
+
|
28
|
+
#### Bug Fixes
|
29
|
+
|
30
|
+
* **webhooks**
|
31
|
+
* use path to initialise http request, rather than full URL ([ecbac9a6](/../../commit/ecbac9a6))
|
32
|
+
|
33
|
+
* gracefully handle corrupt webhook metadata in pact URL ([ba94c355](/../../commit/ba94c355))
|
34
|
+
|
35
|
+
<a name="v2.61.0"></a>
|
36
|
+
### v2.61.0 (2020-09-12)
|
37
|
+
|
38
|
+
#### Features
|
39
|
+
|
40
|
+
* add back support for GET requests to the 'pacts for verification' API with a deprecation notice in the response ([8f45cc9f](/../../commit/8f45cc9f))
|
41
|
+
|
42
|
+
<a name="v2.60.1"></a>
|
43
|
+
### v2.60.1 (2020-09-10)
|
44
|
+
|
45
|
+
#### Bug Fixes
|
46
|
+
|
47
|
+
* href for beta:provider-pacts-for-verification ([3949fdd1](/../../commit/3949fdd1))
|
48
|
+
|
1
49
|
<a name="v2.60.0"></a>
|
2
50
|
### v2.60.0 (2020-09-08)
|
3
51
|
|
data/lib/pact_broker/api.rb
CHANGED
@@ -71,6 +71,8 @@ module PactBroker
|
|
71
71
|
add ['pacticipants', :pacticipant_name, 'versions'], Api::Resources::Versions, {resource_name: "pacticipant_versions"}
|
72
72
|
add ['pacticipants', :pacticipant_name, 'versions', :pacticipant_version_number], Api::Resources::Version, {resource_name: "pacticipant_version"}
|
73
73
|
add ['pacticipants', :pacticipant_name, 'latest-version', :tag], Api::Resources::Version, {resource_name: "latest_tagged_pacticipant_version"}
|
74
|
+
add ['pacticipants', :pacticipant_name, 'latest-version', :tag, 'can-i-deploy', 'to', :to], Api::Resources::CanIDeployPacticipantVersion, { resource_name: "can_i_deploy_latest_tagged_version" }
|
75
|
+
add ['pacticipants', :pacticipant_name, 'latest-version', :tag, 'can-i-deploy', 'to', :to, 'badge'], Api::Resources::CanIDeployBadge, { resource_name: "can_i_deploy_badge" }
|
74
76
|
add ['pacticipants', :pacticipant_name, 'latest-version'], Api::Resources::Version, {resource_name: "latest_pacticipant_version"}
|
75
77
|
add ['pacticipants', :pacticipant_name, 'versions', :pacticipant_version_number, 'tags', :tag_name], Api::Resources::Tag, {resource_name: "pacticipant_version_tag"}
|
76
78
|
add ['pacticipants', :pacticipant_name, 'labels', :label_name], Api::Resources::Label, {resource_name: "pacticipant_label"}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'dry-validation'
|
2
|
+
require 'pact_broker/api/contracts/dry_validation_workarounds'
|
3
|
+
require 'pact_broker/api/contracts/dry_validation_predicates'
|
4
|
+
|
5
|
+
module PactBroker
|
6
|
+
module Api
|
7
|
+
module Contracts
|
8
|
+
class VerifiablePactsQuerySchema
|
9
|
+
extend DryValidationWorkarounds
|
10
|
+
using PactBroker::HashRefinements
|
11
|
+
|
12
|
+
SCHEMA = Dry::Validation.Schema do
|
13
|
+
configure do
|
14
|
+
predicates(DryValidationPredicates)
|
15
|
+
config.messages_file = File.expand_path("../../../locale/en.yml", __FILE__)
|
16
|
+
end
|
17
|
+
optional(:provider_version_tags).maybe(:array?)
|
18
|
+
optional(:consumer_version_selectors).each do
|
19
|
+
schema do
|
20
|
+
required(:tag).filled(:str?)
|
21
|
+
optional(:latest).filled(included_in?: ["true", "false"])
|
22
|
+
optional(:fallback_tag).filled(:str?)
|
23
|
+
optional(:consumer).filled(:str?, :not_blank?)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
optional(:include_pending_status).filled(included_in?: ["true", "false"])
|
27
|
+
optional(:include_wip_pacts_since).filled(:date?)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.call(params)
|
31
|
+
select_first_message(flatten_indexed_messages(SCHEMA.call(params&.symbolize_keys).messages(full: true)))
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -58,6 +58,22 @@ module PactBroker
|
|
58
58
|
}
|
59
59
|
end
|
60
60
|
|
61
|
+
link :'pb:can-i-deploy-badge' do | options |
|
62
|
+
{
|
63
|
+
title: "Can I Deploy #{represented.name} badge",
|
64
|
+
href: templated_can_i_deploy_badge_url(represented.name, options[:base_url]),
|
65
|
+
templated: true
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
curies do | options |
|
70
|
+
[{
|
71
|
+
name: :pb,
|
72
|
+
href: options[:base_url] + '/doc/{rel}?context=pacticipant',
|
73
|
+
templated: true
|
74
|
+
}]
|
75
|
+
end
|
76
|
+
|
61
77
|
def to_hash options
|
62
78
|
h = super
|
63
79
|
dasherized = DasherizedVersionDecorator.new(represented).to_hash(options)
|
@@ -9,6 +9,7 @@ module PactBroker
|
|
9
9
|
property :number_of_attempts_made, as: :attemptsMade
|
10
10
|
property :number_of_attempts_remaining, as: :attemptsRemaining
|
11
11
|
property :trigger_type, as: :triggerType
|
12
|
+
property :event_name, as: :eventName
|
12
13
|
|
13
14
|
property :created_at, as: :triggeredAt
|
14
15
|
|
@@ -14,14 +14,14 @@ module PactBroker
|
|
14
14
|
|
15
15
|
property :pending,
|
16
16
|
if: ->(context) { context[:options][:user_options][:include_pending_status] }
|
17
|
-
property :wip,
|
18
|
-
|
19
|
-
property :notices,
|
20
|
-
|
17
|
+
property :wip,
|
18
|
+
if: -> (context) { context[:represented].wip }
|
19
|
+
property :notices,
|
20
|
+
getter: -> (context) { context[:decorator].notices(context[:options][:user_options]) }
|
21
21
|
|
22
22
|
def notices(user_options)
|
23
23
|
pact_url = pact_version_url(represented, user_options[:base_url])
|
24
|
-
PactBroker::Pacts::BuildVerifiablePactNotices.call(represented, pact_url,
|
24
|
+
PactBroker::Pacts::BuildVerifiablePactNotices.call(represented, pact_url, user_options)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -1,11 +1,13 @@
|
|
1
1
|
require 'erb'
|
2
2
|
require 'pact_broker/pacts/metadata'
|
3
|
+
require 'pact_broker/logging'
|
3
4
|
|
4
5
|
module PactBroker
|
5
6
|
module Api
|
6
7
|
module PactBrokerUrls
|
7
8
|
|
8
9
|
include PactBroker::Pacts::Metadata
|
10
|
+
include PactBroker::Logging
|
9
11
|
# TODO make base_url the last and optional argument for all methods, defaulting to ''
|
10
12
|
|
11
13
|
extend self
|
@@ -70,8 +72,13 @@ module PactBroker
|
|
70
72
|
|
71
73
|
def decode_webhook_metadata(metadata)
|
72
74
|
if metadata
|
73
|
-
|
74
|
-
|
75
|
+
begin
|
76
|
+
Rack::Utils.parse_nested_query(Base64.strict_decode64(metadata)).each_with_object({}) do | (k, v), new_hash |
|
77
|
+
new_hash[k.to_sym] = v
|
78
|
+
end
|
79
|
+
rescue StandardError => e
|
80
|
+
logger.warn("Exception parsing webhook metadata: #{metadata}", e)
|
81
|
+
{}
|
75
82
|
end
|
76
83
|
else
|
77
84
|
{}
|
@@ -190,11 +197,19 @@ module PactBroker
|
|
190
197
|
end
|
191
198
|
|
192
199
|
def templated_tag_url_for_pacticipant pacticipant_name, base_url = ""
|
193
|
-
pacticipant_url_from_params({pacticipant_name: pacticipant_name}, base_url) + "/versions/{version}/tags/{tag}"
|
200
|
+
pacticipant_url_from_params({ pacticipant_name: pacticipant_name }, base_url) + "/versions/{version}/tags/{tag}"
|
194
201
|
end
|
195
202
|
|
196
203
|
def templated_label_url_for_pacticipant pacticipant_name, base_url = ""
|
197
|
-
pacticipant_url_from_params({pacticipant_name: pacticipant_name}, base_url) + "/labels/{label}"
|
204
|
+
pacticipant_url_from_params({ pacticipant_name: pacticipant_name }, base_url) + "/labels/{label}"
|
205
|
+
end
|
206
|
+
|
207
|
+
def templated_can_i_deploy_url pacticipant_name, base_url = ""
|
208
|
+
pacticipant_url_from_params({ pacticipant_name: pacticipant_name }, base_url) + "/latest-version/{tag}/can-i-deploy/to/{environmentTag}"
|
209
|
+
end
|
210
|
+
|
211
|
+
def templated_can_i_deploy_badge_url pacticipant_name, base_url = ""
|
212
|
+
templated_can_i_deploy_url(pacticipant_name, base_url) + "/badge"
|
198
213
|
end
|
199
214
|
|
200
215
|
def label_url label, base_url
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'pact_broker/matrix/can_i_deploy_query_schema'
|
2
|
+
require 'pact_broker/matrix/parse_can_i_deploy_query'
|
3
|
+
|
4
|
+
module PactBroker
|
5
|
+
module Api
|
6
|
+
module Resources
|
7
|
+
class CanIDeployBadge < BaseResource
|
8
|
+
def initialize
|
9
|
+
super
|
10
|
+
selector = PactBroker::Matrix::UnresolvedSelector.new(pacticipant_name: pacticipant_name, latest: true, tag: identifier_from_path[:tag])
|
11
|
+
@options = {
|
12
|
+
latestby: 'cvp',
|
13
|
+
latest: true,
|
14
|
+
tag: identifier_from_path[:to]
|
15
|
+
}
|
16
|
+
@selectors = [selector]
|
17
|
+
end
|
18
|
+
|
19
|
+
def allowed_methods
|
20
|
+
["GET", "OPTIONS"]
|
21
|
+
end
|
22
|
+
|
23
|
+
def content_types_provided
|
24
|
+
[['image/svg+xml', :to_svg]]
|
25
|
+
end
|
26
|
+
|
27
|
+
def resource_exists?
|
28
|
+
false
|
29
|
+
end
|
30
|
+
|
31
|
+
# Only called if resource_exists? returns false
|
32
|
+
def previously_existed?
|
33
|
+
true
|
34
|
+
end
|
35
|
+
|
36
|
+
def is_authorized?(authorization_header)
|
37
|
+
super || PactBroker.configuration.enable_public_badge_access
|
38
|
+
end
|
39
|
+
|
40
|
+
def forbidden?
|
41
|
+
false
|
42
|
+
end
|
43
|
+
|
44
|
+
def moved_temporarily?
|
45
|
+
response.headers['Cache-Control'] = 'no-cache'
|
46
|
+
begin
|
47
|
+
if pacticipant
|
48
|
+
if version
|
49
|
+
badge_service.can_i_deploy_badge_url(identifier_from_path[:tag], identifier_from_path[:to], label, results.deployable?)
|
50
|
+
else
|
51
|
+
badge_service.error_badge_url("version", "not found")
|
52
|
+
end
|
53
|
+
else
|
54
|
+
badge_service.error_badge_url(selectors.first.pacticipant_name, "not found")
|
55
|
+
end
|
56
|
+
rescue StandardError => e
|
57
|
+
# Want to render a badge, even if there's an error
|
58
|
+
badge_service.error_badge_url("error", ErrorHandler.display_message(e, "reference: #{ErrorHandler.generate_error_reference}"))
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def policy_name
|
63
|
+
:'badges::badge'
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
attr_reader :selectors, :options
|
69
|
+
|
70
|
+
def results
|
71
|
+
@results ||= matrix_service.find(selectors, options)
|
72
|
+
end
|
73
|
+
|
74
|
+
def version
|
75
|
+
@version ||= version_service.find_by_pacticipant_name_and_latest_tag(identifier_from_path[:pacticipant_name], identifier_from_path[:tag])
|
76
|
+
end
|
77
|
+
|
78
|
+
def label
|
79
|
+
lab = request.query['label']
|
80
|
+
lab && !lab.empty? ? lab : nil
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'pact_broker/api/resources/matrix'
|
2
|
+
require 'pact_broker/matrix/can_i_deploy_query_schema'
|
3
|
+
require 'pact_broker/matrix/parse_can_i_deploy_query'
|
4
|
+
|
5
|
+
module PactBroker
|
6
|
+
module Api
|
7
|
+
module Resources
|
8
|
+
class CanIDeployPacticipantVersion < Matrix
|
9
|
+
def initialize
|
10
|
+
super
|
11
|
+
selector = PactBroker::Matrix::UnresolvedSelector.new(pacticipant_name: pacticipant_name, latest: true, tag: identifier_from_path[:tag])
|
12
|
+
@options = {
|
13
|
+
latestby: 'cvp',
|
14
|
+
latest: true,
|
15
|
+
tag: identifier_from_path[:to]
|
16
|
+
}
|
17
|
+
@selectors = [selector]
|
18
|
+
end
|
19
|
+
|
20
|
+
def resource_exists?
|
21
|
+
!!version
|
22
|
+
end
|
23
|
+
|
24
|
+
def policy_name
|
25
|
+
:'matrix::can_i_deploy'
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def version
|
31
|
+
@version ||= version_service.find_by_pacticipant_name_and_latest_tag(identifier_from_path[:pacticipant_name], identifier_from_path[:tag])
|
32
|
+
end
|
33
|
+
|
34
|
+
def results
|
35
|
+
@results ||= matrix_service.find(selectors, options)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -202,6 +202,15 @@ module PactBroker
|
|
202
202
|
@pact ||= pact_service.find_pact(pact_params)
|
203
203
|
end
|
204
204
|
|
205
|
+
# Not necessarily an existing integration
|
206
|
+
def integration
|
207
|
+
if consumer_specified? && provider_specified?
|
208
|
+
OpenStruct.new(consumer: consumer, provider: provider)
|
209
|
+
else
|
210
|
+
nil
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
205
214
|
def database_connector
|
206
215
|
request.env["pactbroker.database_connector"]
|
207
216
|
end
|
@@ -32,11 +32,11 @@ module PactBroker
|
|
32
32
|
PactBroker.configuration.warning_error_classes.any? { |clazz| e.is_a?(clazz) }
|
33
33
|
end
|
34
34
|
|
35
|
-
def self.display_message(e,
|
35
|
+
def self.display_message(e, obfuscated_message)
|
36
36
|
if PactBroker.configuration.show_backtrace_in_error_response?
|
37
|
-
e.message ||
|
37
|
+
e.message || obfuscated_message
|
38
38
|
else
|
39
|
-
reportable?(e) ?
|
39
|
+
reportable?(e) ? obfuscated_message : e.message
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -47,7 +47,7 @@ module PactBroker
|
|
47
47
|
def self.response_body_hash e, error_reference
|
48
48
|
response_body = {
|
49
49
|
error: {
|
50
|
-
message: display_message(e, error_reference),
|
50
|
+
message: display_message(e, obfuscated_error_message(error_reference)),
|
51
51
|
reference: error_reference
|
52
52
|
}
|
53
53
|
}
|
@@ -4,9 +4,7 @@ require 'pact_broker/error'
|
|
4
4
|
module PactBroker
|
5
5
|
module Api
|
6
6
|
module Resources
|
7
|
-
|
8
7
|
class ErrorTest < BaseResource
|
9
|
-
|
10
8
|
def content_types_provided
|
11
9
|
[
|
12
10
|
["application/hal+json", :to_json]
|
@@ -24,6 +22,10 @@ module PactBroker
|
|
24
22
|
def process_post
|
25
23
|
raise PactBroker::TestError.new("Don't panic. This is a test API error.")
|
26
24
|
end
|
25
|
+
|
26
|
+
def policy_name
|
27
|
+
:'default'
|
28
|
+
end
|
27
29
|
end
|
28
30
|
end
|
29
31
|
end
|