pact_broker 2.22.0 → 2.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -0
  4. data/db/migrations/20180611_make_webhook_pacticipant_ids_optional.rb +11 -0
  5. data/example/config.ru +2 -0
  6. data/lib/pact_broker/api.rb +9 -3
  7. data/lib/pact_broker/api/contracts/webhook_contract.rb +36 -0
  8. data/lib/pact_broker/api/decorators/pact_decorator.rb +22 -1
  9. data/lib/pact_broker/api/decorators/pact_webhooks_status_decorator.rb +1 -26
  10. data/lib/pact_broker/api/decorators/triggered_webhook_decorator.rb +33 -0
  11. data/lib/pact_broker/api/decorators/triggered_webhooks_decorator.rb +19 -0
  12. data/lib/pact_broker/api/decorators/verification_decorator.rb +6 -0
  13. data/lib/pact_broker/api/decorators/webhook_decorator.rb +32 -18
  14. data/lib/pact_broker/api/decorators/webhook_execution_result_decorator.rb +27 -0
  15. data/lib/pact_broker/api/decorators/{webhook_request_decorator.rb → webhook_request_template_decorator.rb} +1 -1
  16. data/lib/pact_broker/api/pact_broker_urls.rb +21 -1
  17. data/lib/pact_broker/api/resources/all_webhooks.rb +82 -0
  18. data/lib/pact_broker/api/resources/base_resource.rb +18 -0
  19. data/lib/pact_broker/api/resources/error_handler.rb +5 -1
  20. data/lib/pact_broker/api/resources/pact_triggered_webhooks.rb +41 -0
  21. data/lib/pact_broker/api/resources/pact_webhooks.rb +2 -15
  22. data/lib/pact_broker/api/resources/pact_webhooks_status.rb +1 -1
  23. data/lib/pact_broker/api/resources/verification_triggered_webhooks.rb +45 -0
  24. data/lib/pact_broker/api/resources/webhook_execution.rb +1 -5
  25. data/lib/pact_broker/api/resources/webhooks.rb +69 -6
  26. data/lib/pact_broker/configuration.rb +5 -2
  27. data/lib/pact_broker/doc/controllers/app.rb +1 -2
  28. data/lib/pact_broker/doc/views/pact-webhooks.markdown +3 -0
  29. data/lib/pact_broker/doc/views/webhooks.markdown +53 -33
  30. data/lib/pact_broker/domain/pact.rb +4 -0
  31. data/lib/pact_broker/domain/webhook.rb +19 -3
  32. data/lib/pact_broker/domain/webhook_execution_result.rb +6 -1
  33. data/lib/pact_broker/domain/webhook_request.rb +87 -65
  34. data/lib/pact_broker/locale/en.yml +1 -0
  35. data/lib/pact_broker/matrix/repository.rb +3 -1
  36. data/lib/pact_broker/pacts/placeholder_pact.rb +17 -0
  37. data/lib/pact_broker/pacts/repository.rb +14 -0
  38. data/lib/pact_broker/pacts/service.rb +6 -2
  39. data/lib/pact_broker/ui/view_models/index_item.rb +1 -1
  40. data/lib/pact_broker/verifications/placeholder_verification.rb +23 -0
  41. data/lib/pact_broker/verifications/repository.rb +9 -0
  42. data/lib/pact_broker/verifications/service.rb +5 -1
  43. data/lib/pact_broker/version.rb +1 -1
  44. data/lib/pact_broker/webhooks/repository.rb +54 -4
  45. data/lib/pact_broker/webhooks/service.rb +37 -2
  46. data/lib/pact_broker/webhooks/webhook.rb +4 -3
  47. data/lib/pact_broker/webhooks/webhook_event.rb +8 -0
  48. data/lib/pact_broker/webhooks/webhook_request_template.rb +72 -0
  49. data/pact_broker.gemspec +1 -1
  50. data/script/seed.rb +32 -51
  51. data/spec/features/create_webhook_spec.rb +85 -36
  52. data/spec/features/execute_webhook_spec.rb +9 -18
  53. data/spec/features/get_triggered_webhooks_for_pact_spec.rb +20 -0
  54. data/spec/features/get_triggered_webhooks_for_verification_spec.rb +21 -0
  55. data/spec/fixtures/webhook_valid_with_pacticipants.json +23 -0
  56. data/spec/integration/webhooks/certificate_spec.rb +2 -2
  57. data/spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb +98 -2
  58. data/spec/lib/pact_broker/api/decorators/triggered_webhook_decorator_spec.rb +64 -0
  59. data/spec/lib/pact_broker/api/decorators/triggered_webhooks_decorator_spec.rb +28 -0
  60. data/spec/lib/pact_broker/api/decorators/verification_decorator_spec.rb +8 -0
  61. data/spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb +37 -1
  62. data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +34 -1
  63. data/spec/lib/pact_broker/api/decorators/{webhook_request_decorator_spec.rb → webhook_request_template_decorator_spec.rb} +7 -9
  64. data/spec/lib/pact_broker/api/pact_broker_urls_spec.rb +22 -0
  65. data/spec/lib/pact_broker/api/resources/{pact_webhooks_spec.rb → all_webhooks_spec.rb} +46 -80
  66. data/spec/lib/pact_broker/api/resources/error_handler_spec.rb +34 -0
  67. data/spec/lib/pact_broker/api/resources/pact_triggered_webhooks_spec.rb +54 -0
  68. data/spec/lib/pact_broker/api/resources/pacticipant_spec.rb +1 -6
  69. data/spec/lib/pact_broker/api/resources/tag_spec.rb +1 -6
  70. data/spec/lib/pact_broker/api/resources/verification_triggered_webhooks_spec.rb +68 -0
  71. data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +2 -8
  72. data/spec/lib/pact_broker/api/resources/webhooks_spec.rb +216 -21
  73. data/spec/lib/pact_broker/configuration_spec.rb +30 -0
  74. data/spec/lib/pact_broker/domain/webhook_request_spec.rb +20 -64
  75. data/spec/lib/pact_broker/domain/webhook_spec.rb +40 -11
  76. data/spec/lib/pact_broker/matrix/repository_spec.rb +33 -0
  77. data/spec/lib/pact_broker/pacts/pact_version_spec.rb +1 -0
  78. data/spec/lib/pact_broker/pacts/repository_spec.rb +39 -1
  79. data/spec/lib/pact_broker/ui/view_models/index_item_spec.rb +1 -1
  80. data/spec/lib/pact_broker/verifications/repository_spec.rb +37 -0
  81. data/spec/lib/pact_broker/verifications/service_spec.rb +2 -2
  82. data/spec/lib/pact_broker/webhooks/render_spec.rb +15 -0
  83. data/spec/lib/pact_broker/webhooks/repository_spec.rb +149 -30
  84. data/spec/lib/pact_broker/webhooks/service_spec.rb +84 -7
  85. data/spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb +81 -0
  86. data/spec/service_consumers/pact_helper.rb +2 -0
  87. data/spec/service_consumers/provider_states_for_pact_broker_client.rb +8 -0
  88. data/spec/service_consumers/provider_states_for_pact_ruby.rb +132 -0
  89. data/spec/support/test_data_builder.rb +30 -7
  90. metadata +37 -9
@@ -37,6 +37,15 @@ module PactBroker
37
37
  .verification_number(verification_number).single_record
38
38
  end
39
39
 
40
+ def search_for_latest consumer_name, provider_name
41
+ query = LatestVerificationsByConsumerVersion
42
+ .select_all_qualified
43
+ .join(:all_pact_publications, pact_version_id: :pact_version_id)
44
+ query = query.consumer(consumer_name) if consumer_name
45
+ query = query.provider(provider_name) if provider_name
46
+ query.reverse(:execution_date, :id).first
47
+ end
48
+
40
49
  def find_latest_verifications_for_consumer_version consumer_name, consumer_version_number
41
50
  # Use LatestPactPublicationsByConsumerVersion not AllPactPublcations because we don't
42
51
  # want verifications for shadowed revisions as it would be misleading.
@@ -23,7 +23,7 @@ module PactBroker
23
23
  PactBroker::Api::Decorators::VerificationDecorator.new(verification).from_hash(params)
24
24
  verification.number = next_verification_number
25
25
  verification = verification_repository.create(verification, provider_version_number, pact)
26
- webhook_service.execute_webhooks pact, verification, PactBroker::Webhooks::WebhookEvent::VERIFICATION_PUBLISHED
26
+ webhook_service.trigger_webhooks pact, verification, PactBroker::Webhooks::WebhookEvent::VERIFICATION_PUBLISHED
27
27
  verification
28
28
  end
29
29
 
@@ -53,6 +53,10 @@ module PactBroker
53
53
  verification_repository.find_latest_verification_for_tags(consumer_name, provider_name, consumer_version_tag_name, provider_version_tag_name)
54
54
  end
55
55
 
56
+ def search_for_latest consumer_name, provider_name
57
+ verification_repository.search_for_latest(consumer_name, provider_name)
58
+ end
59
+
56
60
  def verification_summary_for_consumer_version params
57
61
  verifications = find_latest_verifications_for_consumer_version(params)
58
62
  pacts = pact_service.find_by_consumer_version(params)
@@ -1,3 +1,3 @@
1
1
  module PactBroker
2
- VERSION = '2.22.0'
2
+ VERSION = '2.23.0'
3
3
  end
@@ -59,14 +59,44 @@ module PactBroker
59
59
  Webhook.all.collect(&:to_domain)
60
60
  end
61
61
 
62
+ def find_for_pact pact
63
+ find_by_consumer_and_or_provider(pact.consumer, pact.provider)
64
+ end
65
+
66
+ def find_by_consumer_and_or_provider consumer, provider
67
+ find_by_consumer_and_provider(consumer, provider) +
68
+ find_by_consumer_and_provider(nil, provider) +
69
+ find_by_consumer_and_provider(consumer, nil) +
70
+ find_by_consumer_and_provider(nil, nil)
71
+ end
72
+
62
73
  def find_by_consumer_and_provider consumer, provider
63
- Webhook.where(consumer_id: consumer.id, provider_id: provider.id).collect(&:to_domain)
74
+ criteria = {
75
+ consumer_id: (consumer ? consumer.id : nil),
76
+ provider_id: (provider ? provider.id : nil)
77
+ }
78
+ Webhook.where(criteria).collect(&:to_domain)
79
+ end
80
+
81
+ def find_for_pact_and_event_name pact, event_name
82
+ find_by_consumer_and_or_provider_and_event_name(pact.consumer, pact.provider, event_name)
83
+ end
84
+
85
+ def find_by_consumer_and_or_provider_and_event_name consumer, provider, event_name
86
+ find_by_consumer_and_provider_and_event_name(consumer, provider, event_name) +
87
+ find_by_consumer_and_provider_and_event_name(nil, provider, event_name) +
88
+ find_by_consumer_and_provider_and_event_name(consumer, nil, event_name) +
89
+ find_by_consumer_and_provider_and_event_name(nil, nil, event_name)
64
90
  end
65
91
 
66
92
  def find_by_consumer_and_provider_and_event_name consumer, provider, event_name
93
+ criteria = {
94
+ consumer_id: (consumer ? consumer.id : nil),
95
+ provider_id: (provider ? provider.id : nil)
96
+ }
67
97
  Webhook
68
98
  .select_all_qualified
69
- .where(consumer_id: consumer.id, provider_id: provider.id)
99
+ .where(criteria)
70
100
  .join(:webhook_events, { webhook_id: :id })
71
101
  .where(Sequel[:webhook_events][:name] => event_name)
72
102
  .collect(&:to_domain)
@@ -88,8 +118,8 @@ module PactBroker
88
118
  webhook_uuid: db_webhook.uuid,
89
119
  trigger_uuid: trigger_uuid,
90
120
  trigger_type: trigger_type,
91
- consumer: db_webhook.consumer,
92
- provider: db_webhook.provider
121
+ consumer: pact.consumer,
122
+ provider: pact.provider
93
123
  )
94
124
  end
95
125
 
@@ -136,6 +166,10 @@ module PactBroker
136
166
  DeprecatedExecution.where(pact_publication_id: pact_publication_ids).delete
137
167
  end
138
168
 
169
+ def find_latest_triggered_webhooks_for_pact pact
170
+ find_latest_triggered_webhooks(pact.consumer, pact.provider)
171
+ end
172
+
139
173
  def find_latest_triggered_webhooks consumer, provider
140
174
  LatestTriggeredWebhook
141
175
  .where(consumer: consumer, provider: provider)
@@ -143,6 +177,22 @@ module PactBroker
143
177
  .all
144
178
  end
145
179
 
180
+ def find_triggered_webhooks_for_pact pact
181
+ PactBroker::Webhooks::TriggeredWebhook
182
+ .where(pact_publication_id: pact.pact_publication_id)
183
+ .eager(:webhook)
184
+ .eager(:webhook_executions)
185
+ .reverse(:created_at, :id)
186
+ end
187
+
188
+ def find_triggered_webhooks_for_verification verification
189
+ PactBroker::Webhooks::TriggeredWebhook
190
+ .where(verification_id: verification.id)
191
+ .eager(:webhook)
192
+ .eager(:webhook_executions)
193
+ .reverse(:created_at, :id)
194
+ end
195
+
146
196
  def fail_retrying_triggered_webhooks
147
197
  TriggeredWebhook.retrying.update(status: TriggeredWebhook::STATUS_FAILURE)
148
198
  end
@@ -1,4 +1,5 @@
1
1
  require 'pact_broker/repositories'
2
+ require 'pact_broker/services'
2
3
  require 'pact_broker/logging'
3
4
  require 'base64'
4
5
  require 'securerandom'
@@ -6,6 +7,8 @@ require 'pact_broker/webhooks/job'
6
7
  require 'pact_broker/webhooks/triggered_webhook'
7
8
  require 'pact_broker/webhooks/status'
8
9
  require 'pact_broker/webhooks/webhook_event'
10
+ require 'pact_broker/verifications/placeholder_verification'
11
+ require 'pact_broker/pacts/placeholder_pact'
9
12
 
10
13
  module PactBroker
11
14
 
@@ -16,6 +19,7 @@ module PactBroker
16
19
  USER = PactBroker::Webhooks::TriggeredWebhook::TRIGGER_TYPE_USER
17
20
 
18
21
  extend Repositories
22
+ extend Services
19
23
  include Logging
20
24
 
21
25
  def self.next_uuid
@@ -59,6 +63,17 @@ module PactBroker
59
63
  webhook_repository.find_all
60
64
  end
61
65
 
66
+ def self.test_execution webhook
67
+ options = { failure_log_message: "Webhook execution failed", show_response: PactBroker.configuration.show_webhook_response?}
68
+ verification = nil
69
+ if webhook.trigger_on_provider_verification_published?
70
+ verification = verification_service.search_for_latest(webhook.consumer_name, webhook.provider_name) || PactBroker::Verifications::PlaceholderVerification.new
71
+ end
72
+
73
+ pact = pact_service.search_for_latest_pact(consumer_name: webhook.consumer_name, provider_name: webhook.provider_name) || PactBroker::Pacts::PlaceholderPact.new
74
+ webhook.execute(pact, verification, options)
75
+ end
76
+
62
77
  def self.execute_webhook_now webhook, pact, verification = nil
63
78
  triggered_webhook = webhook_repository.create_triggered_webhook(next_uuid, webhook, pact, verification, USER)
64
79
  options = { failure_log_message: "Webhook execution failed"}
@@ -81,12 +96,20 @@ module PactBroker
81
96
  webhook_repository.update_triggered_webhook_status triggered_webhook, status
82
97
  end
83
98
 
99
+ def self.find_for_pact pact
100
+ webhook_repository.find_for_pact(pact)
101
+ end
102
+
103
+ def self.find_by_consumer_and_or_provider consumer, provider
104
+ webhook_repository.find_by_consumer_and_or_provider(consumer, provider)
105
+ end
106
+
84
107
  def self.find_by_consumer_and_provider consumer, provider
85
108
  webhook_repository.find_by_consumer_and_provider consumer, provider
86
109
  end
87
110
 
88
- def self.execute_webhooks pact, verification, event_name
89
- webhooks = webhook_repository.find_by_consumer_and_provider_and_event_name pact.consumer, pact.provider, event_name
111
+ def self.trigger_webhooks pact, verification, event_name
112
+ webhooks = webhook_repository.find_by_consumer_and_or_provider_and_event_name pact.consumer, pact.provider, event_name
90
113
 
91
114
  if webhooks.any?
92
115
  run_later(webhooks, pact, verification, event_name)
@@ -109,6 +132,10 @@ module PactBroker
109
132
  end
110
133
  end
111
134
 
135
+ def self.find_latest_triggered_webhooks_for_pact pact
136
+ webhook_repository.find_latest_triggered_webhooks_for_pact pact
137
+ end
138
+
112
139
  def self.find_latest_triggered_webhooks consumer, provider
113
140
  webhook_repository.find_latest_triggered_webhooks consumer, provider
114
141
  end
@@ -116,6 +143,14 @@ module PactBroker
116
143
  def self.fail_retrying_triggered_webhooks
117
144
  webhook_repository.fail_retrying_triggered_webhooks
118
145
  end
146
+
147
+ def self.find_triggered_webhooks_for_pact pact
148
+ webhook_repository.find_triggered_webhooks_for_pact(pact)
149
+ end
150
+
151
+ def self.find_triggered_webhooks_for_verification verification
152
+ webhook_repository.find_triggered_webhooks_for_verification(verification)
153
+ end
119
154
  end
120
155
  end
121
156
  end
@@ -1,5 +1,6 @@
1
1
  require 'sequel'
2
2
  require 'pact_broker/domain/webhook'
3
+ require 'pact_broker/webhooks/webhook_request_template'
3
4
  require 'pact_broker/domain/pacticipant'
4
5
 
5
6
  module PactBroker
@@ -28,8 +29,8 @@ module PactBroker
28
29
  new(
29
30
  properties_hash_from_domain(webhook).merge(uuid: webhook.uuid)
30
31
  ).tap do | db_webhook |
31
- db_webhook.consumer_id = consumer.id
32
- db_webhook.provider_id = provider.id
32
+ db_webhook.consumer_id = consumer.id if consumer
33
+ db_webhook.provider_id = provider.id if provider
33
34
  end
34
35
  end
35
36
 
@@ -43,7 +44,7 @@ module PactBroker
43
44
  consumer: consumer,
44
45
  provider: provider,
45
46
  events: events,
46
- request: Domain::WebhookRequest.new(request_attributes),
47
+ request: Webhooks::WebhookRequestTemplate.new(request_attributes),
47
48
  created_at: created_at,
48
49
  updated_at: updated_at)
49
50
  end
@@ -17,6 +17,14 @@ module PactBroker
17
17
  include PactBroker::Repositories::Helpers
18
18
  end
19
19
 
20
+ def contract_content_changed?
21
+ name == CONTRACT_CONTENT_CHANGED
22
+ end
23
+
24
+ def provider_verification_published?
25
+ name == VERIFICATION_PUBLISHED
26
+ end
27
+
20
28
  end
21
29
 
22
30
  WebhookEvent.plugin :timestamps, update_on_create: true
@@ -0,0 +1,72 @@
1
+ require 'pact_broker/domain/webhook_request_header'
2
+ require 'pact_broker/webhooks/render'
3
+ require 'cgi'
4
+ require 'pact_broker/domain/webhook_request'
5
+
6
+ module PactBroker
7
+ module Webhooks
8
+ class WebhookRequestTemplate
9
+
10
+ include PactBroker::Logging
11
+ include PactBroker::Messages
12
+ HEADERS_TO_REDACT = [/authorization/i, /token/i]
13
+
14
+ attr_accessor :method, :url, :headers, :body, :username, :password, :uuid
15
+
16
+ # Reform gets confused by the :method method, as :method is a standard
17
+ # Ruby method.
18
+ alias_method :http_method, :method
19
+
20
+ def initialize attributes = {}
21
+ @method = attributes[:method]
22
+ @url = attributes[:url]
23
+ @username = attributes[:username]
24
+ @password = attributes[:password]
25
+ @headers = attributes[:headers] || {}
26
+ @body = attributes[:body]
27
+ @uuid = attributes[:uuid]
28
+ end
29
+
30
+ def build(context)
31
+ attributes = {
32
+ method: http_method,
33
+ url: build_url(context[:pact], context[:verification]),
34
+ username: username,
35
+ password: password,
36
+ uuid: uuid,
37
+ body: build_body(context[:pact], context[:verification])
38
+ }
39
+ PactBroker::Domain::WebhookRequest.new(attributes)
40
+ end
41
+
42
+ def build_url(pact, verification)
43
+ URI(PactBroker::Webhooks::Render.call(url, pact, verification){ | value | CGI::escape(value) if !value.nil? } ).to_s
44
+ end
45
+
46
+ def build_body(pact, verification)
47
+ PactBroker::Webhooks::Render.call(String === body ? body : body.to_json, pact, verification)
48
+ end
49
+
50
+ def description
51
+ "#{http_method.upcase} #{URI(url.gsub(PactBroker::Webhooks::Render::TEMPLATE_PARAMETER_REGEXP, 'placeholder')).host}"
52
+ end
53
+
54
+ def display_password
55
+ password.nil? ? nil : "**********"
56
+ end
57
+
58
+ def redacted_headers
59
+ headers.each_with_object({}) do | (name, value), new_headers |
60
+ redact = HEADERS_TO_REDACT.any?{ | pattern | name =~ pattern }
61
+ new_headers[name] = redact ? "**********" : value
62
+ end
63
+ end
64
+
65
+ private
66
+
67
+ def to_s
68
+ "#{method.upcase} #{url}, username=#{username}, password=#{display_password}, headers=#{redacted_headers}, body=#{body}"
69
+ end
70
+ end
71
+ end
72
+ end
@@ -33,7 +33,7 @@ Gem::Specification.new do |gem|
33
33
  gem.add_runtime_dependency 'redcarpet', '>=3.3.2', '~>3.3'
34
34
  gem.add_runtime_dependency 'pact-support'
35
35
  gem.add_runtime_dependency 'padrino-core', '>= 0.14.3', '~> 0.14'
36
- gem.add_runtime_dependency 'sinatra', '>= 2.0.1'
36
+ gem.add_runtime_dependency 'sinatra', '>= 2.0.2'
37
37
  gem.add_runtime_dependency 'haml', '~>5.0'
38
38
  gem.add_runtime_dependency 'sucker_punch', '~>2.0'
39
39
  gem.add_runtime_dependency 'rack-protection', '~>2.0'
@@ -8,86 +8,82 @@ $LOAD_PATH.unshift './tasks'
8
8
  ENV['RACK_ENV'] = 'development'
9
9
  require 'sequel'
10
10
  require 'logger'
11
- DATABASE_CREDENTIALS = {logger: Logger.new($stdout), adapter: "sqlite", database: ARGV[0], :encoding => 'utf8'}
11
+ DATABASE_CREDENTIALS = {logger: Logger.new($stdout), adapter: "sqlite", database: ARGV[0], :encoding => 'utf8'}.tap { |it| puts it }
12
12
  #DATABASE_CREDENTIALS = {adapter: "postgres", database: "pact_broker", username: 'pact_broker', password: 'pact_broker', :encoding => 'utf8'}
13
13
 
14
14
  connection = Sequel.connect(DATABASE_CREDENTIALS)
15
15
  connection.timezone = :utc
16
+ # Uncomment these lines to open a pry session for inspecting the database
17
+ # require 'table_print'
18
+ # require 'pry'; pry(binding);
19
+ # exit
20
+
16
21
  require 'pact_broker/db'
17
22
  PactBroker::DB.connection = connection
18
23
  require 'pact_broker'
19
24
  require 'support/test_data_builder'
20
25
 
21
- # Uncomment these lines to open a pry session for inspecting the database
22
- # require 'table_print'
23
- # require 'pry'; pry(binding);
24
- # exit
25
26
 
26
27
  require 'database/table_dependency_calculator'
27
28
  PactBroker::Database::TableDependencyCalculator.call(connection).each do | table_name |
28
29
  connection[table_name].delete
29
30
  end
30
31
 
31
- class TestDataBuilder
32
- def method_missing *args
33
- self
34
- end
35
-
36
- def publish_pact params = {}
37
- create_pact params
38
- end
39
- end
40
-
41
- # latest verifications
42
- # TestDataBuilder.new
43
- # .create_consumer("Foo")
44
- # .create_provider("Bar")
45
- # .create_consumer_version("1.2.3")
46
- # .create_pact
47
- # .create_verification(provider_version: "4.5.6", success: true)
48
- # .create_provider("Wiffle")
49
- # .create_pact
50
- # .create_verification(provider_version: "5.6.7", success: false)
51
- # .create_provider("Meep")
52
- # .create_pact
32
+ # .create_webhook(method: 'GET', url: 'https://localhost:9393?url=${pactbroker.pactUrl}', body: '${pactbroker.pactUrl}')
53
33
 
34
+ webhook_body = {
35
+ 'pactUrl' => '${pactbroker.pactUrl}',
36
+ 'verificationResultUrl' => '${pactbroker.verificationResultUrl}',
37
+ 'consumerVersionNumber' => '${pactbroker.consumerVersionNumber}',
38
+ 'providerVersionNumber' => '${pactbroker.providerVersionNumber}',
39
+ 'providerVersionTags' => '${pactbroker.providerVersionTags}',
40
+ 'consumerVersionTags' => '${pactbroker.consumerVersionTags}',
41
+ 'consumerName' => '${pactbroker.consumerName}',
42
+ 'providerName' => '${pactbroker.providerName}',
43
+ 'githubVerificationStatus' => '${pactbroker.githubVerificationStatus}'
44
+ }
54
45
 
55
- # .create_webhook(method: 'GET', url: 'https://localhost:9393?url=${pactbroker.pactUrl}', body: '${pactbroker.pactUrl}')
56
46
  TestDataBuilder.new
47
+ .create_global_webhook(method: 'GET', url: "http://example.org?consumer=${pactbroker.consumerName}&provider=${pactbroker.providerName}")
57
48
  .create_certificate(path: 'spec/fixtures/certificates/self-signed.badssl.com.pem')
49
+ .create_consumer("Bethtest")
50
+ .create_verification_webhook(method: 'POST', url: "http://localhost:9292", body: webhook_body, username: "foo", password: "bar")
58
51
  .create_consumer("Foo")
59
52
  .create_label("microservice")
60
53
  .create_provider("Bar")
61
54
  .create_label("microservice")
55
+ .create_verification_webhook(method: 'GET', url: "http://example.org")
56
+ .create_consumer_webhook(method: 'GET', url: 'https://www.google.com.au', event_names: ['provider_verification_published'])
57
+ .create_provider_webhook(method: 'GET', url: 'https://theage.com.au')
62
58
  .create_webhook(method: 'GET', url: 'https://self-signed.badssl.com')
63
59
  .create_consumer_version("1.2.100")
64
- .publish_pact
60
+ .create_pact
65
61
  .create_verification(provider_version: "1.4.234", success: true, execution_date: DateTime.now - 15)
66
62
  .revise_pact
67
63
  .create_consumer_version("1.2.101")
68
64
  .create_consumer_version_tag('prod')
69
- .publish_pact
65
+ .create_pact
70
66
  .create_verification(provider_version: "9.9.10", success: false, execution_date: DateTime.now - 15)
71
67
  .create_consumer_version("1.2.102")
72
- .publish_pact(created_at: (Date.today - 7).to_datetime)
68
+ .create_pact(created_at: (Date.today - 7).to_datetime)
73
69
  .create_verification(provider_version: "9.9.9", success: true, execution_date: DateTime.now - 14)
74
70
  .create_provider("Animals")
75
71
  .create_webhook(method: 'GET', url: 'http://localhost:9393/')
76
- .publish_pact(created_at: (Time.now - 140).to_datetime)
72
+ .create_pact(created_at: (Time.now - 140).to_datetime)
77
73
  .create_verification(provider_version: "2.0.366", execution_date: Date.today - 2) #changed
78
74
  .create_provider("Wiffles")
79
- .publish_pact
75
+ .create_pact
80
76
  .create_verification(provider_version: "3.6.100", success: false, execution_date: Date.today - 7)
81
77
  .create_provider("Hello World App")
82
78
  .create_consumer_version("1.2.107")
83
- .publish_pact(created_at: (Date.today - 1).to_datetime)
79
+ .create_pact(created_at: (Date.today - 1).to_datetime)
84
80
  .create_consumer("The Android App")
85
81
  .create_provider("The back end")
86
82
  .create_webhook(method: 'GET', url: 'http://localhost:9393/')
87
83
  .create_consumer_version("1.2.106")
88
84
  .create_consumer_version_tag("production")
89
85
  .create_consumer_version_tag("feat-x")
90
- .publish_pact
86
+ .create_pact
91
87
  .create_consumer("Some other app")
92
88
  .create_provider("A service")
93
89
  .create_webhook(method: 'GET', url: 'http://localhost:9393/')
@@ -97,20 +93,5 @@ TestDataBuilder.new
97
93
  .create_triggered_webhook(status: 'failure')
98
94
  .create_webhook_execution
99
95
  .create_consumer_version("1.2.106")
100
- .publish_pact(created_at: (Date.today - 26).to_datetime)
96
+ .create_pact(created_at: (Date.today - 26).to_datetime)
101
97
  .create_verification(provider_version: "4.8.152", execution_date: DateTime.now)
102
-
103
- # TestDataBuilder.new
104
- # .create_pact_with_hierarchy("A", "1", "B")
105
- # .create_consumer_version_tag("master")
106
- # .create_consumer_version_tag("prod")
107
- # .create_verification(provider_version: "1")
108
- # .create_consumer_version("2")
109
- # .create_consumer_version_tag("master")
110
- # .create_pact
111
- # .create_verification(provider_version: "2")
112
-
113
- # TestDataBuilder.new
114
- # .create_pact_with_hierarchy("Foo", "1", "Bar")
115
- # .create_webhook(method: 'GET', url: 'http://localhost:9393', events: [{ name: 'provider_verification_published' }, {name: ''}])
116
-