pact_broker 2.26.0 → 2.26.1

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/db/migrations/20180828_create_latest_versions.rb +25 -0
  4. data/db/pact_broker_database.sqlite3 +0 -0
  5. data/lib/pact_broker/api.rb +2 -0
  6. data/lib/pact_broker/api/contracts/request_validations.rb +1 -1
  7. data/lib/pact_broker/api/contracts/verification_contract.rb +1 -1
  8. data/lib/pact_broker/api/contracts/webhook_contract.rb +2 -2
  9. data/lib/pact_broker/api/decorators/verification_decorator.rb +1 -1
  10. data/lib/pact_broker/api/renderers/integrations_dot_renderer.rb +36 -0
  11. data/lib/pact_broker/api/resources/index.rb +5 -0
  12. data/lib/pact_broker/api/resources/integrations.rb +26 -0
  13. data/lib/pact_broker/doc/views/integrations.markdown +7 -0
  14. data/lib/pact_broker/domain/pacticipant.rb +3 -2
  15. data/lib/pact_broker/matrix/deployment_status_summary.rb +9 -1
  16. data/lib/pact_broker/pacticipants/repository.rb +1 -1
  17. data/lib/pact_broker/tags/repository.rb +9 -2
  18. data/lib/pact_broker/version.rb +1 -1
  19. data/lib/pact_broker/versions/latest_version.rb +11 -0
  20. data/lib/pact_broker/versions/repository.rb +2 -2
  21. data/lib/rack/pact_broker/invalid_uri_protection.rb +1 -1
  22. data/spec/features/get_integrations_dot_file_spec.rb +23 -0
  23. data/spec/fixtures/expected.gv +4 -0
  24. data/spec/lib/pact_broker/api/contracts/verification_contract_spec.rb +8 -0
  25. data/spec/lib/pact_broker/api/decorators/verification_decorator_spec.rb +3 -1
  26. data/spec/lib/pact_broker/api/renderers/integrations_dot_renderer_spec.rb +29 -0
  27. data/spec/lib/pact_broker/matrix/deployment_status_summary_spec.rb +20 -2
  28. data/spec/lib/pact_broker/tags/repository_spec.rb +34 -1
  29. data/spec/support/test_data_builder.rb +1 -0
  30. metadata +13 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3e43696e1c9a252d26f05be46f19e7f910cd650
4
- data.tar.gz: bbb46247b66bd65e71050febede804ccd1ef864c
3
+ metadata.gz: d3741742cfc8f29b64fd8bde01c62c9bdf445b9c
4
+ data.tar.gz: 204bd0c2317882a9ce4c50d0cfab2cb9829278ea
5
5
  SHA512:
6
- metadata.gz: 2ff7ce9c2676c8f7331ba593a14eeb8f1533e9317be37b85d8ecb3cc8d2d009286f340894161d1a1419361f03133cf8cf551d6f4f87c13e453cac3c6068df0ea
7
- data.tar.gz: 23dc70cc6b048b29b8a577d41e2fadbaf7bba02d0f82c3f3f5d7c7c7ac5d6a0cd4abbc19578aa70148a6e817d9b1ff8667c5f9614662c75a4f0f4703ff4dfccd
6
+ metadata.gz: 591321838ff5732fb86fd4383ce4a603cd6f7f35c6337a1554343675c2d33d03bb80481eab609eec311d6e4a79f78961aa027cdf51100d7cb6f3b8a8949e255a
7
+ data.tar.gz: aa3ebf059c8d4d0bfb04ffb13c8da4380596c8bbe532daecea1efdcaecff28a1da2546de0567493ce8e06a2799e6899400a90c86214bb493ce89851ca74ff3ae
data/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ <a name="v2.26.1"></a>
2
+ ### v2.26.1 (2018-09-07)
3
+
4
+
5
+ #### Features
6
+
7
+ * allow integrations to be exported in dot format (text/vnd.graphviz) ([ac609081](/../../commit/ac609081))
8
+ * eager load latest version for /pacticipants resource ([9ac2ba9b](/../../commit/9ac2ba9b))
9
+ * eager load pacticipant labels for /pacticipants resource ([01dd8669](/../../commit/01dd8669))
10
+
11
+
12
+ #### Bug Fixes
13
+
14
+ * **matrix**
15
+ * gracefully handle and log when version is unresolved ([82fe19f1](/../../commit/82fe19f1))
16
+
17
+ * gracefully handle attempt to create a duplicate tag ([53bea8b4](/../../commit/53bea8b4))
18
+ * correct :false to false in verification decorator to correctly handle read only property providerName ([4af4ed1c](/../../commit/4af4ed1c))
19
+ * gracefully handle scenario where URL supplied in JSON body is not a String ([b0bb6044](/../../commit/b0bb6044))
20
+
21
+
1
22
  <a name="v2.26.0"></a>
2
23
  ### v2.26.0 (2018-08-23)
3
24
 
@@ -0,0 +1,25 @@
1
+ Sequel.migration do
2
+ up do
3
+ latest_version_orders = from(:versions)
4
+ .select_group(:pacticipant_id)
5
+ .select_append{ max(order).as(latest_version_order) }
6
+
7
+ create_or_replace_view(:latest_version_orders, latest_version_orders)
8
+
9
+ join = {
10
+ Sequel[:versions][:pacticipant_id] => Sequel[:latest_version_orders][:pacticipant_id],
11
+ Sequel[:versions][:order] => Sequel[:latest_version_orders][:latest_version_order]
12
+ }
13
+
14
+ latest_versions = from(:versions)
15
+ .select(Sequel[:versions].*)
16
+ .join(:latest_version_orders, join)
17
+
18
+ create_or_replace_view(:latest_versions, latest_versions)
19
+ end
20
+
21
+ down do
22
+ drop_view(:latest_version_orders)
23
+ drop_view(:latest_versions)
24
+ end
25
+ end
Binary file
@@ -83,6 +83,8 @@ module PactBroker
83
83
 
84
84
  add ['dashboard'], Api::Resources::Dashboard, {resource_name: "dashboard"}
85
85
  add ['test','error'], Api::Resources::ErrorTest, {resource_name: "error_test"}
86
+
87
+ add ['integrations'], Api::Resources::Integrations, {resource_name: "integrations"}
86
88
  add [], Api::Resources::Index, {resource_name: "index"}
87
89
  end
88
90
  end
@@ -25,7 +25,7 @@ module PactBroker
25
25
 
26
26
  def uri
27
27
  URI(url)
28
- rescue URI::InvalidURIError
28
+ rescue URI::InvalidURIError, ArgumentError
29
29
  nil
30
30
  end
31
31
  end
@@ -21,7 +21,7 @@ module PactBroker
21
21
 
22
22
  def valid_url? url
23
23
  URI(url)
24
- rescue URI::InvalidURIError
24
+ rescue URI::InvalidURIError, ArgumentError
25
25
  nil
26
26
  end
27
27
 
@@ -109,8 +109,8 @@ module PactBroker
109
109
  def valid_url?(url)
110
110
  uri = parse_uri(url)
111
111
  uri.scheme && uri.host
112
- rescue URI::InvalidURIError
113
- false
112
+ rescue URI::InvalidURIError, ArgumentError
113
+ nil
114
114
  end
115
115
 
116
116
  def allowed_webhook_method?(http_method)
@@ -5,7 +5,7 @@ module PactBroker
5
5
  module Decorators
6
6
  class VerificationDecorator < BaseDecorator
7
7
 
8
- property :provider_name, as: :providerName, writeable: :false
8
+ property :provider_name, as: :providerName, writeable: false
9
9
  property :provider_version_number, as: :providerApplicationVersion, writeable: false
10
10
  property :success
11
11
  property :execution_date, as: :verificationDate
@@ -0,0 +1,36 @@
1
+ module PactBroker
2
+ module Api
3
+ module Renderers
4
+ class IntegrationsDotRenderer
5
+ def initialize(integrations)
6
+ @integrations = integrations
7
+ end
8
+
9
+ def self.call(integrations)
10
+ new(integrations).call
11
+ end
12
+
13
+ def call
14
+ "digraph { ranksep=3; ratio=auto; overlap=false; node [ shape = plaintext, fontname = Helvetica ];
15
+ #{integrations_graph}
16
+ }
17
+ "
18
+ end
19
+
20
+ private
21
+
22
+ attr_reader :integrations
23
+
24
+ def integrations_graph
25
+ integrations
26
+ .collect{ | integration| " #{escape_name(integration.consumer_name)} -> #{escape_name(integration.provider_name)}" }
27
+ .join("\n")
28
+ end
29
+
30
+ def escape_name(name)
31
+ name.gsub(" ", "_")
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -83,6 +83,11 @@ module PactBroker
83
83
  title: 'Webhooks',
84
84
  templated: false
85
85
  },
86
+ 'pb:integrations' => {
87
+ href: base_url + '/integrations',
88
+ title: 'Integrations',
89
+ templated: false
90
+ },
86
91
  'beta:pending-provider-pacts' =>
87
92
  {
88
93
  href: base_url + '/pacts/provider/{provider}/pending',
@@ -0,0 +1,26 @@
1
+ require 'pact_broker/api/resources/base_resource'
2
+ require 'pact_broker/api/renderers/integrations_dot_renderer'
3
+
4
+ module PactBroker
5
+ module Api
6
+ module Resources
7
+ class Integrations < BaseResource
8
+ def content_types_provided
9
+ [["text/vnd.graphviz", :to_dot]]
10
+ end
11
+
12
+ def allowed_methods
13
+ ["GET", "OPTIONS"]
14
+ end
15
+
16
+ def to_dot
17
+ PactBroker::Api::Renderers::IntegrationsDotRenderer.call(integrations)
18
+ end
19
+
20
+ def integrations
21
+ pact_service.find_latest_pacts
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,7 @@
1
+ # Integrations
2
+
3
+ Allowed methods: `GET`
4
+
5
+ Content types: `text/vnd.graphviz`
6
+
7
+ A list of all the integrations (consumer/provider pairs) stored in the Pact Broker.
@@ -1,11 +1,11 @@
1
1
  require 'pact_broker/db'
2
2
  require 'pact_broker/messages'
3
3
  require 'pact_broker/repositories/helpers'
4
+ require 'pact_broker/versions/latest_version'
5
+ require 'pact_broker/domain/label'
4
6
 
5
7
  module PactBroker
6
-
7
8
  module Domain
8
-
9
9
  class Pacticipant < Sequel::Model
10
10
 
11
11
  include Messages
@@ -15,6 +15,7 @@ module PactBroker
15
15
  one_to_many :versions, :order => :order, :reciprocal => :pacticipant
16
16
  one_to_many :labels, :order => :name, :reciprocal => :pacticipant
17
17
  one_to_many :pacts
18
+ one_to_one :latest_version, :class => "PactBroker::Versions::LatestVersion", primary_key: :id, key: :pacticipant_id
18
19
 
19
20
  dataset_module do
20
21
  include PactBroker::Repositories::Helpers
@@ -1,3 +1,5 @@
1
+ require 'pact_broker/logging'
2
+
1
3
  module PactBroker
2
4
  module Matrix
3
5
  class DeploymentStatusSummary
@@ -82,7 +84,13 @@ module PactBroker
82
84
  end
83
85
 
84
86
  def resolved_version_for(pacticipant_id)
85
- resolved_selectors.find{ | s| s[:pacticipant_id] == pacticipant_id }[:pacticipant_version_number]
87
+ resolved_selector = resolved_selectors.find{ | s| s[:pacticipant_id] == pacticipant_id }
88
+ if resolved_selector
89
+ resolved_selector[:pacticipant_version_number]
90
+ else
91
+ PactBroker.logger.warn "Could not find the resolved version for pacticipant_id #{pacticipant_id} from integrations #{integrations.collect(&:to_s).join(", ")} in resolved selectors #{resolved_selectors.inspect}"
92
+ "unresolved version"
93
+ end
86
94
  end
87
95
  end
88
96
  end
@@ -23,7 +23,7 @@ module PactBroker
23
23
  def find options = {}
24
24
  query = PactBroker::Domain::Pacticipant.select_all_qualified
25
25
  query = query.label(options[:label_name]) if options[:label_name]
26
- query.order_ignore_case(Sequel[:pacticipants][:name]).all
26
+ query.order_ignore_case(Sequel[:pacticipants][:name]).eager(:labels).eager(:latest_version).all
27
27
  end
28
28
 
29
29
  def find_all_pacticipant_versions_in_reverse_order name
@@ -9,7 +9,14 @@ module PactBroker
9
9
  include PactBroker::Repositories::Helpers
10
10
 
11
11
  def create args
12
- Domain::Tag.new(name: args.fetch(:name), version: args.fetch(:version)).save
12
+ params = {
13
+ name: args.fetch(:name),
14
+ version_id: args.fetch(:version).id,
15
+ created_at: Sequel.datetime_class.now,
16
+ updated_at: Sequel.datetime_class.now
17
+ }
18
+ Domain::Tag.dataset.insert_ignore.insert(params)
19
+ Domain::Tag.find(name: args[:name], version_id: args[:version].id)
13
20
  end
14
21
 
15
22
  def find args
@@ -24,7 +31,7 @@ module PactBroker
24
31
  end
25
32
 
26
33
  def delete_by_version_id version_id
27
- Sequel::Model.db[:tags].where(version_id: version_id).delete
34
+ Domain::Tag.where(version_id: version_id).delete
28
35
  end
29
36
 
30
37
  def find_all_tag_names_for_pacticipant pacticipant_name
@@ -1,3 +1,3 @@
1
1
  module PactBroker
2
- VERSION = '2.26.0'
2
+ VERSION = '2.26.1'
3
3
  end
@@ -0,0 +1,11 @@
1
+ require 'pact_broker/domain/version'
2
+
3
+ module PactBroker
4
+ module Versions
5
+ include PactBroker::Repositories::Helpers
6
+
7
+ class LatestVersion < PactBroker::Domain::Version
8
+ set_dataset(:latest_versions)
9
+ end
10
+ end
11
+ end
@@ -60,7 +60,7 @@ module PactBroker
60
60
  created_at: Sequel.datetime_class.now,
61
61
  updated_at: Sequel.datetime_class.now
62
62
  }
63
- id = PactBroker::Domain::Version.db[:versions].insert_ignore.insert(version_params)
63
+ id = PactBroker::Domain::Version.dataset.insert_ignore.insert(version_params)
64
64
  version = PactBroker::Domain::Version.find(number: args[:number], pacticipant_id: args[:pacticipant_id])
65
65
  PactBroker::Domain::OrderVersions.(version)
66
66
  version.refresh # reload with the populated order
@@ -75,7 +75,7 @@ module PactBroker
75
75
  end
76
76
 
77
77
  def delete_by_id version_ids
78
- Sequel::Model.db[:versions].where(id: version_ids).delete
78
+ Domain::Version.where(id: version_ids).delete
79
79
  end
80
80
  end
81
81
  end
@@ -23,7 +23,7 @@ module Rack
23
23
  begin
24
24
  parse(::Rack::Request.new(env).url)
25
25
  true
26
- rescue URI::InvalidURIError
26
+ rescue URI::InvalidURIError, ArgumentError
27
27
  false
28
28
  end
29
29
  end
@@ -0,0 +1,23 @@
1
+ describe "Get integrations dot file" do
2
+ before do
3
+ TestDataBuilder.new
4
+ .create_pact_with_hierarchy("Foo", "1", "Bar")
5
+ end
6
+
7
+ let(:path) { "/integrations" }
8
+ let(:response_body_hash) { JSON.parse(subject.body, symbolize_names: true) }
9
+
10
+ subject { get path, nil, {'HTTP_ACCEPT' => 'text/vnd.graphviz' }; last_response }
11
+
12
+ it "returns a 200 OK" do
13
+ expect(subject.status).to eq 200
14
+ end
15
+
16
+ it "returns a dot file content type" do
17
+ expect(subject.headers['Content-Type']).to eq 'text/vnd.graphviz;charset=utf-8'
18
+ end
19
+
20
+ it "returns dot file content" do
21
+ expect(subject.body).to include "Foo -> Bar"
22
+ end
23
+ end
@@ -0,0 +1,4 @@
1
+ digraph { ranksep=3; ratio=auto; overlap=false; node [ shape = plaintext, fontname = Helvetica ];
2
+ Foo -> Bar
3
+ Wiffle -> Foo_Thing
4
+ }
@@ -64,6 +64,14 @@ module PactBroker
64
64
  its(:errors) { is_expected.to be_empty }
65
65
  end
66
66
 
67
+ context "when the buildURL is not stringable" do
68
+ let(:build_url) { {} }
69
+
70
+ it "has an error" do
71
+ expect(subject.errors[:build_url]).to include(match("URL"))
72
+ end
73
+ end
74
+
67
75
  context "when the providerApplicationVersion is not present" do
68
76
  let(:params) { modify valid_params, without: :providerApplicationVersion }
69
77
  it "has an error" do
@@ -34,7 +34,9 @@ module PactBroker
34
34
  let(:options) { { user_options: { base_url: 'http://example.org' } } }
35
35
 
36
36
 
37
- subject { JSON.parse VerificationDecorator.new(verification).to_json(options), symbolize_names: true }
37
+ let(:json) { VerificationDecorator.new(verification).to_json(options) }
38
+
39
+ subject { JSON.parse json, symbolize_names: true }
38
40
 
39
41
  it "includes the success status" do
40
42
  expect(subject[:success]).to eq true
@@ -0,0 +1,29 @@
1
+ require 'pact_broker/api/renderers/integrations_dot_renderer'
2
+
3
+ module PactBroker
4
+ module Api
5
+ module Renderers
6
+ describe IntegrationsDotRenderer do
7
+
8
+ # TODO work out how to handle apostrophes etc
9
+
10
+ let(:integrations) do
11
+ [
12
+ double('integration', consumer_name: "Foo", provider_name: "Bar"),
13
+ double('integration', consumer_name: "Wiffle", provider_name: "Foo Thing")
14
+ ]
15
+ end
16
+
17
+ let(:expected_content) { load_fixture('expected.gv') }
18
+
19
+ describe "#call" do
20
+ subject { IntegrationsDotRenderer.call(integrations) }
21
+
22
+ it "renders a dot file" do
23
+ expect(subject).to eq expected_content
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -7,7 +7,6 @@ module PactBroker
7
7
  module Matrix
8
8
  describe DeploymentStatusSummary do
9
9
  describe ".call" do
10
-
11
10
  let(:rows) { [row_1, row_2] }
12
11
  let(:row_1) do
13
12
  double(Row,
@@ -52,7 +51,6 @@ module PactBroker
52
51
  ]
53
52
  end
54
53
 
55
-
56
54
  subject { DeploymentStatusSummary.new(rows, resolved_selectors, integrations) }
57
55
 
58
56
  context "when there is a row for all integrations" do
@@ -92,6 +90,26 @@ module PactBroker
92
90
  its(:reasons) { is_expected.to eq ["There is no verified pact between Foo (ddec8101dabf4edf9125a69f9a161f0f294af43c) and Baz (4ee06460f10e8207ad904fa9fa6c4842e462ab59)"] }
93
91
  its(:counts) { is_expected.to eq success: 1, failed: 0, unknown: 1 }
94
92
  end
93
+
94
+ context "when there is something unexpected about the data and the resolved selector cannot be found" do
95
+ let(:rows) { [row_1] }
96
+
97
+ let(:resolved_selectors) do
98
+ [
99
+ {
100
+ pacticipant_id: 3, pacticipant_version_number: "4ee06460f10e8207ad904fa9fa6c4842e462ab59"
101
+ }
102
+ ]
103
+ end
104
+
105
+ its(:deployable?) { is_expected.to be nil }
106
+ its(:reasons) { is_expected.to eq ["There is no verified pact between Foo (unresolved version) and Baz (4ee06460f10e8207ad904fa9fa6c4842e462ab59)"] }
107
+
108
+ it "logs a warning" do
109
+ expect(PactBroker.logger).to receive(:warn).with(/Could not find the resolved version/)
110
+ subject.reasons
111
+ end
112
+ end
95
113
  end
96
114
  end
97
115
  end
@@ -4,9 +4,42 @@ require 'pact_broker/tags/repository'
4
4
  module PactBroker
5
5
  module Tags
6
6
  describe Repository do
7
-
8
7
  let(:td) { TestDataBuilder.new }
9
8
 
9
+ describe ".create" do
10
+ before do
11
+ td.create_pacticipant("foo")
12
+ .create_version("1")
13
+ end
14
+
15
+ let(:params) { { name: "prod", version: td.version } }
16
+
17
+ subject { Repository.new.create(params) }
18
+
19
+ it "returns a tag" do
20
+ expect(subject).to be_a(Domain::Tag)
21
+ end
22
+
23
+ it "sets the properties" do
24
+ expect(subject.name).to eq "prod"
25
+ expect(subject.version.id).to eq td.version.id
26
+ end
27
+
28
+ context "when the tag already exists" do
29
+ before do
30
+ td.create_tag("prod")
31
+ end
32
+
33
+ it "does nothing" do
34
+ expect { subject }.to_not change { Domain::Tag.count }
35
+ end
36
+
37
+ it "returns a tag" do
38
+ expect(subject).to be_a(Domain::Tag)
39
+ end
40
+ end
41
+ end
42
+
10
43
  describe ".find" do
11
44
 
12
45
  let(:pacticipant_name) { "test_pacticipant" }
@@ -35,6 +35,7 @@ class TestDataBuilder
35
35
  attr_reader :provider
36
36
  attr_reader :consumer_version
37
37
  attr_reader :provider_version
38
+ attr_reader :version
38
39
  attr_reader :pact
39
40
  attr_reader :verification
40
41
  attr_reader :webhook
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.26.0
4
+ version: 2.26.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bethany Skurrie
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-08-22 00:00:00.000000000 Z
13
+ date: 2018-09-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -653,6 +653,7 @@ files:
653
653
  - db/migrations/20180729_create_latest_verification_ids_for_provider_versions.rb
654
654
  - db/migrations/20180730_create_latest_verifications_for_provider_versions.rb
655
655
  - db/migrations/20180731_update_head_matrix.rb
656
+ - db/migrations/20180828_create_latest_versions.rb
656
657
  - db/migrations/migration_helper.rb
657
658
  - db/pact_broker_database.sqlite3
658
659
  - db/test/backwards_compatibility/.rspec
@@ -753,6 +754,7 @@ files:
753
754
  - lib/pact_broker/api/decorators/webhooks_decorator.rb
754
755
  - lib/pact_broker/api/pact_broker_urls.rb
755
756
  - lib/pact_broker/api/renderers/html_pact_renderer.rb
757
+ - lib/pact_broker/api/renderers/integrations_dot_renderer.rb
756
758
  - lib/pact_broker/api/resources.rb
757
759
  - lib/pact_broker/api/resources/all_webhooks.rb
758
760
  - lib/pact_broker/api/resources/authentication.rb
@@ -763,6 +765,7 @@ files:
763
765
  - lib/pact_broker/api/resources/error_test.rb
764
766
  - lib/pact_broker/api/resources/group.rb
765
767
  - lib/pact_broker/api/resources/index.rb
768
+ - lib/pact_broker/api/resources/integrations.rb
766
769
  - lib/pact_broker/api/resources/label.rb
767
770
  - lib/pact_broker/api/resources/latest_pact.rb
768
771
  - lib/pact_broker/api/resources/latest_pacts.rb
@@ -835,6 +838,7 @@ files:
835
838
  - lib/pact_broker/doc/views/index/provider-pacts.markdown
836
839
  - lib/pact_broker/doc/views/index/publish-pact.markdown
837
840
  - lib/pact_broker/doc/views/index/self.markdown
841
+ - lib/pact_broker/doc/views/integrations.markdown
838
842
  - lib/pact_broker/doc/views/layouts/main.haml
839
843
  - lib/pact_broker/doc/views/not_found.markdown
840
844
  - lib/pact_broker/doc/views/pact-versions.markdown
@@ -950,6 +954,7 @@ files:
950
954
  - lib/pact_broker/verifications/verification_status.rb
951
955
  - lib/pact_broker/version.rb
952
956
  - lib/pact_broker/versions/abbreviate_number.rb
957
+ - lib/pact_broker/versions/latest_version.rb
953
958
  - lib/pact_broker/versions/parse_semantic_version.rb
954
959
  - lib/pact_broker/versions/repository.rb
955
960
  - lib/pact_broker/versions/service.rb
@@ -1049,6 +1054,7 @@ files:
1049
1054
  - spec/features/execute_webhook_spec.rb
1050
1055
  - spec/features/get_dashboard_spec.rb
1051
1056
  - spec/features/get_diff_spec.rb
1057
+ - spec/features/get_integrations_dot_file_spec.rb
1052
1058
  - spec/features/get_label_spec.rb
1053
1059
  - spec/features/get_latest_pact_badge_spec.rb
1054
1060
  - spec/features/get_latest_tagged_pact_badge_spec.rb
@@ -1091,6 +1097,7 @@ files:
1091
1097
  - spec/fixtures/certificates/self-signed.badssl.com.pem
1092
1098
  - spec/fixtures/consumer-provider.json
1093
1099
  - spec/fixtures/dashboard.json
1100
+ - spec/fixtures/expected.gv
1094
1101
  - spec/fixtures/foo-bar.json
1095
1102
  - spec/fixtures/renderer_pact.json
1096
1103
  - spec/fixtures/update_pacticipant.json
@@ -1138,6 +1145,7 @@ files:
1138
1145
  - spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb
1139
1146
  - spec/lib/pact_broker/api/pact_broker_urls_spec.rb
1140
1147
  - spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb
1148
+ - spec/lib/pact_broker/api/renderers/integrations_dot_renderer_spec.rb
1141
1149
  - spec/lib/pact_broker/api/resources/all_webhooks_spec.rb
1142
1150
  - spec/lib/pact_broker/api/resources/badge_spec.rb
1143
1151
  - spec/lib/pact_broker/api/resources/base_resource_spec.rb
@@ -1359,6 +1367,7 @@ test_files:
1359
1367
  - spec/features/execute_webhook_spec.rb
1360
1368
  - spec/features/get_dashboard_spec.rb
1361
1369
  - spec/features/get_diff_spec.rb
1370
+ - spec/features/get_integrations_dot_file_spec.rb
1362
1371
  - spec/features/get_label_spec.rb
1363
1372
  - spec/features/get_latest_pact_badge_spec.rb
1364
1373
  - spec/features/get_latest_tagged_pact_badge_spec.rb
@@ -1401,6 +1410,7 @@ test_files:
1401
1410
  - spec/fixtures/certificates/self-signed.badssl.com.pem
1402
1411
  - spec/fixtures/consumer-provider.json
1403
1412
  - spec/fixtures/dashboard.json
1413
+ - spec/fixtures/expected.gv
1404
1414
  - spec/fixtures/foo-bar.json
1405
1415
  - spec/fixtures/renderer_pact.json
1406
1416
  - spec/fixtures/update_pacticipant.json
@@ -1448,6 +1458,7 @@ test_files:
1448
1458
  - spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb
1449
1459
  - spec/lib/pact_broker/api/pact_broker_urls_spec.rb
1450
1460
  - spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb
1461
+ - spec/lib/pact_broker/api/renderers/integrations_dot_renderer_spec.rb
1451
1462
  - spec/lib/pact_broker/api/resources/all_webhooks_spec.rb
1452
1463
  - spec/lib/pact_broker/api/resources/badge_spec.rb
1453
1464
  - spec/lib/pact_broker/api/resources/base_resource_spec.rb