pact_broker 1.7.0 → 1.8.0
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 +6 -0
- data/README.md +4 -0
- data/db/migrations/22_create_latest_tagged_pacts_view.rb +20 -0
- data/example/basic_auth/Gemfile +5 -0
- data/example/basic_auth/Procfile +1 -0
- data/example/basic_auth/README.md +43 -0
- data/example/basic_auth/config.ru +19 -0
- data/lib/pact_broker/api.rb +3 -0
- data/lib/pact_broker/api/decorators/provider_pacts_decorator.rb +41 -0
- data/lib/pact_broker/api/resources/index.rb +6 -0
- data/lib/pact_broker/api/resources/latest_provider_pacts.rb +34 -0
- data/lib/pact_broker/pacts/latest_tagged_pacts.rb +11 -0
- data/lib/pact_broker/pacts/repository.rb +10 -1
- data/lib/pact_broker/pacts/service.rb +7 -3
- data/lib/pact_broker/version.rb +1 -1
- data/pact_broker.gemspec +1 -1
- data/spec/features/get_provider_pacts.rb +72 -0
- data/spec/lib/pact_broker/pacts/repository_spec.rb +70 -2
- data/spec/lib/pact_broker/pacts/service_spec.rb +1 -1
- metadata +68 -58
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f8743214a344901e8cc75cc159a44113ec371bcc
|
|
4
|
+
data.tar.gz: e4896ed8041a01d95c50c73366532c56beea87f0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1af8a1a03263bc9e06adb104945576f023edaff95063f9b0885323d12eff57ccc12aa548c4576a8e0925e02e91070f4380ec69d4e2624f2db1750cba31abe770
|
|
7
|
+
data.tar.gz: 594b39972c370fd2a8bbf60051f6ba825f3fef1e31f3dfbac096dfb6484e81ac4ece3c123f81b796f7849c623af28f402dd43f9321ceb825f1e2c976312d0e76
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@ Do this to generate your change history
|
|
|
2
2
|
|
|
3
3
|
$ git log --pretty=format:' * %h - %s (%an, %ad)' vX.Y.Z..HEAD
|
|
4
4
|
|
|
5
|
+
#### 1.8.0 (2015-05-28)
|
|
6
|
+
|
|
7
|
+
* 6c40e9c - Added ability to specify a tag when retrieving pacts for a given provider (Beth Skurrie, Thu May 28 09:03:46 2015 +1000)
|
|
8
|
+
* dda9f1d - Added endpoint to retrieve latest pacts by provider (Beth Skurrie, Sun May 10 21:28:33 2015 +1000)
|
|
9
|
+
* 21e676a - Pact broker example for heroku with basic auth (BrunoChauvet, Sat Apr 25 13:04:54 2015 +1000)
|
|
10
|
+
|
|
5
11
|
#### 1.7.0 (2015-03-20)
|
|
6
12
|
|
|
7
13
|
* a26402c - Allow configuration of version parsing. (Beth Skurrie, Tue Apr 14 09:39:05 2015 +1000)
|
data/README.md
CHANGED
|
@@ -18,6 +18,7 @@ Features:
|
|
|
18
18
|
* Dynamically generated network diagrams.
|
|
19
19
|
* Enables a pact version to be tagged (ie. "prod") so a provider can verify itself against a fixed version of a pact to ensure backwards compatibility.
|
|
20
20
|
* Webhooks to trigger a provider build when a consumer publishes a change to a pact.
|
|
21
|
+
* [Docker Pact Broker][docker]
|
|
21
22
|
|
|
22
23
|
Travis CI Status: [](https://travis-ci.org/bethesque/pact_broker)
|
|
23
24
|
|
|
@@ -88,6 +89,8 @@ Use the HAL browser to view documentation as you browse.
|
|
|
88
89
|
|
|
89
90
|
### For reals
|
|
90
91
|
|
|
92
|
+
You can use the [Pact Broker Docker container][docker] or...
|
|
93
|
+
|
|
91
94
|
* Create a database using a product that is supported by the Sequel gem (listed on this page http://sequel.jeremyevans.net/rdoc/files/README_rdoc.html). The migrations have been tested on MySQL and PostgreSQL - your milage will vary on other databases.
|
|
92
95
|
* __Note:__ It is recommended to use __PostgreSQL__ as it will support JSON search features that are planned in a future release, however MySQL the other well supported database.
|
|
93
96
|
* Install ruby 1.9.3 or later
|
|
@@ -101,3 +104,4 @@ Use the HAL browser to view documentation as you browse.
|
|
|
101
104
|
[pact]: https://github.com/realestate-com-au/pact
|
|
102
105
|
[nerf]: https://github.com/bethesque/pact_broker/wiki/pact-broker-ci-nerf-gun
|
|
103
106
|
[different-teams]: https://github.com/realestate-com-au/pact/wiki/Using-pact-where-the-consumer-team-is-different-from-the-provider-team
|
|
107
|
+
[docker]: https://registry.hub.docker.com/u/dius/pact_broker/
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Sequel.migration do
|
|
2
|
+
change do
|
|
3
|
+
create_or_replace_view(:latest_tagged_pact_consumer_version_orders,
|
|
4
|
+
"select provider_id, consumer_id, t.name as tag_name, max(consumer_version_order) as latest_consumer_version_order
|
|
5
|
+
from all_pacts ap
|
|
6
|
+
inner join tags t
|
|
7
|
+
on t.version_id = ap.consumer_version_id
|
|
8
|
+
group by provider_id, consumer_id, t.name"
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
create_or_replace_view(:latest_tagged_pacts,
|
|
12
|
+
"select ap.*, lp.tag_name
|
|
13
|
+
from all_pacts ap
|
|
14
|
+
inner join latest_tagged_pact_consumer_version_orders lp
|
|
15
|
+
on ap.consumer_id = lp.consumer_id
|
|
16
|
+
and ap.provider_id = lp.provider_id
|
|
17
|
+
and ap.consumer_version_order = latest_consumer_version_order"
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
web: bundle exec thin start -p $PORT
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Example of Pact Broker configuration on heroku with basic authentication
|
|
2
|
+
|
|
3
|
+
## Create your Pact Broker project
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
$ mkdir my-pact-broker
|
|
7
|
+
$ cd my-pact-broker
|
|
8
|
+
$ git init
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Then copy the files `Gemfile`, `Procfile` and `config.ru` into your project and run bundle
|
|
12
|
+
```
|
|
13
|
+
$ bundle
|
|
14
|
+
$ gid add .
|
|
15
|
+
$ git commit -m "Initial commit"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
It's now time to deploy to heroku! Assuming you already have an account, you need to create a new application with a postgres add-on:
|
|
19
|
+
```
|
|
20
|
+
$ gem install heroku
|
|
21
|
+
$ heroku create
|
|
22
|
+
$ heroku addons:add heroku-postgresql
|
|
23
|
+
$ heroku config:set PACT_BROKER_USERNAME=admin
|
|
24
|
+
$ heroku config:set PACT_BROKER_PASSWORD=changeme
|
|
25
|
+
$ git push heroku master
|
|
26
|
+
```
|
|
27
|
+
Your Pact Broker instance is now available!
|
|
28
|
+
|
|
29
|
+
## Publish consumer pacts - consumer side
|
|
30
|
+
You will need to set these environment variables with your basic auth credentials
|
|
31
|
+
```
|
|
32
|
+
export PACT_BROKER_USERNAME=admin
|
|
33
|
+
export PACT_BROKER_PASSWORD=changeme
|
|
34
|
+
rake pact:publish
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Verify pacts - provider side
|
|
38
|
+
In your pact_helper.rb file, you need to specify the basic auth credentials in the pact uris
|
|
39
|
+
```ruby
|
|
40
|
+
pact_uri URI.encode("http://#{ENV['PACT_BROKER_USERNAME']}:#{ENV['PACT_BROKER_PASSWORD']}@my-pact-broker.herokuapp.com/pacts/provider_pact_endpoint")
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Enjoy!
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
require 'logger'
|
|
3
|
+
require 'sequel'
|
|
4
|
+
require 'pact_broker'
|
|
5
|
+
require 'pg'
|
|
6
|
+
|
|
7
|
+
use Rack::Auth::Basic, "Restricted Area" do |username, password|
|
|
8
|
+
username == ENV['PACT_BROKER_USERNAME'] and password == ENV['PACT_BROKER_PASSWORD']
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
app = PactBroker::App.new do | config |
|
|
12
|
+
# change these from their default values if desired
|
|
13
|
+
# config.log_dir = "./log"
|
|
14
|
+
# config.auto_migrate_db = true
|
|
15
|
+
# config.use_hal_browser = true
|
|
16
|
+
config.database_connection = Sequel.connect(ENV['DATABASE_URL'], adapter: "postgres", encoding: 'utf8')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
run app
|
data/lib/pact_broker/api.rb
CHANGED
|
@@ -15,6 +15,7 @@ require 'pact_broker/api/resources/webhook_execution'
|
|
|
15
15
|
require 'pact_broker/api/resources/version'
|
|
16
16
|
require 'pact_broker/api/resources/pact_content_diff'
|
|
17
17
|
require 'pact_broker/api/resources/previous_distinct_pact_version'
|
|
18
|
+
require 'pact_broker/api/resources/latest_provider_pacts'
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
require 'webmachine/adapters/rack'
|
|
@@ -34,6 +35,8 @@ module PactBroker
|
|
|
34
35
|
add ['pacts', 'provider', :provider_name, 'consumer', :consumer_name, 'versions', :consumer_version_number], Api::Resources::Pact
|
|
35
36
|
add ['pacts', 'provider', :provider_name, 'consumer', :consumer_name, 'version', :consumer_version_number, 'previous-distinct'], Api::Resources::PreviousDistinctPactVersion
|
|
36
37
|
add ['pacts', 'provider', :provider_name, 'consumer', :consumer_name, 'version', :consumer_version_number, 'diff', 'previous-distinct'], Api::Resources::PactContentDiff
|
|
38
|
+
add ['pacts', 'provider', :provider_name, 'latest'], Api::Resources::LatestProviderPacts
|
|
39
|
+
add ['pacts', 'provider', :provider_name, 'latest', :tag], Api::Resources::LatestProviderPacts
|
|
37
40
|
|
|
38
41
|
add ['pact', 'provider', :provider_name, 'consumer', :consumer_name, 'version', :consumer_version_number], Api::Resources::Pact
|
|
39
42
|
add ['pact', 'provider', :provider_name, 'consumer', :consumer_name, 'latest'], Api::Resources::LatestPact
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require_relative 'base_decorator'
|
|
2
|
+
require_relative 'pact_version_decorator'
|
|
3
|
+
|
|
4
|
+
module PactBroker
|
|
5
|
+
|
|
6
|
+
module Api
|
|
7
|
+
|
|
8
|
+
module Decorators
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ProviderPactsDecorator < BaseDecorator
|
|
12
|
+
|
|
13
|
+
link :self do | context |
|
|
14
|
+
suffix = context[:tag] ? " with tag '#{context[:tag]}'" : ""
|
|
15
|
+
{
|
|
16
|
+
href: context[:resource_url],
|
|
17
|
+
title: "Latest pact versions for the provider #{context[:provider_name]}#{suffix}"
|
|
18
|
+
}
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
link :provider do | context |
|
|
22
|
+
{
|
|
23
|
+
href: pacticipant_url(context[:base_url], OpenStruct.new(name: context[:provider_name])),
|
|
24
|
+
title: context[:provider_name]
|
|
25
|
+
}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
links :'pacts' do | context |
|
|
29
|
+
represented.collect do | pact |
|
|
30
|
+
{
|
|
31
|
+
:href => pact_url(context[:base_url], pact),
|
|
32
|
+
:title => pact.name,
|
|
33
|
+
:name => pact.consumer.name
|
|
34
|
+
}
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -36,6 +36,12 @@ module PactBroker
|
|
|
36
36
|
title: 'Pacticipants',
|
|
37
37
|
templated: false
|
|
38
38
|
},
|
|
39
|
+
'pb:latest-provider-pacts' =>
|
|
40
|
+
{
|
|
41
|
+
href: base_url + '/pacts/provider/{provider}/latest',
|
|
42
|
+
title: 'Latest pacts by provider',
|
|
43
|
+
templated: true
|
|
44
|
+
},
|
|
39
45
|
'pb:webhooks' =>
|
|
40
46
|
{
|
|
41
47
|
href: base_url + '/webhooks',
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'pact_broker/api/resources/base_resource'
|
|
2
|
+
require 'pact_broker/configuration'
|
|
3
|
+
require 'pact_broker/api/decorators/provider_pacts_decorator'
|
|
4
|
+
|
|
5
|
+
module PactBroker
|
|
6
|
+
module Api
|
|
7
|
+
module Resources
|
|
8
|
+
|
|
9
|
+
class LatestProviderPacts < BaseResource
|
|
10
|
+
|
|
11
|
+
def content_types_provided
|
|
12
|
+
[["application/hal+json", :to_json]]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def allowed_methods
|
|
16
|
+
["GET"]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def resource_exists?
|
|
20
|
+
pacticipant_service.find_pacticipant_by_name(provider_name)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def to_json
|
|
24
|
+
PactBroker::Api::Decorators::ProviderPactsDecorator.new(pacts).to_json(decorator_context(identifier_from_path))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def pacts
|
|
28
|
+
pact_service.find_latest_pact_versions_for_provider provider_name, tag: identifier_from_path[:tag]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -5,6 +5,7 @@ require 'pact_broker/logging'
|
|
|
5
5
|
require 'pact_broker/pacts/database_model'
|
|
6
6
|
require 'pact_broker/pacts/all_pacts'
|
|
7
7
|
require 'pact_broker/pacts/latest_pacts'
|
|
8
|
+
require 'pact_broker/pacts/latest_tagged_pacts'
|
|
8
9
|
require 'pact/shared/json_differ'
|
|
9
10
|
|
|
10
11
|
module PactBroker
|
|
@@ -37,7 +38,7 @@ module PactBroker
|
|
|
37
38
|
DatabaseModel.where(id: id).delete
|
|
38
39
|
end
|
|
39
40
|
|
|
40
|
-
def
|
|
41
|
+
def find_all_pact_versions_between consumer_name, options
|
|
41
42
|
AllPacts
|
|
42
43
|
.eager(:tags)
|
|
43
44
|
.consumer(consumer_name)
|
|
@@ -46,6 +47,14 @@ module PactBroker
|
|
|
46
47
|
.collect(&:to_domain)
|
|
47
48
|
end
|
|
48
49
|
|
|
50
|
+
def find_latest_pact_versions_for_provider provider_name, tag = nil
|
|
51
|
+
if tag
|
|
52
|
+
LatestTaggedPacts.provider(provider_name).where(tag_name: tag).collect(&:to_domain)
|
|
53
|
+
else
|
|
54
|
+
LatestPacts.provider(provider_name).collect(&:to_domain)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
49
58
|
def find_by_version_and_provider version_id, provider_id
|
|
50
59
|
AllPacts
|
|
51
60
|
.eager(:tags)
|
|
@@ -39,8 +39,12 @@ module PactBroker
|
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
def
|
|
43
|
-
pact_repository.
|
|
42
|
+
def find_all_pact_versions_between consumer, options
|
|
43
|
+
pact_repository.find_all_pact_versions_between consumer, options
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def find_latest_pact_versions_for_provider provider_name, options = {}
|
|
47
|
+
pact_repository.find_latest_pact_versions_for_provider provider_name, options[:tag]
|
|
44
48
|
end
|
|
45
49
|
|
|
46
50
|
def find_previous_distinct_pact_version params
|
|
@@ -51,7 +55,7 @@ module PactBroker
|
|
|
51
55
|
|
|
52
56
|
def find_distinct_pacts_between consumer, options
|
|
53
57
|
# Assumes pacts are sorted from newest to oldest
|
|
54
|
-
all = pact_repository.
|
|
58
|
+
all = pact_repository.find_all_pact_versions_between consumer, options
|
|
55
59
|
distinct = []
|
|
56
60
|
(0...all.size).each do | i |
|
|
57
61
|
if i == all.size - 1
|
data/lib/pact_broker/version.rb
CHANGED
data/pact_broker.gemspec
CHANGED
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |gem|
|
|
|
30
30
|
gem.add_runtime_dependency 'rack'
|
|
31
31
|
gem.add_runtime_dependency 'redcarpet', '~>3.1'
|
|
32
32
|
gem.add_runtime_dependency 'pact', '~>1.4'
|
|
33
|
-
gem.add_runtime_dependency 'pact-support', '~>0.
|
|
33
|
+
gem.add_runtime_dependency 'pact-support', '~>0.4', '>=0.4.2'
|
|
34
34
|
gem.add_runtime_dependency 'padrino-core', '~>0.12.4'
|
|
35
35
|
gem.add_runtime_dependency 'haml'
|
|
36
36
|
gem.add_runtime_dependency 'trailblazer', '~>0.1.0'
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require 'spec/support/provider_state_builder'
|
|
2
|
+
|
|
3
|
+
describe "Get provider pacts" do
|
|
4
|
+
|
|
5
|
+
let(:path) { "/pacts/provider/Provider/latest" }
|
|
6
|
+
let(:last_response_body) { JSON.parse(subject.body, symbolize_names: true) }
|
|
7
|
+
|
|
8
|
+
subject { get path; last_response }
|
|
9
|
+
|
|
10
|
+
context "when the provider exists" do
|
|
11
|
+
|
|
12
|
+
before do
|
|
13
|
+
ProviderStateBuilder.new
|
|
14
|
+
.create_provider("Provider")
|
|
15
|
+
.create_consumer("Consumer")
|
|
16
|
+
.create_consumer_version("1.0.0")
|
|
17
|
+
.create_consumer_version_tag("prod")
|
|
18
|
+
.create_pact
|
|
19
|
+
.create_consumer_version("1.2.3")
|
|
20
|
+
.create_pact
|
|
21
|
+
.create_consumer("Consumer 2")
|
|
22
|
+
.create_consumer_version("4.5.6")
|
|
23
|
+
.create_pact
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context "with no tag specified" do
|
|
27
|
+
|
|
28
|
+
it "returns a 200 HAL JSON response" do
|
|
29
|
+
expect(subject).to be_a_hal_json_success_response
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "returns a list of links to the pacts" do
|
|
33
|
+
expect(last_response_body[:_links][:pacts].size).to eq 2
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "with a tag specified" do
|
|
38
|
+
|
|
39
|
+
let(:path) { "/pacts/provider/Provider/latest/prod" }
|
|
40
|
+
|
|
41
|
+
it "returns a 200 HAL JSON response" do
|
|
42
|
+
expect(subject).to be_a_hal_json_success_response
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "returns a list of links to the pacts" do
|
|
46
|
+
expect(last_response_body[:_links][:pacts].size).to eq 1
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "with a tag with no pacts" do
|
|
51
|
+
|
|
52
|
+
let(:path) { "/pacts/provider/Provider/latest/foo" }
|
|
53
|
+
|
|
54
|
+
it "returns a 200 HAL JSON response" do
|
|
55
|
+
expect(subject).to be_a_hal_json_success_response
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "returns a list of links to the pacts" do
|
|
59
|
+
expect(last_response_body[:_links][:pacts].size).to eq 0
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context "when the provider does not exist" do
|
|
66
|
+
|
|
67
|
+
it "returns a 404 response" do
|
|
68
|
+
expect(subject).to be_a_404_response
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -158,7 +158,7 @@ module PactBroker
|
|
|
158
158
|
|
|
159
159
|
end
|
|
160
160
|
|
|
161
|
-
describe "#
|
|
161
|
+
describe "#find_all_pact_versions_between" do
|
|
162
162
|
|
|
163
163
|
before do
|
|
164
164
|
ProviderStateBuilder.new
|
|
@@ -174,7 +174,7 @@ module PactBroker
|
|
|
174
174
|
.create_pact
|
|
175
175
|
end
|
|
176
176
|
|
|
177
|
-
subject { Repository.new.
|
|
177
|
+
subject { Repository.new.find_all_pact_versions_between consumer_name, :and => provider_name }
|
|
178
178
|
|
|
179
179
|
it "returns the pacts between the specified consumer and provider" do
|
|
180
180
|
expect(subject.size).to eq 2
|
|
@@ -187,6 +187,74 @@ module PactBroker
|
|
|
187
187
|
|
|
188
188
|
end
|
|
189
189
|
|
|
190
|
+
describe "#find_latest_pact_versions_for_provider" do
|
|
191
|
+
|
|
192
|
+
context "with no tag specified" do
|
|
193
|
+
before do
|
|
194
|
+
ProviderStateBuilder.new
|
|
195
|
+
.create_consumer(consumer_name)
|
|
196
|
+
.create_consumer_version("1.0.0")
|
|
197
|
+
.create_provider(provider_name)
|
|
198
|
+
.create_pact
|
|
199
|
+
.create_consumer_version("1.2.3")
|
|
200
|
+
.create_pact
|
|
201
|
+
.create_consumer("another consumer")
|
|
202
|
+
.create_consumer_version("4.0.0")
|
|
203
|
+
.create_pact
|
|
204
|
+
.create_consumer_version("4.5.6")
|
|
205
|
+
.create_pact
|
|
206
|
+
.create_provider("not the provider")
|
|
207
|
+
.create_pact
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
subject { Repository.new.find_latest_pact_versions_for_provider provider_name }
|
|
211
|
+
|
|
212
|
+
it "returns the pacts between the specified consumer and provider" do
|
|
213
|
+
expect(subject.size).to eq 2
|
|
214
|
+
expect(subject.first.consumer.name).to eq consumer_name
|
|
215
|
+
expect(subject.first.provider.name).to eq provider_name
|
|
216
|
+
expect(subject.first.consumer_version.number).to eq "1.2.3"
|
|
217
|
+
expect(subject.first.json_content).to be nil
|
|
218
|
+
expect(subject.last.consumer.name).to eq "another consumer"
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
context "with a tag specified" do
|
|
223
|
+
before do
|
|
224
|
+
ProviderStateBuilder.new
|
|
225
|
+
.create_consumer(consumer_name)
|
|
226
|
+
.create_consumer_version("1.2.3")
|
|
227
|
+
.create_consumer_version_tag("prod")
|
|
228
|
+
.create_provider(provider_name)
|
|
229
|
+
.create_pact
|
|
230
|
+
.create_consumer_version("2.0.0")
|
|
231
|
+
.create_pact
|
|
232
|
+
.create_consumer("another consumer")
|
|
233
|
+
.create_consumer_version("4.5.6")
|
|
234
|
+
.create_pact
|
|
235
|
+
.create_consumer_version("5.0.0")
|
|
236
|
+
.create_consumer_version_tag("prod")
|
|
237
|
+
.create_consumer_version_tag("test")
|
|
238
|
+
.create_pact
|
|
239
|
+
.create_provider("not the provider")
|
|
240
|
+
.create_pact
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
subject { Repository.new.find_latest_pact_versions_for_provider provider_name, "prod" }
|
|
244
|
+
|
|
245
|
+
it "returns the pacts between the specified consumer and provider with the given tag" do
|
|
246
|
+
expect(subject.size).to eq 2
|
|
247
|
+
expect(subject.first.provider.name).to eq provider_name
|
|
248
|
+
expect(subject.first.consumer.name).to eq consumer_name
|
|
249
|
+
expect(subject.first.consumer_version.number).to eq "1.2.3"
|
|
250
|
+
expect(subject.first.json_content).to be nil
|
|
251
|
+
expect(subject.last.consumer.name).to eq "another consumer"
|
|
252
|
+
expect(subject.last.consumer_version.number).to eq "5.0.0"
|
|
253
|
+
end
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
end
|
|
257
|
+
|
|
190
258
|
describe "find_pact" do
|
|
191
259
|
before do
|
|
192
260
|
ProviderStateBuilder.new
|
|
@@ -15,7 +15,7 @@ module PactBroker
|
|
|
15
15
|
let(:all_pacts) { [pact_4, pact_3, pact_2, pact_1]}
|
|
16
16
|
|
|
17
17
|
before do
|
|
18
|
-
allow_any_instance_of(Pacts::Repository).to receive(:
|
|
18
|
+
allow_any_instance_of(Pacts::Repository).to receive(:find_all_pact_versions_between).and_return(all_pacts)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
subject { Service.find_distinct_pacts_between 'consumer', :and => 'provider' }
|
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.
|
|
4
|
+
version: 1.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Bethany Skurrie
|
|
@@ -10,76 +10,76 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2015-
|
|
13
|
+
date: 2015-05-28 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: 1.0.0.beta2
|
|
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: 1.0.0.beta2
|
|
57
57
|
- !ruby/object:Gem::Dependency
|
|
58
58
|
name: reform
|
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
|
60
60
|
requirements:
|
|
61
|
-
- -
|
|
61
|
+
- - ~>
|
|
62
62
|
- !ruby/object:Gem::Version
|
|
63
63
|
version: '1.0'
|
|
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
70
|
version: '1.0'
|
|
71
71
|
- !ruby/object:Gem::Dependency
|
|
72
72
|
name: sequel
|
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
|
74
74
|
requirements:
|
|
75
|
-
- -
|
|
75
|
+
- - ~>
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
77
|
version: '4.12'
|
|
78
78
|
type: :runtime
|
|
79
79
|
prerelease: false
|
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
|
81
81
|
requirements:
|
|
82
|
-
- -
|
|
82
|
+
- - ~>
|
|
83
83
|
- !ruby/object:Gem::Version
|
|
84
84
|
version: '4.12'
|
|
85
85
|
- !ruby/object:Gem::Dependency
|
|
@@ -100,244 +100,244 @@ dependencies:
|
|
|
100
100
|
name: versionomy
|
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
|
102
102
|
requirements:
|
|
103
|
-
- -
|
|
103
|
+
- - ~>
|
|
104
104
|
- !ruby/object:Gem::Version
|
|
105
105
|
version: '0.4'
|
|
106
106
|
type: :runtime
|
|
107
107
|
prerelease: false
|
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
|
109
109
|
requirements:
|
|
110
|
-
- -
|
|
110
|
+
- - ~>
|
|
111
111
|
- !ruby/object:Gem::Version
|
|
112
112
|
version: '0.4'
|
|
113
113
|
- !ruby/object:Gem::Dependency
|
|
114
114
|
name: rack
|
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
|
116
116
|
requirements:
|
|
117
|
-
- -
|
|
117
|
+
- - '>='
|
|
118
118
|
- !ruby/object:Gem::Version
|
|
119
119
|
version: '0'
|
|
120
120
|
type: :runtime
|
|
121
121
|
prerelease: false
|
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
|
123
123
|
requirements:
|
|
124
|
-
- -
|
|
124
|
+
- - '>='
|
|
125
125
|
- !ruby/object:Gem::Version
|
|
126
126
|
version: '0'
|
|
127
127
|
- !ruby/object:Gem::Dependency
|
|
128
128
|
name: redcarpet
|
|
129
129
|
requirement: !ruby/object:Gem::Requirement
|
|
130
130
|
requirements:
|
|
131
|
-
- -
|
|
131
|
+
- - ~>
|
|
132
132
|
- !ruby/object:Gem::Version
|
|
133
133
|
version: '3.1'
|
|
134
134
|
type: :runtime
|
|
135
135
|
prerelease: false
|
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
|
137
137
|
requirements:
|
|
138
|
-
- -
|
|
138
|
+
- - ~>
|
|
139
139
|
- !ruby/object:Gem::Version
|
|
140
140
|
version: '3.1'
|
|
141
141
|
- !ruby/object:Gem::Dependency
|
|
142
142
|
name: pact
|
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
|
144
144
|
requirements:
|
|
145
|
-
- -
|
|
145
|
+
- - ~>
|
|
146
146
|
- !ruby/object:Gem::Version
|
|
147
147
|
version: '1.4'
|
|
148
148
|
type: :runtime
|
|
149
149
|
prerelease: false
|
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
|
151
151
|
requirements:
|
|
152
|
-
- -
|
|
152
|
+
- - ~>
|
|
153
153
|
- !ruby/object:Gem::Version
|
|
154
154
|
version: '1.4'
|
|
155
155
|
- !ruby/object:Gem::Dependency
|
|
156
156
|
name: pact-support
|
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
|
158
158
|
requirements:
|
|
159
|
-
- -
|
|
159
|
+
- - ~>
|
|
160
160
|
- !ruby/object:Gem::Version
|
|
161
|
-
version: '0.
|
|
162
|
-
- -
|
|
161
|
+
version: '0.4'
|
|
162
|
+
- - '>='
|
|
163
163
|
- !ruby/object:Gem::Version
|
|
164
|
-
version: 0.
|
|
164
|
+
version: 0.4.2
|
|
165
165
|
type: :runtime
|
|
166
166
|
prerelease: false
|
|
167
167
|
version_requirements: !ruby/object:Gem::Requirement
|
|
168
168
|
requirements:
|
|
169
|
-
- -
|
|
169
|
+
- - ~>
|
|
170
170
|
- !ruby/object:Gem::Version
|
|
171
|
-
version: '0.
|
|
172
|
-
- -
|
|
171
|
+
version: '0.4'
|
|
172
|
+
- - '>='
|
|
173
173
|
- !ruby/object:Gem::Version
|
|
174
|
-
version: 0.
|
|
174
|
+
version: 0.4.2
|
|
175
175
|
- !ruby/object:Gem::Dependency
|
|
176
176
|
name: padrino-core
|
|
177
177
|
requirement: !ruby/object:Gem::Requirement
|
|
178
178
|
requirements:
|
|
179
|
-
- -
|
|
179
|
+
- - ~>
|
|
180
180
|
- !ruby/object:Gem::Version
|
|
181
181
|
version: 0.12.4
|
|
182
182
|
type: :runtime
|
|
183
183
|
prerelease: false
|
|
184
184
|
version_requirements: !ruby/object:Gem::Requirement
|
|
185
185
|
requirements:
|
|
186
|
-
- -
|
|
186
|
+
- - ~>
|
|
187
187
|
- !ruby/object:Gem::Version
|
|
188
188
|
version: 0.12.4
|
|
189
189
|
- !ruby/object:Gem::Dependency
|
|
190
190
|
name: haml
|
|
191
191
|
requirement: !ruby/object:Gem::Requirement
|
|
192
192
|
requirements:
|
|
193
|
-
- -
|
|
193
|
+
- - '>='
|
|
194
194
|
- !ruby/object:Gem::Version
|
|
195
195
|
version: '0'
|
|
196
196
|
type: :runtime
|
|
197
197
|
prerelease: false
|
|
198
198
|
version_requirements: !ruby/object:Gem::Requirement
|
|
199
199
|
requirements:
|
|
200
|
-
- -
|
|
200
|
+
- - '>='
|
|
201
201
|
- !ruby/object:Gem::Version
|
|
202
202
|
version: '0'
|
|
203
203
|
- !ruby/object:Gem::Dependency
|
|
204
204
|
name: trailblazer
|
|
205
205
|
requirement: !ruby/object:Gem::Requirement
|
|
206
206
|
requirements:
|
|
207
|
-
- -
|
|
207
|
+
- - ~>
|
|
208
208
|
- !ruby/object:Gem::Version
|
|
209
209
|
version: 0.1.0
|
|
210
210
|
type: :runtime
|
|
211
211
|
prerelease: false
|
|
212
212
|
version_requirements: !ruby/object:Gem::Requirement
|
|
213
213
|
requirements:
|
|
214
|
-
- -
|
|
214
|
+
- - ~>
|
|
215
215
|
- !ruby/object:Gem::Version
|
|
216
216
|
version: 0.1.0
|
|
217
217
|
- !ruby/object:Gem::Dependency
|
|
218
218
|
name: sqlite3
|
|
219
219
|
requirement: !ruby/object:Gem::Requirement
|
|
220
220
|
requirements:
|
|
221
|
-
- -
|
|
221
|
+
- - '>='
|
|
222
222
|
- !ruby/object:Gem::Version
|
|
223
223
|
version: '0'
|
|
224
224
|
type: :development
|
|
225
225
|
prerelease: false
|
|
226
226
|
version_requirements: !ruby/object:Gem::Requirement
|
|
227
227
|
requirements:
|
|
228
|
-
- -
|
|
228
|
+
- - '>='
|
|
229
229
|
- !ruby/object:Gem::Version
|
|
230
230
|
version: '0'
|
|
231
231
|
- !ruby/object:Gem::Dependency
|
|
232
232
|
name: pry
|
|
233
233
|
requirement: !ruby/object:Gem::Requirement
|
|
234
234
|
requirements:
|
|
235
|
-
- -
|
|
235
|
+
- - '>='
|
|
236
236
|
- !ruby/object:Gem::Version
|
|
237
237
|
version: '0'
|
|
238
238
|
type: :development
|
|
239
239
|
prerelease: false
|
|
240
240
|
version_requirements: !ruby/object:Gem::Requirement
|
|
241
241
|
requirements:
|
|
242
|
-
- -
|
|
242
|
+
- - '>='
|
|
243
243
|
- !ruby/object:Gem::Version
|
|
244
244
|
version: '0'
|
|
245
245
|
- !ruby/object:Gem::Dependency
|
|
246
246
|
name: rake
|
|
247
247
|
requirement: !ruby/object:Gem::Requirement
|
|
248
248
|
requirements:
|
|
249
|
-
- -
|
|
249
|
+
- - ~>
|
|
250
250
|
- !ruby/object:Gem::Version
|
|
251
251
|
version: '10.0'
|
|
252
252
|
type: :development
|
|
253
253
|
prerelease: false
|
|
254
254
|
version_requirements: !ruby/object:Gem::Requirement
|
|
255
255
|
requirements:
|
|
256
|
-
- -
|
|
256
|
+
- - ~>
|
|
257
257
|
- !ruby/object:Gem::Version
|
|
258
258
|
version: '10.0'
|
|
259
259
|
- !ruby/object:Gem::Dependency
|
|
260
260
|
name: fakefs
|
|
261
261
|
requirement: !ruby/object:Gem::Requirement
|
|
262
262
|
requirements:
|
|
263
|
-
- -
|
|
263
|
+
- - ~>
|
|
264
264
|
- !ruby/object:Gem::Version
|
|
265
265
|
version: '0.4'
|
|
266
266
|
type: :development
|
|
267
267
|
prerelease: false
|
|
268
268
|
version_requirements: !ruby/object:Gem::Requirement
|
|
269
269
|
requirements:
|
|
270
|
-
- -
|
|
270
|
+
- - ~>
|
|
271
271
|
- !ruby/object:Gem::Version
|
|
272
272
|
version: '0.4'
|
|
273
273
|
- !ruby/object:Gem::Dependency
|
|
274
274
|
name: mysql2
|
|
275
275
|
requirement: !ruby/object:Gem::Requirement
|
|
276
276
|
requirements:
|
|
277
|
-
- -
|
|
277
|
+
- - ~>
|
|
278
278
|
- !ruby/object:Gem::Version
|
|
279
279
|
version: 0.3.15
|
|
280
280
|
type: :development
|
|
281
281
|
prerelease: false
|
|
282
282
|
version_requirements: !ruby/object:Gem::Requirement
|
|
283
283
|
requirements:
|
|
284
|
-
- -
|
|
284
|
+
- - ~>
|
|
285
285
|
- !ruby/object:Gem::Version
|
|
286
286
|
version: 0.3.15
|
|
287
287
|
- !ruby/object:Gem::Dependency
|
|
288
288
|
name: webmock
|
|
289
289
|
requirement: !ruby/object:Gem::Requirement
|
|
290
290
|
requirements:
|
|
291
|
-
- -
|
|
291
|
+
- - '>='
|
|
292
292
|
- !ruby/object:Gem::Version
|
|
293
293
|
version: '0'
|
|
294
294
|
type: :development
|
|
295
295
|
prerelease: false
|
|
296
296
|
version_requirements: !ruby/object:Gem::Requirement
|
|
297
297
|
requirements:
|
|
298
|
-
- -
|
|
298
|
+
- - '>='
|
|
299
299
|
- !ruby/object:Gem::Version
|
|
300
300
|
version: '0'
|
|
301
301
|
- !ruby/object:Gem::Dependency
|
|
302
302
|
name: rspec
|
|
303
303
|
requirement: !ruby/object:Gem::Requirement
|
|
304
304
|
requirements:
|
|
305
|
-
- -
|
|
305
|
+
- - ~>
|
|
306
306
|
- !ruby/object:Gem::Version
|
|
307
307
|
version: '3.0'
|
|
308
308
|
type: :development
|
|
309
309
|
prerelease: false
|
|
310
310
|
version_requirements: !ruby/object:Gem::Requirement
|
|
311
311
|
requirements:
|
|
312
|
-
- -
|
|
312
|
+
- - ~>
|
|
313
313
|
- !ruby/object:Gem::Version
|
|
314
314
|
version: '3.0'
|
|
315
315
|
- !ruby/object:Gem::Dependency
|
|
316
316
|
name: rspec-its
|
|
317
317
|
requirement: !ruby/object:Gem::Requirement
|
|
318
318
|
requirements:
|
|
319
|
-
- -
|
|
319
|
+
- - '>='
|
|
320
320
|
- !ruby/object:Gem::Version
|
|
321
321
|
version: '0'
|
|
322
322
|
type: :development
|
|
323
323
|
prerelease: false
|
|
324
324
|
version_requirements: !ruby/object:Gem::Requirement
|
|
325
325
|
requirements:
|
|
326
|
-
- -
|
|
326
|
+
- - '>='
|
|
327
327
|
- !ruby/object:Gem::Version
|
|
328
328
|
version: '0'
|
|
329
329
|
- !ruby/object:Gem::Dependency
|
|
330
330
|
name: database_cleaner
|
|
331
331
|
requirement: !ruby/object:Gem::Requirement
|
|
332
332
|
requirements:
|
|
333
|
-
- -
|
|
333
|
+
- - '>='
|
|
334
334
|
- !ruby/object:Gem::Version
|
|
335
335
|
version: '0'
|
|
336
336
|
type: :development
|
|
337
337
|
prerelease: false
|
|
338
338
|
version_requirements: !ruby/object:Gem::Requirement
|
|
339
339
|
requirements:
|
|
340
|
-
- -
|
|
340
|
+
- - '>='
|
|
341
341
|
- !ruby/object:Gem::Version
|
|
342
342
|
version: '0'
|
|
343
343
|
description: A server that stores and returns pact files generated by the pact gem.
|
|
@@ -350,9 +350,9 @@ executables: []
|
|
|
350
350
|
extensions: []
|
|
351
351
|
extra_rdoc_files: []
|
|
352
352
|
files:
|
|
353
|
-
-
|
|
354
|
-
-
|
|
355
|
-
-
|
|
353
|
+
- .gitignore
|
|
354
|
+
- .rspec
|
|
355
|
+
- .travis.yml
|
|
356
356
|
- CHANGELOG.md
|
|
357
357
|
- Gemfile
|
|
358
358
|
- README.md
|
|
@@ -382,9 +382,14 @@ files:
|
|
|
382
382
|
- db/migrations/19_make_pact_version_content_sha_not_nullable.rb
|
|
383
383
|
- db/migrations/20_add_pact_version_content_sha_to_all_pacts_view.rb
|
|
384
384
|
- db/migrations/21_recreate_latest_pacts_view.rb
|
|
385
|
+
- db/migrations/22_create_latest_tagged_pacts_view.rb
|
|
385
386
|
- db/migrations/migration_helper.rb
|
|
386
387
|
- db/pact_broker_database.sqlite3
|
|
387
388
|
- example/Gemfile
|
|
389
|
+
- example/basic_auth/Gemfile
|
|
390
|
+
- example/basic_auth/Procfile
|
|
391
|
+
- example/basic_auth/README.md
|
|
392
|
+
- example/basic_auth/config.ru
|
|
388
393
|
- example/config.ru
|
|
389
394
|
- example/pact_broker_database.sqlite3
|
|
390
395
|
- lib/db.rb
|
|
@@ -411,6 +416,7 @@ files:
|
|
|
411
416
|
- lib/pact_broker/api/decorators/pact_versions_decorator.rb
|
|
412
417
|
- lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb
|
|
413
418
|
- lib/pact_broker/api/decorators/pacticipant_decorator.rb
|
|
419
|
+
- lib/pact_broker/api/decorators/provider_pacts_decorator.rb
|
|
414
420
|
- lib/pact_broker/api/decorators/relationships_csv_decorator.rb
|
|
415
421
|
- lib/pact_broker/api/decorators/representable_pact.rb
|
|
416
422
|
- lib/pact_broker/api/decorators/tag_decorator.rb
|
|
@@ -427,6 +433,7 @@ files:
|
|
|
427
433
|
- lib/pact_broker/api/resources/index.rb
|
|
428
434
|
- lib/pact_broker/api/resources/latest_pact.rb
|
|
429
435
|
- lib/pact_broker/api/resources/latest_pacts.rb
|
|
436
|
+
- lib/pact_broker/api/resources/latest_provider_pacts.rb
|
|
430
437
|
- lib/pact_broker/api/resources/pact.rb
|
|
431
438
|
- lib/pact_broker/api/resources/pact_content_diff.rb
|
|
432
439
|
- lib/pact_broker/api/resources/pact_versions.rb
|
|
@@ -487,6 +494,7 @@ files:
|
|
|
487
494
|
- lib/pact_broker/pacts/database_model.rb
|
|
488
495
|
- lib/pact_broker/pacts/diff.rb
|
|
489
496
|
- lib/pact_broker/pacts/latest_pacts.rb
|
|
497
|
+
- lib/pact_broker/pacts/latest_tagged_pacts.rb
|
|
490
498
|
- lib/pact_broker/pacts/pact_params.rb
|
|
491
499
|
- lib/pact_broker/pacts/pact_version_content.rb
|
|
492
500
|
- lib/pact_broker/pacts/repository.rb
|
|
@@ -560,6 +568,7 @@ files:
|
|
|
560
568
|
- spec/features/delete_pact_spec.rb
|
|
561
569
|
- spec/features/get_diff.rb
|
|
562
570
|
- spec/features/get_previous_distinct_version.rb
|
|
571
|
+
- spec/features/get_provider_pacts.rb
|
|
563
572
|
- spec/features/get_version.rb
|
|
564
573
|
- spec/features/publish_not_a_pact_spec.rb
|
|
565
574
|
- spec/features/publish_pact_spec.rb
|
|
@@ -692,17 +701,17 @@ require_paths:
|
|
|
692
701
|
- lib
|
|
693
702
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
694
703
|
requirements:
|
|
695
|
-
- -
|
|
704
|
+
- - '>='
|
|
696
705
|
- !ruby/object:Gem::Version
|
|
697
706
|
version: '0'
|
|
698
707
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
699
708
|
requirements:
|
|
700
|
-
- -
|
|
709
|
+
- - '>='
|
|
701
710
|
- !ruby/object:Gem::Version
|
|
702
711
|
version: '0'
|
|
703
712
|
requirements: []
|
|
704
713
|
rubyforge_project:
|
|
705
|
-
rubygems_version: 2.
|
|
714
|
+
rubygems_version: 2.0.14
|
|
706
715
|
signing_key:
|
|
707
716
|
specification_version: 4
|
|
708
717
|
summary: See description
|
|
@@ -711,6 +720,7 @@ test_files:
|
|
|
711
720
|
- spec/features/delete_pact_spec.rb
|
|
712
721
|
- spec/features/get_diff.rb
|
|
713
722
|
- spec/features/get_previous_distinct_version.rb
|
|
723
|
+
- spec/features/get_provider_pacts.rb
|
|
714
724
|
- spec/features/get_version.rb
|
|
715
725
|
- spec/features/publish_not_a_pact_spec.rb
|
|
716
726
|
- spec/features/publish_pact_spec.rb
|