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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/db/migrations/20180828_create_latest_versions.rb +25 -0
- data/db/pact_broker_database.sqlite3 +0 -0
- data/lib/pact_broker/api.rb +2 -0
- data/lib/pact_broker/api/contracts/request_validations.rb +1 -1
- data/lib/pact_broker/api/contracts/verification_contract.rb +1 -1
- data/lib/pact_broker/api/contracts/webhook_contract.rb +2 -2
- data/lib/pact_broker/api/decorators/verification_decorator.rb +1 -1
- data/lib/pact_broker/api/renderers/integrations_dot_renderer.rb +36 -0
- data/lib/pact_broker/api/resources/index.rb +5 -0
- data/lib/pact_broker/api/resources/integrations.rb +26 -0
- data/lib/pact_broker/doc/views/integrations.markdown +7 -0
- data/lib/pact_broker/domain/pacticipant.rb +3 -2
- data/lib/pact_broker/matrix/deployment_status_summary.rb +9 -1
- data/lib/pact_broker/pacticipants/repository.rb +1 -1
- data/lib/pact_broker/tags/repository.rb +9 -2
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/versions/latest_version.rb +11 -0
- data/lib/pact_broker/versions/repository.rb +2 -2
- data/lib/rack/pact_broker/invalid_uri_protection.rb +1 -1
- data/spec/features/get_integrations_dot_file_spec.rb +23 -0
- data/spec/fixtures/expected.gv +4 -0
- data/spec/lib/pact_broker/api/contracts/verification_contract_spec.rb +8 -0
- data/spec/lib/pact_broker/api/decorators/verification_decorator_spec.rb +3 -1
- data/spec/lib/pact_broker/api/renderers/integrations_dot_renderer_spec.rb +29 -0
- data/spec/lib/pact_broker/matrix/deployment_status_summary_spec.rb +20 -2
- data/spec/lib/pact_broker/tags/repository_spec.rb +34 -1
- data/spec/support/test_data_builder.rb +1 -0
- metadata +13 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3741742cfc8f29b64fd8bde01c62c9bdf445b9c
|
4
|
+
data.tar.gz: 204bd0c2317882a9ce4c50d0cfab2cb9829278ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/pact_broker/api.rb
CHANGED
@@ -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
|
@@ -5,7 +5,7 @@ module PactBroker
|
|
5
5
|
module Decorators
|
6
6
|
class VerificationDecorator < BaseDecorator
|
7
7
|
|
8
|
-
property :provider_name, as: :providerName, writeable:
|
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
|
@@ -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 }
|
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
|
-
|
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
|
-
|
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
|
data/lib/pact_broker/version.rb
CHANGED
@@ -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.
|
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
|
-
|
78
|
+
Domain::Version.where(id: version_ids).delete
|
79
79
|
end
|
80
80
|
end
|
81
81
|
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
|
@@ -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
|
-
|
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" }
|
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.
|
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-
|
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
|