pact_broker 2.26.0 → 2.26.1

Sign up to get free protection for your applications and to get access to all the features.
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