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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +3 -3
  4. data/db/pact_broker_database.sqlite3 +0 -0
  5. data/example/Gemfile +1 -1
  6. data/lib/pact_broker/api.rb +2 -2
  7. data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +1 -0
  8. data/lib/pact_broker/api/decorators/version_decorator.rb +0 -8
  9. data/lib/pact_broker/api/resources/pact.rb +6 -1
  10. data/lib/pact_broker/{services/group_service.rb → groups/service.rb} +2 -2
  11. data/lib/pact_broker/{repositories/pacticipant_repository.rb → pacticipants/repository.rb} +3 -3
  12. data/lib/pact_broker/{services/pacticipant_service.rb → pacticipants/service.rb} +2 -2
  13. data/lib/pact_broker/repositories.rb +8 -9
  14. data/lib/pact_broker/services.rb +10 -11
  15. data/lib/pact_broker/{repositories/tag_repository.rb → tags/repository.rb} +3 -3
  16. data/lib/pact_broker/{services/tag_service.rb → tags/service.rb} +3 -3
  17. data/lib/pact_broker/version.rb +1 -1
  18. data/lib/pact_broker/{repositories/version_repository.rb → versions/repository.rb} +4 -4
  19. data/lib/pact_broker/{services/version_service.rb → versions/service.rb} +2 -2
  20. data/lib/pact_broker/{repositories/webhook_repository.rb → webhooks/repository.rb} +4 -4
  21. data/lib/pact_broker/{services/webhook_service.rb → webhooks/service.rb} +2 -2
  22. data/lib/pact_broker/{repositories → webhooks}/webhook.rb +2 -2
  23. data/spec/features/{get_version.rb → get_version_spec.rb} +0 -0
  24. data/spec/features/publish_not_a_pact_spec.rb +1 -1
  25. data/spec/features/publish_pact_spec.rb +1 -1
  26. data/spec/features/update_pacticipant_spec.rb +0 -1
  27. data/spec/lib/pact_broker/api/decorators/embedded_tag_decorator_spec.rb +2 -2
  28. data/spec/lib/pact_broker/api/decorators/embedded_version_decorator_spec.rb +1 -1
  29. data/spec/lib/pact_broker/api/decorators/tag_decorator_spec.rb +2 -2
  30. data/spec/lib/pact_broker/api/decorators/version_decorator_spec.rb +1 -1
  31. data/spec/lib/pact_broker/api/decorators/versions_decorator_spec.rb +1 -1
  32. data/spec/lib/pact_broker/api/resources/group_spec.rb +4 -4
  33. data/spec/lib/pact_broker/api/resources/pact_spec.rb +43 -1
  34. data/spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb +3 -3
  35. data/spec/lib/pact_broker/api/resources/pacticipant_spec.rb +4 -4
  36. data/spec/lib/pact_broker/api/resources/pacticipants_spec.rb +2 -2
  37. data/spec/lib/pact_broker/api/resources/tag_spec.rb +9 -9
  38. data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +2 -2
  39. data/spec/lib/pact_broker/api/resources/webhook_spec.rb +2 -2
  40. data/spec/lib/pact_broker/api/resources/webhooks_spec.rb +1 -1
  41. data/spec/lib/pact_broker/{services/group_service_spec.rb → groups/service_spec.rb} +6 -6
  42. data/spec/lib/pact_broker/{repositories/pacticipant_repository_spec.rb → pacticipants/repository_spec.rb} +5 -5
  43. data/spec/lib/pact_broker/{services/pacticipant_service_spec.rb → pacticipants/service_spec.rb} +12 -12
  44. data/spec/lib/pact_broker/pacts/repository_spec.rb +5 -5
  45. data/spec/lib/pact_broker/{repositories/tag_repository_spec.rb → tags/repository_spec.rb} +4 -4
  46. data/spec/lib/pact_broker/{services/tag_service_spec.rb → tags/service_spec.rb} +6 -6
  47. data/spec/lib/pact_broker/ui/controllers/relationships_spec.rb +1 -1
  48. data/spec/lib/pact_broker/{repositories/version_repository_spec.rb → versions/repository_spec.rb} +4 -4
  49. data/spec/lib/pact_broker/{repositories/webhook_repository_spec.rb → webhooks/repository_spec.rb} +16 -16
  50. data/spec/lib/pact_broker/{services/webhook_service_spec.rb → webhooks/service_spec.rb} +9 -9
  51. data/spec/support/provider_state_builder.rb +1 -1
  52. metadata +31 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee70ece82ed0bd78c3ab1d09fef1248d7686e252
4
- data.tar.gz: 30b3bf57e83a827fbd7e62fb80dd4fe8414662b6
3
+ metadata.gz: 6ec4bf1313472e88e1f22f7fb9856b56bec60eb8
4
+ data.tar.gz: 8f2b0b91cfd1a495ffd64485685cbf0308e95aea
5
5
  SHA512:
6
- metadata.gz: c416ab1439d9975218b456a03f3f5cf67784f1f785f27c2a84da53022daa1fc99af14105949b8e26191180ed10487d49eff97aac5754d916e6ffaf4a91ff9108
7
- data.tar.gz: 964b25fcd0b9bfabd935b5830fbad6706aab0886c554456c085ca08a47c79a2b9e165e3e231a8c68bfbbfe31b2fef2438a28c64fe55654a48c7c90cf2174d1b4
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 (NOTE! Currently broken on ruby 2.4.0. See [issue 78](https://github.com/bethesque/pact_broker/issues/78). )
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
@@ -1,5 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'pact_broker', '~> 1.14'
3
+ gem 'pact_broker'
4
4
  gem 'sqlite3' # Replace with your choice of database driver eg. gem "pg"
5
5
  gem 'thin' # Keep, or replace with your choice of web server
@@ -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
@@ -1,6 +1,7 @@
1
1
  require_relative 'base_decorator'
2
2
  require_relative 'embedded_version_decorator'
3
3
  require 'pact_broker/api/decorators/timestamps'
4
+ require 'pact_broker/domain'
4
5
 
5
6
  module PactBroker
6
7
 
@@ -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,8 +3,8 @@ require 'pact_broker/relationships/groupify'
3
3
 
4
4
  module PactBroker
5
5
 
6
- module Services
7
- module GroupService
6
+ module Groups
7
+ module Service
8
8
 
9
9
  extend self
10
10
 
@@ -3,10 +3,10 @@ require 'pact_broker/domain/pacticipant'
3
3
  require 'pact_broker/repositories/helpers'
4
4
 
5
5
  module PactBroker
6
- module Repositories
7
- class PacticipantRepository
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
@@ -6,8 +6,8 @@ require 'pact_broker/pacticipants/find_potential_duplicate_pacticipant_names'
6
6
 
7
7
  module PactBroker
8
8
 
9
- module Services
10
- class PacticipantService
9
+ module Pacticipants
10
+ class Service
11
11
 
12
12
  extend PactBroker::Repositories
13
13
  extend PactBroker::Services
@@ -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
- PacticipantRepository.new
7
+ require 'pact_broker/pacticipants/repository'
8
+ Pacticipants::Repository.new
13
9
  end
14
10
 
15
11
  def version_repository
16
- VersionRepository.new
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
- TagRepository.new
21
+ require 'pact_broker/tags/repository'
22
+ Tags::Repository.new
25
23
  end
26
24
 
27
25
  def webhook_repository
28
- WebhookRepository.new
26
+ require 'pact_broker/webhooks/repository'
27
+ Webhooks::Repository.new
29
28
  end
30
29
 
31
30
  extend self
@@ -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
- PacticipantService
11
+ require 'pact_broker/pacticipants/service'
12
+ Pacticipants::Service
18
13
  end
19
14
 
20
15
  def tag_service
21
- TagService
16
+ require 'pact_broker/tags/service'
17
+ Tags::Service
22
18
  end
23
19
 
24
20
  def group_service
25
- GroupService
21
+ require 'pact_broker/groups/service'
22
+ Groups::Service
26
23
  end
27
24
 
28
25
  def webhook_service
29
- WebhookService
26
+ require 'pact_broker/webhooks/service'
27
+ Webhooks::Service
30
28
  end
31
29
 
32
30
  def version_service
33
- VersionService
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 Repositories
7
- class TagRepository
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
@@ -2,8 +2,8 @@ require 'pact_broker/repositories'
2
2
 
3
3
  module PactBroker
4
4
 
5
- module Services
6
- module TagService
5
+ module Tags
6
+ module Service
7
7
 
8
8
  extend self
9
9
 
@@ -28,4 +28,4 @@ module PactBroker
28
28
  end
29
29
  end
30
30
 
31
- end
31
+ end
@@ -1,3 +1,3 @@
1
1
  module PactBroker
2
- VERSION = '1.15.0'
2
+ VERSION = '1.16.0'
3
3
  end
@@ -1,12 +1,12 @@
1
1
  require 'sequel'
2
2
  require 'pact_broker/domain/version'
3
- require 'pact_broker/repositories/tag_repository'
3
+ require 'pact_broker/tags/repository'
4
4
 
5
5
  module PactBroker
6
- module Repositories
7
- class VersionRepository
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,8 +2,8 @@ require 'pact_broker/repositories'
2
2
 
3
3
  module PactBroker
4
4
 
5
- module Services
6
- class VersionService
5
+ module Versions
6
+ class Service
7
7
 
8
8
  extend PactBroker::Repositories
9
9
 
@@ -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/repositories/webhook'
5
+ require 'pact_broker/webhooks/webhook'
6
6
 
7
7
 
8
8
  module PactBroker
9
- module Repositories
9
+ module Webhooks
10
10
 
11
- class WebhookRepository
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
@@ -4,8 +4,8 @@ require 'base64'
4
4
 
5
5
  module PactBroker
6
6
 
7
- module Services
8
- class WebhookService
7
+ module Webhooks
8
+ class Service
9
9
 
10
10
  extend Repositories
11
11
  include Logging
@@ -3,13 +3,13 @@ require 'pact_broker/domain/webhook'
3
3
  require 'pact_broker/domain/pacticipant'
4
4
 
5
5
  module PactBroker
6
- module Repositories
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::Repositories::WebhookHeader", :reciprocal => :webhook
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
@@ -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/version/1.2.3" }
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/version/1.2.3" }
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 }
@@ -22,5 +22,4 @@ xdescribe "Publishing a pact" do
22
22
  expect(subject.status).to be 404
23
23
  end
24
24
  end
25
-
26
25
  end
@@ -1,5 +1,5 @@
1
1
  require 'pact_broker/api/decorators/embedded_tag_decorator'
2
- require 'pact_broker/repositories/tag_repository'
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::Repositories::TagRepository.new.find(tag_name: 'prod', pacticipant_version_number: '1.2.3', pacticipant_name: 'Consumer')
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::Repositories::VersionRepository.new.find_by_pacticipant_name_and_number "Consumer", "1.2.3"
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/repositories/tag_repository'
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::Repositories::TagRepository.new.find tag_name: 'prod', pacticipant_version_number: '1.2.3', pacticipant_name: 'Consumer'
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' } } }