pact_broker 1.15.0 → 1.16.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.
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' } } }