pact_broker 1.15.0 → 1.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +3 -3
- data/db/pact_broker_database.sqlite3 +0 -0
- data/example/Gemfile +1 -1
- data/lib/pact_broker/api.rb +2 -2
- data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +1 -0
- data/lib/pact_broker/api/decorators/version_decorator.rb +0 -8
- data/lib/pact_broker/api/resources/pact.rb +6 -1
- data/lib/pact_broker/{services/group_service.rb → groups/service.rb} +2 -2
- data/lib/pact_broker/{repositories/pacticipant_repository.rb → pacticipants/repository.rb} +3 -3
- data/lib/pact_broker/{services/pacticipant_service.rb → pacticipants/service.rb} +2 -2
- data/lib/pact_broker/repositories.rb +8 -9
- data/lib/pact_broker/services.rb +10 -11
- data/lib/pact_broker/{repositories/tag_repository.rb → tags/repository.rb} +3 -3
- data/lib/pact_broker/{services/tag_service.rb → tags/service.rb} +3 -3
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/{repositories/version_repository.rb → versions/repository.rb} +4 -4
- data/lib/pact_broker/{services/version_service.rb → versions/service.rb} +2 -2
- data/lib/pact_broker/{repositories/webhook_repository.rb → webhooks/repository.rb} +4 -4
- data/lib/pact_broker/{services/webhook_service.rb → webhooks/service.rb} +2 -2
- data/lib/pact_broker/{repositories → webhooks}/webhook.rb +2 -2
- data/spec/features/{get_version.rb → get_version_spec.rb} +0 -0
- data/spec/features/publish_not_a_pact_spec.rb +1 -1
- data/spec/features/publish_pact_spec.rb +1 -1
- data/spec/features/update_pacticipant_spec.rb +0 -1
- data/spec/lib/pact_broker/api/decorators/embedded_tag_decorator_spec.rb +2 -2
- data/spec/lib/pact_broker/api/decorators/embedded_version_decorator_spec.rb +1 -1
- data/spec/lib/pact_broker/api/decorators/tag_decorator_spec.rb +2 -2
- data/spec/lib/pact_broker/api/decorators/version_decorator_spec.rb +1 -1
- data/spec/lib/pact_broker/api/decorators/versions_decorator_spec.rb +1 -1
- data/spec/lib/pact_broker/api/resources/group_spec.rb +4 -4
- data/spec/lib/pact_broker/api/resources/pact_spec.rb +43 -1
- data/spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb +3 -3
- data/spec/lib/pact_broker/api/resources/pacticipant_spec.rb +4 -4
- data/spec/lib/pact_broker/api/resources/pacticipants_spec.rb +2 -2
- data/spec/lib/pact_broker/api/resources/tag_spec.rb +9 -9
- data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +2 -2
- data/spec/lib/pact_broker/api/resources/webhook_spec.rb +2 -2
- data/spec/lib/pact_broker/api/resources/webhooks_spec.rb +1 -1
- data/spec/lib/pact_broker/{services/group_service_spec.rb → groups/service_spec.rb} +6 -6
- data/spec/lib/pact_broker/{repositories/pacticipant_repository_spec.rb → pacticipants/repository_spec.rb} +5 -5
- data/spec/lib/pact_broker/{services/pacticipant_service_spec.rb → pacticipants/service_spec.rb} +12 -12
- data/spec/lib/pact_broker/pacts/repository_spec.rb +5 -5
- data/spec/lib/pact_broker/{repositories/tag_repository_spec.rb → tags/repository_spec.rb} +4 -4
- data/spec/lib/pact_broker/{services/tag_service_spec.rb → tags/service_spec.rb} +6 -6
- data/spec/lib/pact_broker/ui/controllers/relationships_spec.rb +1 -1
- data/spec/lib/pact_broker/{repositories/version_repository_spec.rb → versions/repository_spec.rb} +4 -4
- data/spec/lib/pact_broker/{repositories/webhook_repository_spec.rb → webhooks/repository_spec.rb} +16 -16
- data/spec/lib/pact_broker/{services/webhook_service_spec.rb → webhooks/service_spec.rb} +9 -9
- data/spec/support/provider_state_builder.rb +1 -1
- metadata +31 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ec4bf1313472e88e1f22f7fb9856b56bec60eb8
|
4
|
+
data.tar.gz: 8f2b0b91cfd1a495ffd64485685cbf0308e95aea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e223d0c5472b1eccd80e8fc4e388d0d8d00fc5c315ac4ff741321fb9053157b99cddd86fed3b895e12a75d9b0828796715d1fd2754c7eacb0719703cbac4ffc
|
7
|
+
data.tar.gz: aeee301687d838c763786b54c5fa05da34907dd45bd53b278e67b02f3ef51bb23651cfafc460fa1d05b2b491d83867fc8b1de029534011cace5cdbfed4728ee5
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,13 @@ 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.16.0 (2017-04-10)
|
6
|
+
* 990575f - Added HTML content type for request to get a specific version of a pact. As per request in https://github.com/bethesque/pact_broker/issues/82 (Beth Skurrie, Mon Apr 10 15:34:28 2017 +1000)
|
7
|
+
* b47b8d8 - Use /versions rather than /version in test endpoint. Singular will be deprecated. (Beth Skurrie, Fri Apr 7 16:03:19 2017 +1000)
|
8
|
+
* dd4daee - Removed version restriction for pact_broker gem in the example Gemfile. This will avoid a repetition of the twisted dependencies fixed by https://github.com/bethesque/pact_broker/pull/84 (Beth Skurrie, Tue Apr 4 09:53:39 2017 +1000)
|
9
|
+
* e447b3f - Updated sqlite database. (Beth Skurrie, Mon Apr 3 08:25:41 2017 +1000)
|
10
|
+
* 149efc0 - Update REAME to reflect 2.4 support. (Tan Le, Fri Mar 31 21:42:47 2017 +1100)
|
11
|
+
|
5
12
|
#### 1.15.0 (2017-03-28)
|
6
13
|
* 588c33e - Adds versions decorator spec (Ivan Vojinovic, Wed Feb 22 00:00:46 2017 -0500)
|
7
14
|
* c4a7daf - Adds pacticipant versions endpoint (Ivan Vojinovic, Tue Feb 21 21:15:39 2017 -0500)
|
data/README.md
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
[![Build Status](https://travis-ci.org/bethesque/pact_broker.svg?branch=master)](https://travis-ci.org/bethesque/pact_broker) [![Join the chat at https://gitter.im/bethesque/pact_broker](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/bethesque/pact_broker?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
4
4
|
|
5
|
-
The Pact Broker provides a repository for consumer driven contracts created using the pact gem.
|
5
|
+
The Pact Broker provides a repository for consumer driven contracts created using the pact gem.
|
6
6
|
|
7
|
-
It:
|
7
|
+
It:
|
8
8
|
|
9
9
|
* solves the problem of how to share pacts between consumer and provider projects
|
10
10
|
* allows you to [decouple your service release cycles][decouple]
|
@@ -80,7 +80,7 @@ Use the HAL browser to view documentation as you browse.
|
|
80
80
|
|
81
81
|
### To have a play around on your local machine
|
82
82
|
|
83
|
-
* Install ruby 1.9.3 or later and bundler >= 1.12.0
|
83
|
+
* Install ruby 1.9.3 or later and bundler >= 1.12.0
|
84
84
|
* Run `git clone git@github.com:bethesque/pact_broker.git && cd pact_broker/example`
|
85
85
|
* Run `bundle`
|
86
86
|
* Run `bundle exec rackup -p 8080`
|
Binary file
|
data/example/Gemfile
CHANGED
data/lib/pact_broker/api.rb
CHANGED
@@ -37,7 +37,7 @@ module PactBroker
|
|
37
37
|
# Todo, rename /version/ to /versions
|
38
38
|
add ['pacts', 'provider', :provider_name, 'consumer', :consumer_name, 'latest'], Api::Resources::LatestPact
|
39
39
|
add ['pacts', 'provider', :provider_name, 'consumer', :consumer_name, 'latest', :tag], Api::Resources::LatestPact
|
40
|
-
add ['pacts', 'provider', :provider_name, 'consumer', :consumer_name, 'version', :consumer_version_number], Api::Resources::Pact # Deprecate
|
40
|
+
add ['pacts', 'provider', :provider_name, 'consumer', :consumer_name, 'version', :consumer_version_number], Api::Resources::Pact # Deprecate, singular version
|
41
41
|
add ['pacts', 'provider', :provider_name, 'consumer', :consumer_name, 'versions', :consumer_version_number], Api::Resources::Pact
|
42
42
|
add ['pacts', 'provider', :provider_name, 'consumer', :consumer_name, 'versions'], Api::Resources::PactVersions
|
43
43
|
add ['pacts', 'provider', :provider_name, 'consumer', :consumer_name, 'version', :consumer_version_number, 'previous-distinct'], Api::Resources::PreviousDistinctPactVersion
|
@@ -45,7 +45,7 @@ module PactBroker
|
|
45
45
|
add ['pacts', 'provider', :provider_name, 'latest'], Api::Resources::LatestProviderPacts
|
46
46
|
add ['pacts', 'provider', :provider_name, 'latest', :tag], Api::Resources::LatestProviderPacts
|
47
47
|
|
48
|
-
add ['pact', 'provider', :provider_name, 'consumer', :consumer_name, 'version', :consumer_version_number], Api::Resources::Pact
|
48
|
+
add ['pact', 'provider', :provider_name, 'consumer', :consumer_name, 'version', :consumer_version_number], Api::Resources::Pact # Deprecate, singular /pact
|
49
49
|
add ['pact', 'provider', :provider_name, 'consumer', :consumer_name, 'latest'], Api::Resources::LatestPact
|
50
50
|
add ['pacts', 'latest'], Api::Resources::LatestPacts
|
51
51
|
add ['pacticipants'], Api::Resources::Pacticipants
|
@@ -18,14 +18,6 @@ module PactBroker
|
|
18
18
|
}
|
19
19
|
end
|
20
20
|
|
21
|
-
link :self do | options |
|
22
|
-
{
|
23
|
-
title: 'Version',
|
24
|
-
name: represented.number,
|
25
|
-
href: version_url(options.fetch(:base_url), represented)
|
26
|
-
}
|
27
|
-
end
|
28
|
-
|
29
21
|
link :pacticipant do | options |
|
30
22
|
{
|
31
23
|
title: 'Pacticipant',
|
@@ -24,7 +24,8 @@ module PactBroker
|
|
24
24
|
include PacticipantResourceMethods
|
25
25
|
|
26
26
|
def content_types_provided
|
27
|
-
[["application/json", :to_json]
|
27
|
+
[["application/json", :to_json],
|
28
|
+
["text/html", :to_html]]
|
28
29
|
end
|
29
30
|
|
30
31
|
def content_types_accepted
|
@@ -76,6 +77,10 @@ module PactBroker
|
|
76
77
|
PactBroker::Api::Decorators::PactDecorator.new(pact).to_json(user_options: { base_url: base_url })
|
77
78
|
end
|
78
79
|
|
80
|
+
def to_html
|
81
|
+
PactBroker.configuration.html_pact_renderer.call(pact)
|
82
|
+
end
|
83
|
+
|
79
84
|
def delete_resource
|
80
85
|
pact_service.delete(pact_params)
|
81
86
|
true
|
@@ -3,10 +3,10 @@ require 'pact_broker/domain/pacticipant'
|
|
3
3
|
require 'pact_broker/repositories/helpers'
|
4
4
|
|
5
5
|
module PactBroker
|
6
|
-
module
|
7
|
-
class
|
6
|
+
module Pacticipants
|
7
|
+
class Repository
|
8
8
|
|
9
|
-
include Helpers
|
9
|
+
include PactBroker::Repositories::Helpers
|
10
10
|
|
11
11
|
def find_by_name name
|
12
12
|
PactBroker::Domain::Pacticipant.where(name_like(:name, name)).single_record
|
@@ -1,19 +1,16 @@
|
|
1
1
|
require 'pact_broker/domain'
|
2
|
-
require 'pact_broker/repositories/pacticipant_repository'
|
3
|
-
require 'pact_broker/repositories/version_repository'
|
4
2
|
require 'pact_broker/pacts/repository'
|
5
|
-
require 'pact_broker/repositories/tag_repository'
|
6
|
-
require 'pact_broker/repositories/webhook_repository'
|
7
|
-
|
8
3
|
|
9
4
|
module PactBroker
|
10
5
|
module Repositories
|
11
6
|
def pacticipant_repository
|
12
|
-
|
7
|
+
require 'pact_broker/pacticipants/repository'
|
8
|
+
Pacticipants::Repository.new
|
13
9
|
end
|
14
10
|
|
15
11
|
def version_repository
|
16
|
-
|
12
|
+
require 'pact_broker/versions/repository'
|
13
|
+
Versions::Repository.new
|
17
14
|
end
|
18
15
|
|
19
16
|
def pact_repository
|
@@ -21,11 +18,13 @@ module PactBroker
|
|
21
18
|
end
|
22
19
|
|
23
20
|
def tag_repository
|
24
|
-
|
21
|
+
require 'pact_broker/tags/repository'
|
22
|
+
Tags::Repository.new
|
25
23
|
end
|
26
24
|
|
27
25
|
def webhook_repository
|
28
|
-
|
26
|
+
require 'pact_broker/webhooks/repository'
|
27
|
+
Webhooks::Repository.new
|
29
28
|
end
|
30
29
|
|
31
30
|
extend self
|
data/lib/pact_broker/services.rb
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
require 'pact_broker/services/pacticipant_service'
|
2
|
-
require 'pact_broker/services/tag_service'
|
3
|
-
require 'pact_broker/services/group_service'
|
4
|
-
require 'pact_broker/services/webhook_service'
|
5
|
-
require 'pact_broker/services/version_service'
|
6
|
-
|
7
1
|
module PactBroker
|
8
2
|
module Services
|
9
3
|
|
@@ -14,23 +8,28 @@ module PactBroker
|
|
14
8
|
end
|
15
9
|
|
16
10
|
def pacticipant_service
|
17
|
-
|
11
|
+
require 'pact_broker/pacticipants/service'
|
12
|
+
Pacticipants::Service
|
18
13
|
end
|
19
14
|
|
20
15
|
def tag_service
|
21
|
-
|
16
|
+
require 'pact_broker/tags/service'
|
17
|
+
Tags::Service
|
22
18
|
end
|
23
19
|
|
24
20
|
def group_service
|
25
|
-
|
21
|
+
require 'pact_broker/groups/service'
|
22
|
+
Groups::Service
|
26
23
|
end
|
27
24
|
|
28
25
|
def webhook_service
|
29
|
-
|
26
|
+
require 'pact_broker/webhooks/service'
|
27
|
+
Webhooks::Service
|
30
28
|
end
|
31
29
|
|
32
30
|
def version_service
|
33
|
-
|
31
|
+
require 'pact_broker/versions/service'
|
32
|
+
Versions::Service
|
34
33
|
end
|
35
34
|
end
|
36
35
|
end
|
@@ -3,10 +3,10 @@ require 'pact_broker/repositories/helpers'
|
|
3
3
|
|
4
4
|
|
5
5
|
module PactBroker
|
6
|
-
module
|
7
|
-
class
|
6
|
+
module Tags
|
7
|
+
class Repository
|
8
8
|
|
9
|
-
include Helpers
|
9
|
+
include PactBroker::Repositories::Helpers
|
10
10
|
|
11
11
|
def create args
|
12
12
|
Domain::Tag.new(name: args.fetch(:name), version: args.fetch(:version)).save
|
data/lib/pact_broker/version.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'sequel'
|
2
2
|
require 'pact_broker/domain/version'
|
3
|
-
require 'pact_broker/
|
3
|
+
require 'pact_broker/tags/repository'
|
4
4
|
|
5
5
|
module PactBroker
|
6
|
-
module
|
7
|
-
class
|
6
|
+
module Versions
|
7
|
+
class Repository
|
8
8
|
|
9
|
-
include Helpers
|
9
|
+
include PactBroker::Repositories::Helpers
|
10
10
|
|
11
11
|
def find_by_pacticipant_id_and_number pacticipant_id, number
|
12
12
|
PactBroker::Domain::Version.where(number: number, pacticipant_id: pacticipant_id).single_record
|
@@ -2,13 +2,13 @@ require 'sequel'
|
|
2
2
|
require 'pact_broker/domain/webhook'
|
3
3
|
require 'pact_broker/domain/pacticipant'
|
4
4
|
require 'pact_broker/db'
|
5
|
-
require 'pact_broker/
|
5
|
+
require 'pact_broker/webhooks/webhook'
|
6
6
|
|
7
7
|
|
8
8
|
module PactBroker
|
9
|
-
module
|
9
|
+
module Webhooks
|
10
10
|
|
11
|
-
class
|
11
|
+
class Repository
|
12
12
|
|
13
13
|
include Repositories
|
14
14
|
|
@@ -17,7 +17,7 @@ module PactBroker
|
|
17
17
|
db_webhook.uuid = uuid
|
18
18
|
db_webhook.save
|
19
19
|
webhook.request.headers.each_pair do | name, value |
|
20
|
-
db_webhook.add_header WebhookHeader.from_domain(name, value, db_webhook.id)
|
20
|
+
db_webhook.add_header PactBroker::Webhooks::WebhookHeader.from_domain(name, value, db_webhook.id)
|
21
21
|
end
|
22
22
|
find_by_uuid db_webhook.uuid
|
23
23
|
end
|
@@ -3,13 +3,13 @@ require 'pact_broker/domain/webhook'
|
|
3
3
|
require 'pact_broker/domain/pacticipant'
|
4
4
|
|
5
5
|
module PactBroker
|
6
|
-
module
|
6
|
+
module Webhooks
|
7
7
|
class Webhook < Sequel::Model
|
8
8
|
|
9
9
|
set_primary_key :id
|
10
10
|
associate(:many_to_one, :provider, :class => "PactBroker::Domain::Pacticipant", :key => :provider_id, :primary_key => :id)
|
11
11
|
associate(:many_to_one, :consumer, :class => "PactBroker::Domain::Pacticipant", :key => :consumer_id, :primary_key => :id)
|
12
|
-
one_to_many :headers, :class => "PactBroker::
|
12
|
+
one_to_many :headers, :class => "PactBroker::Webhooks::WebhookHeader", :reciprocal => :webhook
|
13
13
|
|
14
14
|
def before_destroy
|
15
15
|
WebhookHeader.where(webhook_id: id).destroy
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
describe "Publishing a contract that is not a pact" do
|
2
2
|
|
3
|
-
let(:path) { "/pacts/provider/A%20Provider/consumer/A%20Consumer/
|
3
|
+
let(:path) { "/pacts/provider/A%20Provider/consumer/A%20Consumer/versions/1.2.3" }
|
4
4
|
let(:parsed_response_body) { JSON.parse(subject.body) }
|
5
5
|
|
6
6
|
subject { put path, pact_content, {'CONTENT_TYPE' => 'application/json' }; last_response }
|
@@ -1,7 +1,7 @@
|
|
1
1
|
describe "Publishing a pact" do
|
2
2
|
|
3
3
|
let(:pact_content) { load_fixture('a_consumer-a_provider.json') }
|
4
|
-
let(:path) { "/pacts/provider/A%20Provider/consumer/A%20Consumer/
|
4
|
+
let(:path) { "/pacts/provider/A%20Provider/consumer/A%20Consumer/versions/1.2.3" }
|
5
5
|
let(:response_body_json) { JSON.parse(subject.body) }
|
6
6
|
|
7
7
|
subject { put path, pact_content, {'CONTENT_TYPE' => 'application/json' }; last_response }
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'pact_broker/api/decorators/embedded_tag_decorator'
|
2
|
-
require 'pact_broker/
|
2
|
+
require 'pact_broker/tags/repository'
|
3
3
|
require 'support/provider_state_builder'
|
4
4
|
|
5
5
|
module PactBroker
|
@@ -15,7 +15,7 @@ module PactBroker
|
|
15
15
|
.create_consumer("Consumer")
|
16
16
|
.create_version("1.2.3")
|
17
17
|
.create_tag("prod")
|
18
|
-
PactBroker::
|
18
|
+
PactBroker::Tags::Repository.new.find(tag_name: 'prod', pacticipant_version_number: '1.2.3', pacticipant_name: 'Consumer')
|
19
19
|
end
|
20
20
|
|
21
21
|
let(:options) { { user_options: { base_url: 'http://example.org' } } }
|
@@ -10,7 +10,7 @@ module PactBroker
|
|
10
10
|
ProviderStateBuilder.new
|
11
11
|
.create_consumer("Consumer")
|
12
12
|
.create_version("1.2.3")
|
13
|
-
PactBroker::
|
13
|
+
PactBroker::Versions::Repository.new.find_by_pacticipant_name_and_number "Consumer", "1.2.3"
|
14
14
|
end
|
15
15
|
|
16
16
|
let(:options) { { user_options: { base_url: 'http://example.org' } } }
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'pact_broker/api/decorators/tag_decorator'
|
2
|
-
require 'pact_broker/
|
2
|
+
require 'pact_broker/tags/repository'
|
3
3
|
|
4
4
|
require 'support/provider_state_builder'
|
5
5
|
|
@@ -16,7 +16,7 @@ module PactBroker
|
|
16
16
|
.create_consumer("Consumer")
|
17
17
|
.create_version("1.2.3")
|
18
18
|
.create_tag("prod")
|
19
|
-
PactBroker::
|
19
|
+
PactBroker::Tags::Repository.new.find tag_name: 'prod', pacticipant_version_number: '1.2.3', pacticipant_name: 'Consumer'
|
20
20
|
end
|
21
21
|
|
22
22
|
let(:options) { { user_options: { base_url: 'http://example.org' } } }
|