pact_broker 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. checksums.yaml +5 -13
  2. data/.gitignore +0 -1
  3. data/.rspec +1 -0
  4. data/CHANGELOG.md +47 -0
  5. data/README.md +4 -2
  6. data/config.ru +3 -5
  7. data/db/migrations/09_add_timestamps.rb +12 -0
  8. data/db/migrations/10_populate_timestamps.rb +15 -0
  9. data/db/migrations/11_made_timestamps_mandatory.rb +20 -0
  10. data/db/migrations/12_create_webhooks_table.rb +21 -0
  11. data/db/migrations/13_add_columns_to_webhooks.rb +8 -0
  12. data/lib/pact_broker/api.rb +14 -0
  13. data/lib/pact_broker/api/decorators.rb +2 -2
  14. data/lib/pact_broker/api/decorators/base_decorator.rb +2 -1
  15. data/lib/pact_broker/api/decorators/basic_pacticipant_decorator.rb +21 -0
  16. data/lib/pact_broker/api/decorators/decorator_context.rb +20 -0
  17. data/lib/pact_broker/api/decorators/latest_pact_decorator.rb +2 -2
  18. data/lib/pact_broker/api/decorators/pact_decorator.rb +12 -5
  19. data/lib/pact_broker/api/decorators/pact_details_decorator.rb +22 -0
  20. data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +6 -4
  21. data/lib/pact_broker/api/decorators/relationships_csv_decorator.rb +25 -3
  22. data/lib/pact_broker/api/decorators/representable_pact.rb +3 -1
  23. data/lib/pact_broker/api/decorators/tag_decorator.rb +3 -0
  24. data/lib/pact_broker/api/decorators/webhook_decorator.rb +52 -0
  25. data/lib/pact_broker/api/decorators/webhook_execution_result_decorator.rb +58 -0
  26. data/lib/pact_broker/api/decorators/webhook_request_decorator.rb +18 -0
  27. data/lib/pact_broker/api/decorators/webhooks_decorator.rb +37 -0
  28. data/lib/pact_broker/api/pact_broker_urls.rb +16 -0
  29. data/lib/pact_broker/api/renderers/html_pact_renderer.rb +2 -1
  30. data/lib/pact_broker/api/resources/base_resource.rb +12 -1
  31. data/lib/pact_broker/api/resources/group.rb +38 -0
  32. data/lib/pact_broker/api/resources/index.rb +30 -21
  33. data/lib/pact_broker/api/resources/latest_pact.rb +1 -1
  34. data/lib/pact_broker/api/resources/latest_pacts.rb +1 -1
  35. data/lib/pact_broker/api/resources/pact.rb +18 -2
  36. data/lib/pact_broker/api/resources/pact_webhooks.rb +87 -0
  37. data/lib/pact_broker/api/resources/pacticipant.rb +15 -6
  38. data/lib/pact_broker/api/resources/pacticipants.rb +1 -1
  39. data/lib/pact_broker/api/resources/tag.rb +2 -2
  40. data/lib/pact_broker/api/resources/webhook.rb +44 -0
  41. data/lib/pact_broker/api/resources/webhook_execution.rb +43 -0
  42. data/lib/pact_broker/api/resources/webhooks.rb +29 -0
  43. data/lib/pact_broker/app.rb +46 -8
  44. data/lib/pact_broker/db.rb +10 -0
  45. data/lib/pact_broker/doc/controllers/app.rb +32 -0
  46. data/lib/pact_broker/doc/views/latest-pacts.markdown +3 -0
  47. data/lib/pact_broker/doc/views/layouts/main.haml +5 -0
  48. data/lib/pact_broker/doc/views/pacticipants.markdown +10 -0
  49. data/lib/pact_broker/doc/views/self.markdown +8 -0
  50. data/lib/pact_broker/doc/views/webhooks.markdown +48 -0
  51. data/lib/pact_broker/functions/groupify.rb +39 -0
  52. data/lib/pact_broker/jobs/after_pact_save.rb +13 -0
  53. data/lib/pact_broker/json.rb +4 -0
  54. data/lib/pact_broker/locale/en.yml +23 -0
  55. data/lib/pact_broker/messages.rb +18 -0
  56. data/lib/pact_broker/models/group.rb +21 -0
  57. data/lib/pact_broker/models/pact.rb +4 -2
  58. data/lib/pact_broker/models/pacticipant.rb +3 -1
  59. data/lib/pact_broker/models/relationship.rb +34 -0
  60. data/lib/pact_broker/models/tag.rb +3 -1
  61. data/lib/pact_broker/models/version.rb +3 -1
  62. data/lib/pact_broker/models/webhook.rb +53 -0
  63. data/lib/pact_broker/models/webhook_execution_result.rb +26 -0
  64. data/lib/pact_broker/models/webhook_request.rb +107 -0
  65. data/lib/pact_broker/models/webhook_request_header.rb +13 -0
  66. data/lib/pact_broker/repositories.rb +6 -0
  67. data/lib/pact_broker/repositories/pact_repository.rb +25 -7
  68. data/lib/pact_broker/repositories/pacticipant_repository.rb +4 -0
  69. data/lib/pact_broker/repositories/webhook_repository.rb +134 -0
  70. data/lib/pact_broker/services.rb +10 -0
  71. data/lib/pact_broker/services/group_service.rb +24 -0
  72. data/lib/pact_broker/services/pact_service.rb +37 -7
  73. data/lib/pact_broker/services/pacticipant_service.rb +12 -1
  74. data/lib/pact_broker/services/webhook_service.rb +63 -0
  75. data/lib/pact_broker/tasks.rb +0 -1
  76. data/lib/pact_broker/ui/controllers/base_controller.rb +1 -0
  77. data/lib/pact_broker/ui/controllers/groups.rb +25 -0
  78. data/lib/pact_broker/ui/controllers/relationships.rb +0 -2
  79. data/lib/pact_broker/ui/helpers/url_helper.rb +17 -0
  80. data/lib/pact_broker/ui/view_models/relationship.rb +13 -4
  81. data/lib/pact_broker/ui/view_models/relationships.rb +1 -1
  82. data/lib/pact_broker/ui/views/groups/show.html.erb +409 -0
  83. data/lib/pact_broker/ui/views/relationships/show.haml +4 -2
  84. data/lib/pact_broker/version.rb +1 -1
  85. data/pact_broker.gemspec +7 -6
  86. data/public/{d3.v3.js.pagespeed.ce.dFNRrGTALe.js → javascripts/d3.v3.js.pagespeed.ce.dFNRrGTALe.js} +0 -0
  87. data/public/stylesheets/relationships.css +4 -0
  88. data/spec/integration/endpoints/group.rb +22 -0
  89. data/spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb +49 -0
  90. data/spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb +25 -0
  91. data/spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb +7 -4
  92. data/spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb +121 -0
  93. data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +69 -0
  94. data/spec/lib/pact_broker/api/decorators/webhook_request_decorator_spec.rb +78 -0
  95. data/spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb +46 -0
  96. data/spec/lib/pact_broker/api/resources/group_spec.rb +80 -0
  97. data/spec/lib/pact_broker/api/resources/pact_spec.rb +41 -0
  98. data/spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb +184 -0
  99. data/spec/lib/pact_broker/api/resources/pacticipant_spec.rb +71 -0
  100. data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +77 -0
  101. data/spec/lib/pact_broker/api/resources/webhook_spec.rb +60 -0
  102. data/spec/lib/pact_broker/api/resources/webhooks_spec.rb +44 -0
  103. data/spec/lib/pact_broker/doc/controllers/app_spec.rb +51 -0
  104. data/spec/lib/pact_broker/functions/groupify_spec.rb +50 -0
  105. data/spec/lib/pact_broker/models/group_spec.rb +26 -0
  106. data/spec/lib/pact_broker/models/webhook_request_spec.rb +175 -0
  107. data/spec/lib/pact_broker/models/webhook_spec.rb +59 -0
  108. data/spec/lib/pact_broker/repositories/pact_repository_spec.rb +40 -0
  109. data/spec/lib/pact_broker/repositories/webhook_repository_spec.rb +257 -0
  110. data/spec/lib/pact_broker/services/group_service_spec.rb +52 -0
  111. data/spec/lib/pact_broker/services/pact_service_spec.rb +49 -0
  112. data/spec/lib/pact_broker/services/pacticipant_service_spec.rb +50 -0
  113. data/spec/lib/pact_broker/services/webhook_service_spec.rb +51 -0
  114. data/spec/lib/pact_broker/ui/view_models/relationship_spec.rb +20 -6
  115. data/spec/lib/pact_broker/ui/view_models/relationships_spec.rb +33 -0
  116. data/spec/service_consumers/provider_states_for_pact_broker_client.rb +1 -1
  117. data/spec/spec_helper.rb +11 -4
  118. data/spec/support/provider_state_builder.rb +11 -0
  119. data/spec/support/shared_examples_for_responses.rb +25 -0
  120. data/vendor/hal-browser/js/hal/views/embedded_resource.js +3 -3
  121. data/vendor/hal-browser/js/hal/views/resource.js +3 -3
  122. metadata +174 -80
  123. data/assets/d3.v3.js +0 -9263
  124. data/assets/force.csv +0 -29
  125. data/assets/index.html +0 -186
  126. data/assets/index2.html +0 -224
  127. data/assets/relationships +0 -4
  128. data/assets/stylesheets/github.css +0 -387
  129. data/lib/pact_broker/tasks/delete.rake +0 -20
  130. data/public/Network Graph REA.html +0 -48
  131. data/public/rea.csv +0 -10
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+ require 'pact_broker/services/webhook_service'
3
+
4
+ module PactBroker
5
+
6
+ module Services
7
+ describe WebhookService do
8
+
9
+ describe ".execute_webhooks" do
10
+
11
+ let(:pact) { instance_double(PactBroker::Models::Pact, consumer: consumer, provider: provider, consumer_version: consumer_version)}
12
+ let(:consumer_version) { PactBroker::Models::Version.new(number: '1.2.3') }
13
+ let(:consumer) { PactBroker::Models::Pacticipant.new(name: 'Consumer') }
14
+ let(:provider) { PactBroker::Models::Pacticipant.new(name: 'Provider') }
15
+ let(:webhooks) { [instance_double(PactBroker::Models::Webhook)]}
16
+
17
+ before do
18
+ allow_any_instance_of(PactBroker::Repositories::WebhookRepository).to receive(:find_by_consumer_and_provider).and_return(webhooks)
19
+ allow(WebhookService).to receive(:run_later)
20
+ end
21
+
22
+ subject { WebhookService.execute_webhooks pact }
23
+
24
+ it "finds the webhooks" do
25
+ expect_any_instance_of(PactBroker::Repositories::WebhookRepository).to receive(:find_by_consumer_and_provider).with(consumer, provider)
26
+ subject
27
+ end
28
+
29
+ context "when webhooks are found" do
30
+ it "executes the webhook" do
31
+ expect(WebhookService).to receive(:run_later).with(webhooks)
32
+ subject
33
+ end
34
+ end
35
+
36
+ context "when no webhooks are found" do
37
+ let(:webhooks) { [] }
38
+ it "does nothing" do
39
+ expect(WebhookService).to_not receive(:run_later)
40
+ subject
41
+ end
42
+
43
+ it "logs that no webhook was found" do
44
+ expect(PactBroker.logger).to receive(:debug).with(/No webhook found/)
45
+ subject
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -6,21 +6,35 @@ module PactBroker
6
6
  module ViewModels
7
7
  describe Relationship do
8
8
 
9
- let(:consumer) { instance_double("PactBroker::Models::Pacticipant", name: 'consumer_name')}
10
- let(:provider) { instance_double("PactBroker::Models::Pacticipant", name: 'provider_name')}
9
+ let(:consumer) { instance_double("PactBroker::Models::Pacticipant", name: 'Consumer Name')}
10
+ let(:provider) { instance_double("PactBroker::Models::Pacticipant", name: 'Provider Name')}
11
11
  let(:relationship) { PactBroker::Models::Relationship.new(consumer, provider)}
12
12
 
13
13
  subject { Relationship.new(relationship) }
14
14
 
15
- its(:consumer_name) { should eq 'consumer_name'}
16
- its(:provider_name) { should eq 'provider_name'}
17
- its(:latest_pact_url) { should eq "/pacts/provider/provider_name/consumer/consumer_name/latest" }
15
+ its(:consumer_name) { should eq 'Consumer Name'}
16
+ its(:provider_name) { should eq 'Provider Name'}
17
+ its(:latest_pact_url) { should eq "/pacts/provider/Provider%20Name/consumer/Consumer%20Name/latest" }
18
+ its(:consumer_group_url) { should eq "/groups/Consumer%20Name" }
19
+ its(:provider_group_url) { should eq "/groups/Provider%20Name" }
18
20
 
19
21
  describe "<=>" do
20
22
 
21
- xit "sorts by consumer name then provider name" do
23
+ let(:relationship_model_4) { double("PactBroker::Models::Relationship", consumer_name: "A", provider_name: "X") }
24
+ let(:relationship_model_2) { double("PactBroker::Models::Relationship", consumer_name: "a", provider_name: "y") }
25
+ let(:relationship_model_3) { double("PactBroker::Models::Relationship", consumer_name: "A", provider_name: "Z") }
26
+ let(:relationship_model_1) { double("PactBroker::Models::Relationship", consumer_name: "C", provider_name: "A") }
22
27
 
28
+ let(:relationship_models) { [relationship_model_1, relationship_model_3, relationship_model_4, relationship_model_2] }
29
+ let(:ordered_view_models) { [relationship_model_4, relationship_model_2, relationship_model_3, relationship_model_1] }
30
+
31
+ let(:relationship_view_models) { relationship_models.collect{ |r| Relationship.new(r)} }
32
+
33
+ it "sorts by consumer name then provider name" do
34
+ expect(relationship_view_models.sort.collect{ |r| [r.consumer_name, r.provider_name]})
35
+ .to eq([["A", "X"],["a","y"],["A","Z"],["C", "A"]])
23
36
  end
37
+
24
38
  end
25
39
 
26
40
  end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+ require 'pact_broker/ui/view_models/relationships'
3
+
4
+ module PactBroker
5
+ module UI
6
+ module ViewModels
7
+ describe Relationships do
8
+
9
+ let(:relationship_model_4) { double("PactBroker::Models::Relationship", consumer_name: "A", provider_name: "X") }
10
+ let(:relationship_model_2) { double("PactBroker::Models::Relationship", consumer_name: "a", provider_name: "y") }
11
+ let(:relationship_model_3) { double("PactBroker::Models::Relationship", consumer_name: "A", provider_name: "Z") }
12
+ let(:relationship_model_1) { double("PactBroker::Models::Relationship", consumer_name: "C", provider_name: "A") }
13
+
14
+ subject { Relationships.new([relationship_model_1, relationship_model_3, relationship_model_4, relationship_model_2]) }
15
+
16
+ describe "#each" do
17
+
18
+ it "yields the relationships in order" do
19
+ list = []
20
+
21
+ subject.each do | relationship_view_model |
22
+ list << [relationship_view_model.consumer_name, relationship_view_model.provider_name]
23
+ end
24
+
25
+ expect(list).to eq([["A", "X"],["a","y"],["A","Z"],["C", "A"]])
26
+
27
+ end
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
@@ -14,7 +14,7 @@ Pact.provider_states_for "Pact Broker Client" do
14
14
 
15
15
  provider_state "an error occurs while publishing a pact" do
16
16
  set_up do
17
- PactBroker::Services::PactService.stub(:create_or_update_pact).and_raise("an error")
17
+ allow(PactBroker::Services::PactService).to receive(:create_or_update_pact).and_raise("an error")
18
18
  end
19
19
  end
20
20
 
@@ -2,12 +2,12 @@ ENV['RACK_ENV'] = 'test'
2
2
  RACK_ENV = 'test'
3
3
 
4
4
  $: << File.expand_path("../../", __FILE__)
5
-
6
5
  require 'rack/test'
7
6
  require 'db'
8
- require './spec/support/provider_state_builder'
7
+ require 'support/provider_state_builder'
8
+ require 'support/shared_examples_for_responses'
9
9
  require 'pact_broker/api'
10
- require 'rspec/fire'
10
+ require 'rspec/its'
11
11
 
12
12
  YAML::ENGINE.yamler = 'psych'
13
13
  I18n.config.enforce_available_locales = false
@@ -24,9 +24,14 @@ end
24
24
  RSpec.configure do | config |
25
25
  config.before :suite do
26
26
  raise "Wrong environment!!! Don't run this script!! ENV['RACK_ENV'] is #{ENV['RACK_ENV']} and RACK_ENV is #{RACK_ENV}" if ENV['RACK_ENV'] != 'test' || RACK_ENV != 'test'
27
+ PactBroker::DB.connection = DB::PACT_BROKER_DB
27
28
  end
28
29
 
30
+
29
31
  config.before :each do
32
+ # TODO: Change this to transactional!
33
+ DB::PACT_BROKER_DB[:webhook_headers].truncate
34
+ DB::PACT_BROKER_DB[:webhooks].truncate
30
35
  DB::PACT_BROKER_DB[:pacts].truncate
31
36
  DB::PACT_BROKER_DB[:tags].truncate
32
37
  DB::PACT_BROKER_DB[:versions].truncate
@@ -34,7 +39,9 @@ RSpec.configure do | config |
34
39
  end
35
40
 
36
41
  config.include Rack::Test::Methods
37
- config.include RSpec::Fire
42
+ config.mock_with :rspec do |mocks|
43
+ mocks.verify_partial_doubles = true
44
+ end
38
45
 
39
46
  def app
40
47
  PactBroker::API
@@ -5,6 +5,11 @@ class ProviderStateBuilder
5
5
 
6
6
  include PactBroker::Repositories
7
7
 
8
+ attr_reader :pacticipant
9
+ attr_reader :consumer
10
+ attr_reader :provider
11
+ attr_reader :webhook
12
+
8
13
  def create_pricing_service
9
14
  @pricing_service_id = pacticipant_repository.create(:name => 'Pricing Service', :repository_url => 'git@git.realestate.com.au:business-systems/pricing-service').save(raise_on_save_failure: true).id
10
15
  self
@@ -114,6 +119,12 @@ class ProviderStateBuilder
114
119
  self
115
120
  end
116
121
 
122
+ def create_webhook
123
+ request = PactBroker::Models::WebhookRequest.new(method: 'POST', url: 'http://example.org', headers: {'Content-Type' => 'application/json'})
124
+ @webhook = WebhookRepository.new.create PactBroker::Models::Webhook.new(request: request), @consumer, @provider
125
+ self
126
+ end
127
+
117
128
  private
118
129
 
119
130
  # def create_pacticipant name
@@ -0,0 +1,25 @@
1
+ shared_examples_for "a JSON 404 response" do
2
+ it "returns a 404 Not Found" do
3
+ subject
4
+ expect(last_response.status).to eq 404
5
+ end
6
+ end
7
+
8
+ shared_examples_for "a 200 JSON response" do
9
+
10
+ end
11
+
12
+ require 'rspec/expectations'
13
+
14
+ RSpec::Matchers.define :be_a_hal_json_success_response do
15
+ match do | actual |
16
+ expect(actual.status).to be 200
17
+ expect(actual.headers['Content-Type']).to eq 'application/hal+json'
18
+ end
19
+ end
20
+
21
+ RSpec::Matchers.define :be_a_404_response do
22
+ match do | actual |
23
+ expect(actual.status).to be 404
24
+ end
25
+ end
@@ -23,7 +23,7 @@ HAL.Views.EmbeddedResource = Backbone.View.extend({
23
23
  e.preventDefault();
24
24
  this.$accordionBody.collapse('toggle');
25
25
  },
26
-
26
+
27
27
  onDoxClick: function(e) {
28
28
  e.preventDefault();
29
29
  this.vent.trigger('show-docs', {
@@ -35,16 +35,16 @@ HAL.Views.EmbeddedResource = Backbone.View.extend({
35
35
  render: function() {
36
36
  this.$el.empty();
37
37
 
38
- this.propertiesView.render(this.resource.toJSON());
39
38
  this.linksView.render(this.resource.links);
39
+ this.propertiesView.render(this.resource.toJSON());
40
40
 
41
41
  this.$el.append(this.template({
42
42
  resource: this.resource
43
43
  }));
44
44
 
45
45
  var $inner = $('<div class="accordion-inner"></div>');
46
- $inner.append(this.propertiesView.el);
47
46
  $inner.append(this.linksView.el);
47
+ $inner.append(this.propertiesView.el);
48
48
 
49
49
  this.$accordionBody = $('<div class="accordion-body collapse"></div>');
50
50
  this.$accordionBody.append($inner)
@@ -18,14 +18,14 @@ HAL.Views.Resource = Backbone.View.extend({
18
18
  render: function(resource) {
19
19
  var linksView = new HAL.Views.Links({ vent: this.vent }),
20
20
  propertiesView = new HAL.Views.Properties({ vent: this.vent }),
21
- embeddedResourcesView
21
+ embeddedResourcesView
22
22
 
23
- propertiesView.render(resource.toJSON());
24
23
  linksView.render(resource.links);
24
+ propertiesView.render(resource.toJSON());
25
25
 
26
26
  this.$el.empty();
27
- this.$el.append(propertiesView.el);
28
27
  this.$el.append(linksView.el);
28
+ this.$el.append(propertiesView.el);
29
29
 
30
30
  if (resource.embeddedResources) {
31
31
  embeddedResourcesView = new HAL.Views.EmbeddedResources({ vent: this.vent });
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: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bethany Skurrie
@@ -10,260 +10,274 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-06-05 00:00:00.000000000 Z
13
+ date: 2014-08-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ! '>='
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ! '>='
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: '0'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: json
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ! '>='
33
+ - - ">="
34
34
  - !ruby/object:Gem::Version
35
35
  version: '0'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ! '>='
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
42
  version: '0'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: roar
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ! '>='
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: '0'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ! '>='
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: sequel
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ! '>='
61
+ - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: '0'
63
+ version: '4.12'
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - ! '>='
68
+ - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: '0'
71
- - !ruby/object:Gem::Dependency
72
- name: sqlite3
73
- requirement: !ruby/object:Gem::Requirement
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- type: :runtime
79
- prerelease: false
80
- version_requirements: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - ! '>='
83
- - !ruby/object:Gem::Version
84
- version: '0'
70
+ version: '4.12'
85
71
  - !ruby/object:Gem::Dependency
86
72
  name: webmachine
87
73
  requirement: !ruby/object:Gem::Requirement
88
74
  requirements:
89
- - - ! '>='
75
+ - - ">="
90
76
  - !ruby/object:Gem::Version
91
77
  version: '0'
92
78
  type: :runtime
93
79
  prerelease: false
94
80
  version_requirements: !ruby/object:Gem::Requirement
95
81
  requirements:
96
- - - ! '>='
82
+ - - ">="
97
83
  - !ruby/object:Gem::Version
98
84
  version: '0'
99
85
  - !ruby/object:Gem::Dependency
100
86
  name: versionomy
101
87
  requirement: !ruby/object:Gem::Requirement
102
88
  requirements:
103
- - - ! '>='
89
+ - - ">="
104
90
  - !ruby/object:Gem::Version
105
91
  version: '0'
106
92
  type: :runtime
107
93
  prerelease: false
108
94
  version_requirements: !ruby/object:Gem::Requirement
109
95
  requirements:
110
- - - ! '>='
96
+ - - ">="
111
97
  - !ruby/object:Gem::Version
112
98
  version: '0'
113
99
  - !ruby/object:Gem::Dependency
114
100
  name: rack
115
101
  requirement: !ruby/object:Gem::Requirement
116
102
  requirements:
117
- - - ! '>='
103
+ - - ">="
118
104
  - !ruby/object:Gem::Version
119
105
  version: '0'
120
106
  type: :runtime
121
107
  prerelease: false
122
108
  version_requirements: !ruby/object:Gem::Requirement
123
109
  requirements:
124
- - - ! '>='
110
+ - - ">="
125
111
  - !ruby/object:Gem::Version
126
112
  version: '0'
127
113
  - !ruby/object:Gem::Dependency
128
114
  name: redcarpet
129
115
  requirement: !ruby/object:Gem::Requirement
130
116
  requirements:
131
- - - ~>
117
+ - - "~>"
132
118
  - !ruby/object:Gem::Version
133
- version: 3.1.1
119
+ version: '3.1'
134
120
  type: :runtime
135
121
  prerelease: false
136
122
  version_requirements: !ruby/object:Gem::Requirement
137
123
  requirements:
138
- - - ~>
124
+ - - "~>"
139
125
  - !ruby/object:Gem::Version
140
- version: 3.1.1
126
+ version: '3.1'
141
127
  - !ruby/object:Gem::Dependency
142
128
  name: pact
143
129
  requirement: !ruby/object:Gem::Requirement
144
130
  requirements:
145
- - - ~>
131
+ - - "~>"
146
132
  - !ruby/object:Gem::Version
147
- version: 1.1.0
133
+ version: '1.3'
148
134
  type: :runtime
149
135
  prerelease: false
150
136
  version_requirements: !ruby/object:Gem::Requirement
151
137
  requirements:
152
- - - ~>
138
+ - - "~>"
153
139
  - !ruby/object:Gem::Version
154
- version: 1.1.0
140
+ version: '1.3'
155
141
  - !ruby/object:Gem::Dependency
156
142
  name: padrino
157
143
  requirement: !ruby/object:Gem::Requirement
158
144
  requirements:
159
- - - ~>
145
+ - - "~>"
160
146
  - !ruby/object:Gem::Version
161
147
  version: '0.12'
162
148
  type: :runtime
163
149
  prerelease: false
164
150
  version_requirements: !ruby/object:Gem::Requirement
165
151
  requirements:
166
- - - ~>
152
+ - - "~>"
167
153
  - !ruby/object:Gem::Version
168
154
  version: '0.12'
169
155
  - !ruby/object:Gem::Dependency
170
156
  name: haml
171
157
  requirement: !ruby/object:Gem::Requirement
172
158
  requirements:
173
- - - ! '>='
159
+ - - ">="
174
160
  - !ruby/object:Gem::Version
175
161
  version: '0'
176
162
  type: :runtime
177
163
  prerelease: false
178
164
  version_requirements: !ruby/object:Gem::Requirement
179
165
  requirements:
180
- - - ! '>='
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ - !ruby/object:Gem::Dependency
170
+ name: sqlite3
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
181
  - !ruby/object:Gem::Version
182
182
  version: '0'
183
183
  - !ruby/object:Gem::Dependency
184
184
  name: pry
185
185
  requirement: !ruby/object:Gem::Requirement
186
186
  requirements:
187
- - - ! '>='
187
+ - - ">="
188
188
  - !ruby/object:Gem::Version
189
189
  version: '0'
190
190
  type: :development
191
191
  prerelease: false
192
192
  version_requirements: !ruby/object:Gem::Requirement
193
193
  requirements:
194
- - - ! '>='
194
+ - - ">="
195
195
  - !ruby/object:Gem::Version
196
196
  version: '0'
197
197
  - !ruby/object:Gem::Dependency
198
198
  name: rake
199
199
  requirement: !ruby/object:Gem::Requirement
200
200
  requirements:
201
- - - ~>
201
+ - - "~>"
202
202
  - !ruby/object:Gem::Version
203
203
  version: '10.0'
204
204
  type: :development
205
205
  prerelease: false
206
206
  version_requirements: !ruby/object:Gem::Requirement
207
207
  requirements:
208
- - - ~>
208
+ - - "~>"
209
209
  - !ruby/object:Gem::Version
210
210
  version: '10.0'
211
211
  - !ruby/object:Gem::Dependency
212
212
  name: fakefs
213
213
  requirement: !ruby/object:Gem::Requirement
214
214
  requirements:
215
- - - ~>
215
+ - - "~>"
216
216
  - !ruby/object:Gem::Version
217
217
  version: '0.4'
218
218
  type: :development
219
219
  prerelease: false
220
220
  version_requirements: !ruby/object:Gem::Requirement
221
221
  requirements:
222
- - - ~>
222
+ - - "~>"
223
223
  - !ruby/object:Gem::Version
224
224
  version: '0.4'
225
225
  - !ruby/object:Gem::Dependency
226
- name: rspec-fire
226
+ name: mysql2
227
227
  requirement: !ruby/object:Gem::Requirement
228
228
  requirements:
229
- - - ~>
229
+ - - "~>"
230
230
  - !ruby/object:Gem::Version
231
- version: 1.2.0
231
+ version: 0.3.15
232
232
  type: :development
233
233
  prerelease: false
234
234
  version_requirements: !ruby/object:Gem::Requirement
235
235
  requirements:
236
- - - ~>
236
+ - - "~>"
237
237
  - !ruby/object:Gem::Version
238
- version: 1.2.0
238
+ version: 0.3.15
239
239
  - !ruby/object:Gem::Dependency
240
- name: mysql2
240
+ name: webmock
241
241
  requirement: !ruby/object:Gem::Requirement
242
242
  requirements:
243
- - - ~>
243
+ - - ">="
244
244
  - !ruby/object:Gem::Version
245
- version: 0.3.15
245
+ version: '0'
246
246
  type: :development
247
247
  prerelease: false
248
248
  version_requirements: !ruby/object:Gem::Requirement
249
249
  requirements:
250
- - - ~>
250
+ - - ">="
251
251
  - !ruby/object:Gem::Version
252
- version: 0.3.15
252
+ version: '0'
253
253
  - !ruby/object:Gem::Dependency
254
- name: pact
254
+ name: rspec
255
255
  requirement: !ruby/object:Gem::Requirement
256
256
  requirements:
257
- - - ~>
257
+ - - "~>"
258
258
  - !ruby/object:Gem::Version
259
- version: '1.1'
259
+ version: '3.0'
260
260
  type: :development
261
261
  prerelease: false
262
262
  version_requirements: !ruby/object:Gem::Requirement
263
263
  requirements:
264
- - - ~>
264
+ - - "~>"
265
265
  - !ruby/object:Gem::Version
266
- version: '1.1'
266
+ version: '3.0'
267
+ - !ruby/object:Gem::Dependency
268
+ name: rspec-its
269
+ requirement: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - ">="
272
+ - !ruby/object:Gem::Version
273
+ version: '0'
274
+ type: :development
275
+ prerelease: false
276
+ version_requirements: !ruby/object:Gem::Requirement
277
+ requirements:
278
+ - - ">="
279
+ - !ruby/object:Gem::Version
280
+ version: '0'
267
281
  description: A server that stores and returns pact files generated by the pact gem.
268
282
  It enables head/prod cross testing of the consumer and provider projects.
269
283
  email:
@@ -274,18 +288,12 @@ executables: []
274
288
  extensions: []
275
289
  extra_rdoc_files: []
276
290
  files:
277
- - .gitignore
278
- - .rspec
291
+ - ".gitignore"
292
+ - ".rspec"
279
293
  - CHANGELOG.md
280
294
  - Gemfile
281
295
  - README.md
282
296
  - Rakefile
283
- - assets/d3.v3.js
284
- - assets/force.csv
285
- - assets/index.html
286
- - assets/index2.html
287
- - assets/relationships
288
- - assets/stylesheets/github.css
289
297
  - bethtest.rb
290
298
  - config.ru
291
299
  - config/boot.rb
@@ -298,6 +306,11 @@ files:
298
306
  - db/migrations/06_make_version_foreign_key_mandatory.rb
299
307
  - db/migrations/07_increase_json_content_length.rb
300
308
  - db/migrations/08_create_latest_pact_view.rb
309
+ - db/migrations/09_add_timestamps.rb
310
+ - db/migrations/10_populate_timestamps.rb
311
+ - db/migrations/11_made_timestamps_mandatory.rb
312
+ - db/migrations/12_create_webhooks_table.rb
313
+ - db/migrations/13_add_columns_to_webhooks.rb
301
314
  - db/pact_broker_database.sqlite3
302
315
  - example/Gemfile
303
316
  - example/config.ru
@@ -306,9 +319,12 @@ files:
306
319
  - lib/pact_broker/api.rb
307
320
  - lib/pact_broker/api/decorators.rb
308
321
  - lib/pact_broker/api/decorators/base_decorator.rb
322
+ - lib/pact_broker/api/decorators/basic_pacticipant_decorator.rb
323
+ - lib/pact_broker/api/decorators/decorator_context.rb
309
324
  - lib/pact_broker/api/decorators/latest_pact_decorator.rb
310
325
  - lib/pact_broker/api/decorators/pact_collection_decorator.rb
311
326
  - lib/pact_broker/api/decorators/pact_decorator.rb
327
+ - lib/pact_broker/api/decorators/pact_details_decorator.rb
312
328
  - lib/pact_broker/api/decorators/pact_pacticipant_decorator.rb
313
329
  - lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb
314
330
  - lib/pact_broker/api/decorators/pacticipant_decorator.rb
@@ -316,49 +332,79 @@ files:
316
332
  - lib/pact_broker/api/decorators/representable_pact.rb
317
333
  - lib/pact_broker/api/decorators/tag_decorator.rb
318
334
  - lib/pact_broker/api/decorators/version_decorator.rb
335
+ - lib/pact_broker/api/decorators/webhook_decorator.rb
336
+ - lib/pact_broker/api/decorators/webhook_execution_result_decorator.rb
337
+ - lib/pact_broker/api/decorators/webhook_request_decorator.rb
338
+ - lib/pact_broker/api/decorators/webhooks_decorator.rb
319
339
  - lib/pact_broker/api/pact_broker_urls.rb
320
340
  - lib/pact_broker/api/renderers/html_pact_renderer.rb
321
341
  - lib/pact_broker/api/resources/base_resource.rb
342
+ - lib/pact_broker/api/resources/group.rb
322
343
  - lib/pact_broker/api/resources/index.rb
323
344
  - lib/pact_broker/api/resources/latest_pact.rb
324
345
  - lib/pact_broker/api/resources/latest_pacts.rb
325
346
  - lib/pact_broker/api/resources/pact.rb
347
+ - lib/pact_broker/api/resources/pact_webhooks.rb
326
348
  - lib/pact_broker/api/resources/pacticipant.rb
327
349
  - lib/pact_broker/api/resources/pacticipants.rb
328
350
  - lib/pact_broker/api/resources/relationships.rb
329
351
  - lib/pact_broker/api/resources/tag.rb
352
+ - lib/pact_broker/api/resources/webhook.rb
353
+ - lib/pact_broker/api/resources/webhook_execution.rb
354
+ - lib/pact_broker/api/resources/webhooks.rb
330
355
  - lib/pact_broker/app.rb
331
356
  - lib/pact_broker/configuration.rb
332
357
  - lib/pact_broker/db.rb
358
+ - lib/pact_broker/doc/controllers/app.rb
359
+ - lib/pact_broker/doc/views/latest-pacts.markdown
360
+ - lib/pact_broker/doc/views/layouts/main.haml
361
+ - lib/pact_broker/doc/views/pacticipants.markdown
362
+ - lib/pact_broker/doc/views/self.markdown
363
+ - lib/pact_broker/doc/views/webhooks.markdown
364
+ - lib/pact_broker/functions/groupify.rb
365
+ - lib/pact_broker/jobs/after_pact_save.rb
366
+ - lib/pact_broker/json.rb
367
+ - lib/pact_broker/locale/en.yml
333
368
  - lib/pact_broker/logging.rb
369
+ - lib/pact_broker/messages.rb
334
370
  - lib/pact_broker/models.rb
371
+ - lib/pact_broker/models/group.rb
335
372
  - lib/pact_broker/models/order_versions.rb
336
373
  - lib/pact_broker/models/pact.rb
337
374
  - lib/pact_broker/models/pacticipant.rb
338
375
  - lib/pact_broker/models/relationship.rb
339
376
  - lib/pact_broker/models/tag.rb
340
377
  - lib/pact_broker/models/version.rb
378
+ - lib/pact_broker/models/webhook.rb
379
+ - lib/pact_broker/models/webhook_execution_result.rb
380
+ - lib/pact_broker/models/webhook_request.rb
381
+ - lib/pact_broker/models/webhook_request_header.rb
341
382
  - lib/pact_broker/project_root.rb
342
383
  - lib/pact_broker/repositories.rb
343
384
  - lib/pact_broker/repositories/pact_repository.rb
344
385
  - lib/pact_broker/repositories/pacticipant_repository.rb
345
386
  - lib/pact_broker/repositories/tag_repository.rb
346
387
  - lib/pact_broker/repositories/version_repository.rb
388
+ - lib/pact_broker/repositories/webhook_repository.rb
347
389
  - lib/pact_broker/services.rb
390
+ - lib/pact_broker/services/group_service.rb
348
391
  - lib/pact_broker/services/pact_service.rb
349
392
  - lib/pact_broker/services/pacticipant_service.rb
350
393
  - lib/pact_broker/services/tag_service.rb
351
394
  - lib/pact_broker/services/version_service.rb
395
+ - lib/pact_broker/services/webhook_service.rb
352
396
  - lib/pact_broker/tasks.rb
353
- - lib/pact_broker/tasks/delete.rake
354
397
  - lib/pact_broker/tasks/migration_task.rb
355
398
  - lib/pact_broker/ui/controllers/base_controller.rb
356
399
  - lib/pact_broker/ui/controllers/clusters.rb
400
+ - lib/pact_broker/ui/controllers/groups.rb
357
401
  - lib/pact_broker/ui/controllers/relationships.rb
402
+ - lib/pact_broker/ui/helpers/url_helper.rb
358
403
  - lib/pact_broker/ui/view_models/clusters.rb
359
404
  - lib/pact_broker/ui/view_models/relationship.rb
360
405
  - lib/pact_broker/ui/view_models/relationships.rb
361
406
  - lib/pact_broker/ui/views/clusters/show.haml
407
+ - lib/pact_broker/ui/views/groups/show.html.erb
362
408
  - lib/pact_broker/ui/views/layouts/main.haml
363
409
  - lib/pact_broker/ui/views/relationships/show.haml
364
410
  - lib/pact_broker/version.rb
@@ -366,7 +412,6 @@ files:
366
412
  - lib/rack/hal_browser/redirect.rb
367
413
  - pact_broker.gemspec
368
414
  - pact_broker_client-pact_broker.json
369
- - public/Network Graph REA.html
370
415
  - public/Network Graph_files/d3.v3.js
371
416
  - public/Network Graph_files/ga.js
372
417
  - public/bootstrap.zip
@@ -375,42 +420,66 @@ files:
375
420
  - public/css/bootstrap-theme.min.css
376
421
  - public/css/bootstrap.css
377
422
  - public/css/bootstrap.min.css
378
- - public/d3.v3.js.pagespeed.ce.dFNRrGTALe.js
379
423
  - public/fonts/glyphicons-halflings-regular.eot
380
424
  - public/fonts/glyphicons-halflings-regular.svg
381
425
  - public/fonts/glyphicons-halflings-regular.ttf
382
426
  - public/fonts/glyphicons-halflings-regular.woff
427
+ - public/javascripts/d3.v3.js.pagespeed.ce.dFNRrGTALe.js
383
428
  - public/javascripts/jquery-2.1.1.min.js
384
429
  - public/javascripts/jquery.tablesorter.js
385
430
  - public/javascripts/jquery.tablesorter.min.js
386
431
  - public/js/bootstrap.js
387
432
  - public/js/bootstrap.min.js
388
- - public/rea.csv
389
433
  - public/stylesheets/github.css
390
434
  - public/stylesheets/relationships.css
391
435
  - script/update-hal-browser
392
436
  - spec/fixtures/renderer_pact.json
437
+ - spec/integration/endpoints/group.rb
393
438
  - spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb
439
+ - spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb
440
+ - spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb
394
441
  - spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb
395
442
  - spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
443
+ - spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb
444
+ - spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb
445
+ - spec/lib/pact_broker/api/decorators/webhook_request_decorator_spec.rb
446
+ - spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb
396
447
  - spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb
448
+ - spec/lib/pact_broker/api/resources/group_spec.rb
397
449
  - spec/lib/pact_broker/api/resources/latest_pact_spec.rb
450
+ - spec/lib/pact_broker/api/resources/pact_spec.rb
451
+ - spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb
452
+ - spec/lib/pact_broker/api/resources/pacticipant_spec.rb
398
453
  - spec/lib/pact_broker/api/resources/tag_spec.rb
454
+ - spec/lib/pact_broker/api/resources/webhook_execution_spec.rb
455
+ - spec/lib/pact_broker/api/resources/webhook_spec.rb
456
+ - spec/lib/pact_broker/api/resources/webhooks_spec.rb
399
457
  - spec/lib/pact_broker/configuration_spec.rb
458
+ - spec/lib/pact_broker/doc/controllers/app_spec.rb
459
+ - spec/lib/pact_broker/functions/groupify_spec.rb
460
+ - spec/lib/pact_broker/models/group_spec.rb
400
461
  - spec/lib/pact_broker/models/order_versions_spec.rb
462
+ - spec/lib/pact_broker/models/webhook_request_spec.rb
463
+ - spec/lib/pact_broker/models/webhook_spec.rb
401
464
  - spec/lib/pact_broker/repositories/pact_repository_spec.rb
402
465
  - spec/lib/pact_broker/repositories/tag_repository_spec.rb
403
466
  - spec/lib/pact_broker/repositories/version_repository_spec.rb
467
+ - spec/lib/pact_broker/repositories/webhook_repository_spec.rb
468
+ - spec/lib/pact_broker/services/group_service_spec.rb
469
+ - spec/lib/pact_broker/services/pact_service_spec.rb
404
470
  - spec/lib/pact_broker/services/pacticipant_service_spec.rb
405
471
  - spec/lib/pact_broker/services/tag_service_spec.rb
472
+ - spec/lib/pact_broker/services/webhook_service_spec.rb
406
473
  - spec/lib/pact_broker/ui/controllers/clusters_spec.rb
407
474
  - spec/lib/pact_broker/ui/controllers/relationships_spec.rb
408
475
  - spec/lib/pact_broker/ui/view_models/relationship_spec.rb
476
+ - spec/lib/pact_broker/ui/view_models/relationships_spec.rb
409
477
  - spec/lib/rack/hal_browser/redirect_spec.rb
410
478
  - spec/service_consumers/pact_helper.rb
411
479
  - spec/service_consumers/provider_states_for_pact_broker_client.rb
412
480
  - spec/spec_helper.rb
413
481
  - spec/support/provider_state_builder.rb
482
+ - spec/support/shared_examples_for_responses.rb
414
483
  - tasks/database.rb
415
484
  - tasks/db.rake
416
485
  - tasks/pact.rake
@@ -461,40 +530,65 @@ require_paths:
461
530
  - lib
462
531
  required_ruby_version: !ruby/object:Gem::Requirement
463
532
  requirements:
464
- - - ! '>='
533
+ - - ">="
465
534
  - !ruby/object:Gem::Version
466
535
  version: '0'
467
536
  required_rubygems_version: !ruby/object:Gem::Requirement
468
537
  requirements:
469
- - - ! '>='
538
+ - - ">="
470
539
  - !ruby/object:Gem::Version
471
540
  version: '0'
472
541
  requirements: []
473
542
  rubyforge_project:
474
- rubygems_version: 2.1.11
543
+ rubygems_version: 2.2.2
475
544
  signing_key:
476
545
  specification_version: 4
477
546
  summary: See description
478
547
  test_files:
479
548
  - spec/fixtures/renderer_pact.json
549
+ - spec/integration/endpoints/group.rb
480
550
  - spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb
551
+ - spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb
552
+ - spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb
481
553
  - spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb
482
554
  - spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
555
+ - spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb
556
+ - spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb
557
+ - spec/lib/pact_broker/api/decorators/webhook_request_decorator_spec.rb
558
+ - spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb
483
559
  - spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb
560
+ - spec/lib/pact_broker/api/resources/group_spec.rb
484
561
  - spec/lib/pact_broker/api/resources/latest_pact_spec.rb
562
+ - spec/lib/pact_broker/api/resources/pact_spec.rb
563
+ - spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb
564
+ - spec/lib/pact_broker/api/resources/pacticipant_spec.rb
485
565
  - spec/lib/pact_broker/api/resources/tag_spec.rb
566
+ - spec/lib/pact_broker/api/resources/webhook_execution_spec.rb
567
+ - spec/lib/pact_broker/api/resources/webhook_spec.rb
568
+ - spec/lib/pact_broker/api/resources/webhooks_spec.rb
486
569
  - spec/lib/pact_broker/configuration_spec.rb
570
+ - spec/lib/pact_broker/doc/controllers/app_spec.rb
571
+ - spec/lib/pact_broker/functions/groupify_spec.rb
572
+ - spec/lib/pact_broker/models/group_spec.rb
487
573
  - spec/lib/pact_broker/models/order_versions_spec.rb
574
+ - spec/lib/pact_broker/models/webhook_request_spec.rb
575
+ - spec/lib/pact_broker/models/webhook_spec.rb
488
576
  - spec/lib/pact_broker/repositories/pact_repository_spec.rb
489
577
  - spec/lib/pact_broker/repositories/tag_repository_spec.rb
490
578
  - spec/lib/pact_broker/repositories/version_repository_spec.rb
579
+ - spec/lib/pact_broker/repositories/webhook_repository_spec.rb
580
+ - spec/lib/pact_broker/services/group_service_spec.rb
581
+ - spec/lib/pact_broker/services/pact_service_spec.rb
491
582
  - spec/lib/pact_broker/services/pacticipant_service_spec.rb
492
583
  - spec/lib/pact_broker/services/tag_service_spec.rb
584
+ - spec/lib/pact_broker/services/webhook_service_spec.rb
493
585
  - spec/lib/pact_broker/ui/controllers/clusters_spec.rb
494
586
  - spec/lib/pact_broker/ui/controllers/relationships_spec.rb
495
587
  - spec/lib/pact_broker/ui/view_models/relationship_spec.rb
588
+ - spec/lib/pact_broker/ui/view_models/relationships_spec.rb
496
589
  - spec/lib/rack/hal_browser/redirect_spec.rb
497
590
  - spec/service_consumers/pact_helper.rb
498
591
  - spec/service_consumers/provider_states_for_pact_broker_client.rb
499
592
  - spec/spec_helper.rb
500
593
  - spec/support/provider_state_builder.rb
594
+ - spec/support/shared_examples_for_responses.rb