pact_broker 2.59.2 → 2.63.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.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +53 -0
  3. data/README.md +1 -1
  4. data/db/migrations/20200922_add_event_to_triggered_webhook.rb +5 -0
  5. data/lib/pact_broker/api.rb +1 -0
  6. data/lib/pact_broker/api/contracts/verifiable_pacts_json_query_schema.rb +10 -3
  7. data/lib/pact_broker/api/contracts/verifiable_pacts_query_schema.rb +1 -0
  8. data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +16 -0
  9. data/lib/pact_broker/api/decorators/triggered_webhook_decorator.rb +1 -0
  10. data/lib/pact_broker/api/decorators/verifiable_pact_decorator.rb +5 -5
  11. data/lib/pact_broker/api/pact_broker_urls.rb +15 -4
  12. data/lib/pact_broker/api/resources/all_webhooks.rb +1 -6
  13. data/lib/pact_broker/api/resources/can_i_deploy.rb +0 -4
  14. data/lib/pact_broker/api/resources/can_i_deploy_badge.rb +85 -0
  15. data/lib/pact_broker/api/resources/default_base_resource.rb +9 -0
  16. data/lib/pact_broker/api/resources/error_handler.rb +4 -4
  17. data/lib/pact_broker/api/resources/error_test.rb +4 -2
  18. data/lib/pact_broker/api/resources/group.rb +0 -4
  19. data/lib/pact_broker/api/resources/index.rb +11 -8
  20. data/lib/pact_broker/api/resources/integration.rb +0 -4
  21. data/lib/pact_broker/api/resources/integrations.rb +0 -4
  22. data/lib/pact_broker/api/resources/label.rb +0 -8
  23. data/lib/pact_broker/api/resources/latest_pact.rb +1 -5
  24. data/lib/pact_broker/api/resources/latest_pacts.rb +1 -5
  25. data/lib/pact_broker/api/resources/latest_verifications_for_consumer_version.rb +0 -4
  26. data/lib/pact_broker/api/resources/matrix.rb +4 -0
  27. data/lib/pact_broker/api/resources/matrix_for_consumer_and_provider.rb +4 -0
  28. data/lib/pact_broker/api/resources/metrics.rb +4 -0
  29. data/lib/pact_broker/api/resources/pact.rb +4 -8
  30. data/lib/pact_broker/api/resources/pact_content_diff.rb +4 -0
  31. data/lib/pact_broker/api/resources/pact_triggered_webhooks.rb +5 -1
  32. data/lib/pact_broker/api/resources/pact_versions.rb +5 -1
  33. data/lib/pact_broker/api/resources/pact_webhooks.rb +5 -1
  34. data/lib/pact_broker/api/resources/pact_webhooks_status.rb +5 -1
  35. data/lib/pact_broker/api/resources/pacticipant.rb +5 -9
  36. data/lib/pact_broker/api/resources/pacticipants.rb +0 -4
  37. data/lib/pact_broker/api/resources/pacticipants_for_label.rb +4 -0
  38. data/lib/pact_broker/api/resources/previous_distinct_pact_version.rb +4 -9
  39. data/lib/pact_broker/api/resources/provider_pacts.rb +1 -5
  40. data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +8 -6
  41. data/lib/pact_broker/api/resources/relationships.rb +4 -2
  42. data/lib/pact_broker/api/resources/tag.rb +5 -5
  43. data/lib/pact_broker/api/resources/tagged_pact_versions.rb +5 -2
  44. data/lib/pact_broker/api/resources/triggered_webhook_logs.rb +7 -5
  45. data/lib/pact_broker/api/resources/verification.rb +5 -5
  46. data/lib/pact_broker/api/resources/verification_triggered_webhooks.rb +6 -12
  47. data/lib/pact_broker/api/resources/verifications.rb +5 -5
  48. data/lib/pact_broker/api/resources/version.rb +11 -12
  49. data/lib/pact_broker/api/resources/versions.rb +5 -2
  50. data/lib/pact_broker/api/resources/webhook.rb +4 -0
  51. data/lib/pact_broker/api/resources/webhook_execution.rb +4 -0
  52. data/lib/pact_broker/api/resources/webhooks.rb +5 -1
  53. data/lib/pact_broker/app.rb +1 -1
  54. data/lib/pact_broker/badges/service.rb +12 -1
  55. data/lib/pact_broker/certificates/service.rb +2 -2
  56. data/lib/pact_broker/configuration.rb +12 -1
  57. data/lib/pact_broker/db.rb +14 -0
  58. data/lib/pact_broker/db/table_dependency_calculator.rb +45 -0
  59. data/lib/pact_broker/doc/views/pacticipant/can-i-deploy-badge.markdown +9 -0
  60. data/lib/pact_broker/doc/views/provider-pacts-for-verification.markdown +78 -0
  61. data/lib/pact_broker/domain/pact.rb +9 -0
  62. data/lib/pact_broker/domain/webhook_request.rb +3 -1
  63. data/lib/pact_broker/pacts/build_verifiable_pact_notices.rb +7 -4
  64. data/lib/pact_broker/pacts/content.rb +28 -4
  65. data/lib/pact_broker/pacts/repository.rb +25 -31
  66. data/lib/pact_broker/pacts/selector.rb +8 -0
  67. data/lib/pact_broker/test/test_data_builder.rb +1 -1
  68. data/lib/pact_broker/version.rb +1 -1
  69. data/lib/pact_broker/webhooks/job.rb +8 -2
  70. data/lib/pact_broker/webhooks/repository.rb +3 -2
  71. data/lib/pact_broker/webhooks/service.rb +2 -2
  72. data/lib/pact_broker/webhooks/triggered_webhook.rb +1 -3
  73. data/lib/pact_broker/webhooks/webhook_event.rb +1 -2
  74. data/script/seed.rb +39 -17
  75. data/spec/features/get_can_i_deploy_badge_spec.rb +13 -0
  76. data/spec/features/get_matrix_badge_spec.rb +1 -1
  77. data/spec/features/get_provider_pacts_for_verification_spec.rb +8 -0
  78. data/spec/lib/pact_broker/api/contracts/verifiable_pacts_json_query_schema_spec.rb +23 -4
  79. data/spec/lib/pact_broker/api/decorators/pact_webhooks_status_decorator_spec.rb +2 -1
  80. data/spec/lib/pact_broker/api/decorators/triggered_webhook_decorator_spec.rb +3 -1
  81. data/spec/lib/pact_broker/api/pact_broker_urls_spec.rb +15 -0
  82. data/spec/lib/pact_broker/api/resources/can_i_deploy_badge_spec.rb +80 -0
  83. data/spec/lib/pact_broker/api/resources/default_base_resource_spec.rb +10 -5
  84. data/spec/lib/pact_broker/api/resources/provider_pacts_for_verification_spec.rb +1 -1
  85. data/spec/lib/pact_broker/api/resources/verification_triggered_webhooks_spec.rb +0 -1
  86. data/spec/lib/pact_broker/badges/service_spec.rb +1 -1
  87. data/spec/lib/pact_broker/certificates/service_spec.rb +3 -3
  88. data/spec/lib/pact_broker/pacts/content_spec.rb +82 -0
  89. data/spec/lib/pact_broker/pacts/repository_find_for_verification_fallback_spec.rb +14 -0
  90. data/spec/lib/pact_broker/pacts/repository_find_for_verification_spec.rb +62 -0
  91. data/spec/lib/pact_broker/webhooks/job_spec.rb +19 -1
  92. data/spec/lib/pact_broker/webhooks/repository_spec.rb +3 -2
  93. data/spec/lib/pact_broker/webhooks/service_spec.rb +2 -2
  94. data/spec/support/database_cleaner.rb +1 -5
  95. data/tasks/database.rb +1 -0
  96. data/tasks/database/table_dependency_calculator.rb +4 -41
  97. metadata +11 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1933f8f7902c43ed7d9db7c022a66f2569c6301dec2c8ac767e1da7b05f70b5
4
- data.tar.gz: 40d82183c3a94b2bfc2bfa37a9aee12cc27729e1c3a1b3191df980c2ba3ad192
3
+ metadata.gz: 61338a93bd65ffa3ec70f4fdfd9b509a0d5c0608dce8cea3f779e3ac22151412
4
+ data.tar.gz: 99819023ba051657020d314fe6d3005a04660d70467a57c5b5369a08a5525e2a
5
5
  SHA512:
6
- metadata.gz: 5078b560d3d0abe897572f35276b3aec1c6752026ba849a9b61517def382ea0d936731a6b2f59801b0101cab7bde636ef3e9e5e7afe9524e13c3def552f48ded
7
- data.tar.gz: 6fc016ea9e10bcbad4f78d60b93a81b5d0aab2ffbfef9d222a094e0348f632680995bce488abe9fefe55cad745afafef323ce3c972db3e78a7e1f6759d222f6e
6
+ metadata.gz: 7da446c51346413782377eb409c2d3159fcb322147d675324126243bfb8b115ff042d210b3cf25ee46ebe73093611e4de85db03f243c5ffb06299239d6aff637
7
+ data.tar.gz: 6b191f39b782bf811d58e15d149fa5e786227e6a86d93c0f8888a6134b992d6f60ad58ff2b2b6cf84ba612b72368cf569471b9214b85f7ce173e18872e89ddec
@@ -1,3 +1,56 @@
1
+ <a name="v2.63.0"></a>
2
+ ### v2.63.0 (2020-09-25)
3
+
4
+ #### Features
5
+
6
+ * allow label of can-i-deploy badge to be customised by setting the label query parameter ([ed544f94](/../../commit/ed544f94))
7
+ * add badges for can-i-deploy ([887a9ca3](/../../commit/887a9ca3))
8
+
9
+ <a name="v2.62.0"></a>
10
+ ### v2.62.0 (2020-09-23)
11
+
12
+ #### Features
13
+
14
+ * **webhooks**
15
+ * remove user-agent and accept-encoding headers which the Ruby HTTP library adds by default ([ef25b88c](/../../commit/ef25b88c))
16
+
17
+ * add event name to triggered webhook ([ecce16fd](/../../commit/ecce16fd))
18
+
19
+ #### Bug Fixes
20
+
21
+ * **webhooks**
22
+ * use path to initialise http request, rather than full URL ([ecbac9a6](/../../commit/ecbac9a6))
23
+
24
+ * gracefully handle corrupt webhook metadata in pact URL ([ba94c355](/../../commit/ba94c355))
25
+
26
+ <a name="v2.61.0"></a>
27
+ ### v2.61.0 (2020-09-12)
28
+
29
+ #### Features
30
+
31
+ * add back support for GET requests to the 'pacts for verification' API with a deprecation notice in the response ([8f45cc9f](/../../commit/8f45cc9f))
32
+
33
+ <a name="v2.60.1"></a>
34
+ ### v2.60.1 (2020-09-10)
35
+
36
+ #### Bug Fixes
37
+
38
+ * href for beta:provider-pacts-for-verification ([3949fdd1](/../../commit/3949fdd1))
39
+
40
+ <a name="v2.60.0"></a>
41
+ ### v2.60.0 (2020-09-08)
42
+
43
+ #### Features
44
+
45
+ * **pacts for verification**
46
+ * add deprecation title to beta:provider-pacts-for-verification relation ([47a61f69](/../../commit/47a61f69))
47
+ * do not require environment variable feature toggle to enable feature ([7d0fe1ea](/../../commit/7d0fe1ea))
48
+ * allow consumer to be specified with fallback tags, and overall latest to be specified with or without a consumer ([2d52d173](/../../commit/2d52d173))
49
+
50
+ #### Bug Fixes
51
+
52
+ * correctly handle new test results format when merging test results with pact contents ([b35ab71b](/../../commit/b35ab71b))
53
+
1
54
  <a name="v2.59.2"></a>
2
55
  ### v2.59.2 (2020-08-06)
3
56
 
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [![Code Climate](https://codeclimate.com/github/pact-foundation/pact_broker/badges/gpa.svg)](https://codeclimate.com/github/pact-foundation/pact_broker)
7
7
  [![Test Coverage](https://codeclimate.com/github/pact-foundation/pact_broker/badges/coverage.svg)](https://codeclimate.com/github/pact-foundation/pact_broker/coverage)
8
8
 
9
- The Pact Broker is an application for sharing for consumer driven contracts and verification results. It is optimised for use with "pacts" (contracts created by the [Pact][pact-docs] framework), but can be used for any type of contract that can be serialized to JSON.
9
+ The Pact Broker is an application for sharing of consumer driven contracts and verification results. It is optimised for use with "pacts" (contracts created by the [Pact][pact-docs] framework), but can be used for any type of contract that can be serialized to JSON.
10
10
 
11
11
  <br/>
12
12
  <a href="https:/pactflow.io/?utm_source=github&utm_campaign=pact_broker_intro"><img src="docs/images/Pactflow logo - black small.png"></a>
@@ -0,0 +1,5 @@
1
+ Sequel.migration do
2
+ change do
3
+ add_column(:triggered_webhooks, :event_name, String)
4
+ end
5
+ end
@@ -71,6 +71,7 @@ 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, 'badge'], Api::Resources::CanIDeployBadge, { resource_name: "can_i_deploy_badge" }
74
75
  add ['pacticipants', :pacticipant_name, 'latest-version'], Api::Resources::Version, {resource_name: "latest_pacticipant_version"}
75
76
  add ['pacticipants', :pacticipant_name, 'versions', :pacticipant_version_number, 'tags', :tag_name], Api::Resources::Tag, {resource_name: "pacticipant_version_tag"}
76
77
  add ['pacticipants', :pacticipant_name, 'labels', :label_name], Api::Resources::Label, {resource_name: "pacticipant_label"}
@@ -1,5 +1,6 @@
1
1
  require 'dry-validation'
2
2
  require 'pact_broker/hash_refinements'
3
+ require 'pact_broker/string_refinements'
3
4
  require 'pact_broker/api/contracts/dry_validation_workarounds'
4
5
  require 'pact_broker/api/contracts/dry_validation_predicates'
5
6
 
@@ -9,6 +10,7 @@ module PactBroker
9
10
  class VerifiablePactsJSONQuerySchema
10
11
  extend DryValidationWorkarounds
11
12
  using PactBroker::HashRefinements
13
+ using PactBroker::StringRefinements
12
14
 
13
15
  SCHEMA = Dry::Validation.Schema do
14
16
  configure do
@@ -24,7 +26,7 @@ module PactBroker
24
26
  # end
25
27
  # end
26
28
 
27
- required(:tag).filled(:str?)
29
+ optional(:tag).filled(:str?)
28
30
  optional(:latest).filled(included_in?: [true, false])
29
31
  optional(:fallbackTag).filled(:str?)
30
32
  optional(:consumer).filled(:str?, :not_blank?)
@@ -54,8 +56,9 @@ module PactBroker
54
56
  errors << "fallbackTag can only be set if latest is true (at index #{index})"
55
57
  end
56
58
 
57
- if selector[:consumer] && selector[:latest]
58
- errors << "specifying a consumer with latest == true is not yet supported (at index #{index})"
59
+
60
+ if not_provided?(selector[:tag]) && selector[:latest] != true
61
+ errors << "latest must be true, or a tag must be provided (at index #{index})"
59
62
  end
60
63
  end
61
64
  if errors.any?
@@ -64,6 +67,10 @@ module PactBroker
64
67
  end
65
68
  end
66
69
  end
70
+
71
+ def self.not_provided?(value)
72
+ value.nil? || value.blank?
73
+ end
67
74
  end
68
75
  end
69
76
  end
@@ -30,6 +30,7 @@ module PactBroker
30
30
  def self.call(params)
31
31
  select_first_message(flatten_indexed_messages(SCHEMA.call(params&.symbolize_keys).messages(full: true)))
32
32
  end
33
+
33
34
  end
34
35
  end
35
36
  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, if: -> (context) { context[:represented].wip }
18
-
19
- property :notices, getter: -> (context) { context[:decorator].notices(context[:options][:user_options]) }
20
- property :noteToDevelopers, getter: -> (_) { "Please print out the text from the 'notices' rather than using the inclusionReason and the pendingReason fields. These will be removed when this API moves out of beta."}
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, include_pending_status: user_options[:include_pending_status])
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
- Rack::Utils.parse_nested_query(Base64.strict_decode64(metadata)).each_with_object({}) do | (k, v), new_hash |
74
- new_hash[k.to_sym] = v
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,15 @@ 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_badge_url pacticipant_name, base_url = ""
208
+ pacticipant_url_from_params({ pacticipant_name: pacticipant_name }, base_url) + "/latest-version/{tag}/can-i-deploy/to/{environmentTag}/badge"
198
209
  end
199
210
 
200
211
  def label_url label, base_url
@@ -46,12 +46,7 @@ module PactBroker
46
46
  end
47
47
 
48
48
  def policy_name
49
- :'webhooks::webooks'
50
- end
51
-
52
- def policy_record
53
- # Note: consumer and provider not yet set on new webhook
54
- request.post? ? webhook : webhooks
49
+ :'webhooks::webhooks'
55
50
  end
56
51
 
57
52
  private
@@ -25,10 +25,6 @@ module PactBroker
25
25
  :'matrix::can_i_deploy'
26
26
  end
27
27
 
28
- def policy_record
29
- selectors
30
- end
31
-
32
28
  private
33
29
 
34
30
  attr_reader :query_params, :selectors, :options
@@ -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(pacticipant_name, 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
@@ -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, error_reference)
35
+ def self.display_message(e, obfuscated_message)
36
36
  if PactBroker.configuration.show_backtrace_in_error_response?
37
- e.message || obfuscated_error_message(error_reference)
37
+ e.message || obfuscated_message
38
38
  else
39
- reportable?(e) ? obfuscated_error_message(error_reference) : e.message
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
@@ -26,10 +26,6 @@ module PactBroker
26
26
  :'groups::group'
27
27
  end
28
28
 
29
- def policy_record
30
- pacticipant
31
- end
32
-
33
29
  private
34
30
 
35
31
  def group
@@ -121,6 +121,17 @@ module PactBroker
121
121
  title: "Determine if an application can be safely deployed to an environment identified by the given tag",
122
122
  templated: true
123
123
  },
124
+ 'pb:provider-pacts-for-verification' => {
125
+ href: base_url + '/pacts/provider/{provider}/for-verification',
126
+ title: 'Pact versions to be verified for the specified provider',
127
+ templated: true
128
+ },
129
+ 'beta:provider-pacts-for-verification' => {
130
+ name: 'beta',
131
+ href: base_url + '/pacts/provider/{provider}/for-verification',
132
+ title: 'DEPRECATED - please use pb:provider-pacts-for-verification',
133
+ templated: true
134
+ },
124
135
  'curies' =>
125
136
  [{
126
137
  name: 'pb',
@@ -133,14 +144,6 @@ module PactBroker
133
144
  }]
134
145
  }
135
146
 
136
- if PactBroker.feature_enabled?(:pacts_for_verification)
137
- links_hash['beta:provider-pacts-for-verification'] = {
138
- href: base_url + '/pacts/provider/{provider}/for-verification',
139
- title: 'Pact versions to be verified for the specified provider',
140
- templated: true
141
- }
142
- end
143
-
144
147
  links_hash
145
148
  end
146
149