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.
- 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
|
[](https://travis-ci.org/bethesque/pact_broker) [](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' } } }
|