typhoeus 0.6.3 → 0.6.4
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 +15 -0
- data/.gitignore +8 -0
- data/.rspec +4 -0
- data/.travis.yml +10 -0
- data/CHANGELOG.md +7 -1
- data/CONTRIBUTING.md +16 -0
- data/Guardfile +9 -0
- data/README.md +303 -1
- data/UPGRADE.md +55 -0
- data/lib/rack/typhoeus/middleware/params_decoder.rb +1 -1
- data/lib/rack/typhoeus/middleware/params_decoder/helper.rb +6 -2
- data/lib/typhoeus/adapters/faraday.rb +4 -1
- data/lib/typhoeus/easy_factory.rb +36 -15
- data/lib/typhoeus/hydra/before.rb +2 -1
- data/lib/typhoeus/hydra/cacheable.rb +1 -0
- data/lib/typhoeus/hydra/memoizable.rb +1 -0
- data/lib/typhoeus/hydra/queueable.rb +15 -3
- data/lib/typhoeus/request.rb +6 -2
- data/lib/typhoeus/request/marshal.rb +3 -2
- data/lib/typhoeus/response/informations.rb +4 -0
- data/lib/typhoeus/version.rb +1 -1
- data/perf/profile.rb +14 -0
- data/perf/vs_nethttp.rb +64 -0
- data/spec/rack/typhoeus/middleware/params_decoder/helper_spec.rb +132 -0
- data/spec/rack/typhoeus/middleware/params_decoder_spec.rb +31 -0
- data/spec/spec_helper.rb +35 -0
- data/spec/support/localhost_server.rb +94 -0
- data/spec/support/server.rb +108 -0
- data/spec/typhoeus/adapters/faraday_spec.rb +245 -0
- data/spec/typhoeus/config_spec.rb +15 -0
- data/spec/typhoeus/easy_factory_spec.rb +96 -0
- data/spec/typhoeus/errors/no_stub_spec.rb +13 -0
- data/spec/typhoeus/expectation_spec.rb +273 -0
- data/spec/typhoeus/hydra/addable_spec.rb +22 -0
- data/spec/typhoeus/hydra/before_spec.rb +97 -0
- data/spec/typhoeus/hydra/block_connection_spec.rb +18 -0
- data/spec/typhoeus/hydra/cacheable_spec.rb +68 -0
- data/spec/typhoeus/hydra/memoizable_spec.rb +53 -0
- data/spec/typhoeus/hydra/queueable_spec.rb +34 -0
- data/spec/typhoeus/hydra/runnable_spec.rb +155 -0
- data/spec/typhoeus/hydra/stubbable_spec.rb +28 -0
- data/spec/typhoeus/hydra_spec.rb +26 -0
- data/spec/typhoeus/pool_spec.rb +79 -0
- data/spec/typhoeus/request/actions_spec.rb +19 -0
- data/spec/typhoeus/request/before_spec.rb +92 -0
- data/spec/typhoeus/request/block_connection_spec.rb +75 -0
- data/spec/typhoeus/request/cacheable_spec.rb +80 -0
- data/spec/typhoeus/request/callbacks_spec.rb +91 -0
- data/spec/typhoeus/request/marshal_spec.rb +62 -0
- data/spec/typhoeus/request/memoizable_spec.rb +34 -0
- data/spec/typhoeus/request/operations_spec.rb +70 -0
- data/spec/typhoeus/request/responseable_spec.rb +13 -0
- data/spec/typhoeus/request/stubbable_spec.rb +27 -0
- data/spec/typhoeus/request_spec.rb +131 -0
- data/spec/typhoeus/response/header_spec.rb +97 -0
- data/spec/typhoeus/response/informations_spec.rb +218 -0
- data/spec/typhoeus/response/status_spec.rb +218 -0
- data/spec/typhoeus/response_spec.rb +81 -0
- data/spec/typhoeus_spec.rb +105 -0
- data/typhoeus.gemspec +25 -0
- metadata +101 -27
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Rack::Typhoeus::Middleware::ParamsDecoder" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
require "rack/typhoeus"
|
7
|
+
end
|
8
|
+
|
9
|
+
let(:app) do
|
10
|
+
stub
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:env) do
|
14
|
+
stub
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:klass) do
|
18
|
+
Rack::Typhoeus::Middleware::ParamsDecoder
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#call" do
|
22
|
+
end
|
23
|
+
|
24
|
+
context "when requesting" do
|
25
|
+
let(:response) { Typhoeus.get("localhost:3001", :params => {:x => [:a]}) }
|
26
|
+
|
27
|
+
it "transforms parameters" do
|
28
|
+
expect(response.body).to include("query_hash\":{\"x\":[\"a\"]}")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
3
|
+
|
4
|
+
require "bundler"
|
5
|
+
Bundler.setup
|
6
|
+
require "typhoeus"
|
7
|
+
require "rspec"
|
8
|
+
|
9
|
+
if defined? require_relative
|
10
|
+
require_relative 'support/localhost_server.rb'
|
11
|
+
require_relative 'support/server.rb'
|
12
|
+
else
|
13
|
+
require 'support/localhost_server.rb'
|
14
|
+
require 'support/server.rb'
|
15
|
+
end
|
16
|
+
|
17
|
+
RSpec.configure do |config|
|
18
|
+
config.order = :rand
|
19
|
+
|
20
|
+
config.before(:suite) do
|
21
|
+
LocalhostServer.new(TESTSERVER.new, 3001)
|
22
|
+
end
|
23
|
+
|
24
|
+
config.after do
|
25
|
+
Typhoeus::Pool.clear
|
26
|
+
Typhoeus::Expectation.clear
|
27
|
+
Typhoeus.before.clear
|
28
|
+
Typhoeus.on_complete.clear
|
29
|
+
Typhoeus.on_success.clear
|
30
|
+
Typhoeus.on_failure.clear
|
31
|
+
Typhoeus::Config.verbose = false
|
32
|
+
Typhoeus::Config.block_connection = false
|
33
|
+
Typhoeus::Config.memoize = false
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'rack'
|
2
|
+
require 'rack/handler/webrick'
|
3
|
+
require 'net/http'
|
4
|
+
|
5
|
+
# The code for this is inspired by Capybara's server:
|
6
|
+
# http://github.com/jnicklas/capybara/blob/0.3.9/lib/capybara/server.rb
|
7
|
+
class LocalhostServer
|
8
|
+
READY_MESSAGE = "Server ready"
|
9
|
+
|
10
|
+
class Identify
|
11
|
+
def initialize(app)
|
12
|
+
@app = app
|
13
|
+
end
|
14
|
+
|
15
|
+
def call(env)
|
16
|
+
if env["PATH_INFO"] == "/__identify__"
|
17
|
+
[200, {}, [LocalhostServer::READY_MESSAGE]]
|
18
|
+
else
|
19
|
+
@app.call(env)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
attr_reader :port
|
25
|
+
|
26
|
+
def initialize(rack_app, port = nil)
|
27
|
+
@port = port || find_available_port
|
28
|
+
@rack_app = rack_app
|
29
|
+
concurrently { boot }
|
30
|
+
wait_until(10, "Boot failed.") { booted? }
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def find_available_port
|
36
|
+
server = TCPServer.new('127.0.0.1', 0)
|
37
|
+
server.addr[1]
|
38
|
+
ensure
|
39
|
+
server.close if server
|
40
|
+
end
|
41
|
+
|
42
|
+
def boot
|
43
|
+
# Use WEBrick since it's part of the ruby standard library and is available on all ruby interpreters.
|
44
|
+
options = { :Port => port }
|
45
|
+
options.merge!(:AccessLog => [], :Logger => WEBrick::BasicLog.new(StringIO.new)) unless ENV['VERBOSE_SERVER']
|
46
|
+
Rack::Handler::WEBrick.run(Identify.new(@rack_app), options)
|
47
|
+
end
|
48
|
+
|
49
|
+
def booted?
|
50
|
+
res = ::Net::HTTP.get_response("localhost", '/__identify__', port)
|
51
|
+
if res.is_a?(::Net::HTTPSuccess) or res.is_a?(::Net::HTTPRedirection)
|
52
|
+
return res.body == READY_MESSAGE
|
53
|
+
end
|
54
|
+
rescue Errno::ECONNREFUSED, Errno::EBADF
|
55
|
+
return false
|
56
|
+
end
|
57
|
+
|
58
|
+
def concurrently
|
59
|
+
if should_use_subprocess?
|
60
|
+
pid = Process.fork do
|
61
|
+
trap(:INT) { ::Rack::Handler::WEBrick.shutdown }
|
62
|
+
yield
|
63
|
+
exit # manually exit; otherwise this sub-process will re-run the specs that haven't run yet.
|
64
|
+
end
|
65
|
+
|
66
|
+
at_exit do
|
67
|
+
Process.kill('INT', pid)
|
68
|
+
begin
|
69
|
+
Process.wait(pid)
|
70
|
+
rescue Errno::ECHILD
|
71
|
+
# ignore this error...I think it means the child process has already exited.
|
72
|
+
end
|
73
|
+
end
|
74
|
+
else
|
75
|
+
Thread.new { yield }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def should_use_subprocess?
|
80
|
+
# !ENV['THREADED']
|
81
|
+
false
|
82
|
+
end
|
83
|
+
|
84
|
+
def wait_until(timeout, error_message, &block)
|
85
|
+
start_time = Time.now
|
86
|
+
|
87
|
+
while true
|
88
|
+
return if yield
|
89
|
+
raise TimeoutError.new(error_message) if (Time.now - start_time) > timeout
|
90
|
+
sleep(0.05)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
@@ -0,0 +1,108 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'json'
|
3
|
+
require 'zlib'
|
4
|
+
require 'sinatra/base'
|
5
|
+
require 'rack/typhoeus'
|
6
|
+
|
7
|
+
TESTSERVER = Sinatra.new do
|
8
|
+
set :logging, false
|
9
|
+
use Rack::Typhoeus::Middleware::ParamsDecoder
|
10
|
+
|
11
|
+
fail_count = 0
|
12
|
+
|
13
|
+
post '/file' do
|
14
|
+
{
|
15
|
+
'content-type' => params[:file][:type],
|
16
|
+
'filename' => params[:file][:filename],
|
17
|
+
'content' => params[:file][:tempfile].read,
|
18
|
+
'request-content-type' => request.env['CONTENT_TYPE']
|
19
|
+
}.to_json
|
20
|
+
end
|
21
|
+
|
22
|
+
get '/multiple-headers' do
|
23
|
+
[200, { 'Set-Cookie' => %w[ foo bar ], 'Content-Type' => 'text/plain' }, ['']]
|
24
|
+
end
|
25
|
+
|
26
|
+
get '/fail/:number' do
|
27
|
+
if fail_count >= params[:number].to_i
|
28
|
+
"ok"
|
29
|
+
else
|
30
|
+
fail_count += 1
|
31
|
+
error 500, "oh noes!"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
get '/fail_forever' do
|
36
|
+
error 500, "oh noes!"
|
37
|
+
end
|
38
|
+
|
39
|
+
get '/redirect' do
|
40
|
+
redirect '/'
|
41
|
+
end
|
42
|
+
|
43
|
+
get '/bad_redirect' do
|
44
|
+
redirect '/bad_redirect'
|
45
|
+
end
|
46
|
+
|
47
|
+
get '/auth_basic/:username/:password' do
|
48
|
+
@auth ||= Rack::Auth::Basic::Request.new(request.env)
|
49
|
+
# Check that we've got a basic auth, and that it's credentials match the ones
|
50
|
+
# provided in the request
|
51
|
+
if @auth.provided? && @auth.basic? && @auth.credentials == [ params[:username], params[:password] ]
|
52
|
+
# auth is valid - confirm it
|
53
|
+
true
|
54
|
+
else
|
55
|
+
# invalid auth - request the authentication
|
56
|
+
response['WWW-Authenticate'] = %(Basic realm="Testing HTTP Auth")
|
57
|
+
throw(:halt, [401, "Not authorized\n"])
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
get '/auth_ntlm' do
|
62
|
+
# we're just checking for the existence if NTLM auth header here. It's validation
|
63
|
+
# is too troublesome and really doesn't bother is much, it's up to libcurl to make
|
64
|
+
# it valid
|
65
|
+
response['WWW-Authenticate'] = 'NTLM'
|
66
|
+
is_ntlm_auth = /^NTLM/ =~ request.env['HTTP_AUTHORIZATION']
|
67
|
+
true if is_ntlm_auth
|
68
|
+
throw(:halt, [401, "Not authorized\n"]) if !is_ntlm_auth
|
69
|
+
end
|
70
|
+
|
71
|
+
get '/gzipped' do
|
72
|
+
req_env = request.env.to_json
|
73
|
+
z = Zlib::Deflate.new
|
74
|
+
gzipped_env = z.deflate(req_env, Zlib::FINISH)
|
75
|
+
z.close
|
76
|
+
response['Content-Encoding'] = 'gzip'
|
77
|
+
gzipped_env
|
78
|
+
end
|
79
|
+
|
80
|
+
get '/**' do
|
81
|
+
sleep params["delay"].to_i if params.has_key?("delay")
|
82
|
+
request.env.merge!(:body => request.body.read).to_json
|
83
|
+
end
|
84
|
+
|
85
|
+
head '/**' do
|
86
|
+
sleep params["delay"].to_i if params.has_key?("delay")
|
87
|
+
end
|
88
|
+
|
89
|
+
put '/**' do
|
90
|
+
request.env.merge!(:body => request.body.read).to_json
|
91
|
+
end
|
92
|
+
|
93
|
+
post '/**' do
|
94
|
+
request.env.merge!(:body => request.body.read).to_json
|
95
|
+
end
|
96
|
+
|
97
|
+
delete '/**' do
|
98
|
+
request.env.merge!(:body => request.body.read).to_json
|
99
|
+
end
|
100
|
+
|
101
|
+
patch '/**' do
|
102
|
+
request.env.merge!(:body => request.body.read).to_json
|
103
|
+
end
|
104
|
+
|
105
|
+
options '/**' do
|
106
|
+
request.env.merge!(:body => request.body.read).to_json
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,245 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'typhoeus/adapters/faraday'
|
3
|
+
|
4
|
+
describe Faraday::Adapter::Typhoeus do
|
5
|
+
let(:base_url) { "http://localhost:3001" }
|
6
|
+
let(:adapter) { described_class.new }
|
7
|
+
let(:request) { Typhoeus::Request.new(base_url) }
|
8
|
+
let(:conn) do
|
9
|
+
Faraday.new(:url => base_url) do |faraday|
|
10
|
+
faraday.adapter :typhoeus
|
11
|
+
end
|
12
|
+
end
|
13
|
+
let(:response) { conn.get("/") }
|
14
|
+
|
15
|
+
context "when parallel" do
|
16
|
+
it "returns a faraday response" do
|
17
|
+
response = nil
|
18
|
+
conn.in_parallel { response = conn.get("/") }
|
19
|
+
expect(response).to be_a(Faraday::Response)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "succeeds" do
|
23
|
+
response = nil
|
24
|
+
conn.in_parallel { response = conn.get("/") }
|
25
|
+
expect(response.status).to be(200)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "when not parallel" do
|
30
|
+
it "returns a faraday response" do
|
31
|
+
expect(response).to be_a(Faraday::Response)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "succeeds" do
|
35
|
+
expect(response.status).to be(200)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#perform_request" do
|
40
|
+
let(:env) { {} }
|
41
|
+
|
42
|
+
context "when body" do
|
43
|
+
let(:env) { { :body => double(:read => "body") } }
|
44
|
+
|
45
|
+
it "reads body" do
|
46
|
+
expect(adapter.method(:read_body).call(env)).to eq("body")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context "parallel_manager" do
|
51
|
+
context "when given" do
|
52
|
+
let(:env) { { :parallel_manager => double(:queue => true), :ssl => {}, :request => {} } }
|
53
|
+
|
54
|
+
it "uses" do
|
55
|
+
adapter.method(:perform_request).call(env)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "when not given" do
|
60
|
+
let(:env) { { :method => :get, :ssl => {}, :request => {} } }
|
61
|
+
|
62
|
+
it "falls back to single" do
|
63
|
+
Typhoeus::Request.should_receive(:new).and_return(double(:options => {}, :on_complete => [], :run => true))
|
64
|
+
adapter.method(:perform_request).call(env)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "#request" do
|
71
|
+
let(:env) do
|
72
|
+
{ :url => "url", :method => :get, :body => "body", :request_headers => {}, :ssl => {}, :request => {} }
|
73
|
+
end
|
74
|
+
|
75
|
+
let(:request) { adapter.method(:request).call(env) }
|
76
|
+
|
77
|
+
it "returns request" do
|
78
|
+
expect(request).to be_a(Typhoeus::Request)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "sets url" do
|
82
|
+
expect(request.base_url).to eq("url")
|
83
|
+
end
|
84
|
+
|
85
|
+
it "sets http method" do
|
86
|
+
expect(request.original_options[:method]).to eq(:get)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "sets body" do
|
90
|
+
expect(request.original_options[:body]).to eq("body")
|
91
|
+
end
|
92
|
+
|
93
|
+
it "sets headers" do
|
94
|
+
expect(request.original_options[:headers]).to eq({})
|
95
|
+
end
|
96
|
+
|
97
|
+
it "sets on_complete callback" do
|
98
|
+
expect(request.on_complete).to have(1).items
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "#configure_socket" do
|
103
|
+
let(:env) { { :request => { :bind => { :host => "interface" } } } }
|
104
|
+
|
105
|
+
before { adapter.method(:configure_socket).call(request, env) }
|
106
|
+
|
107
|
+
context "when host" do
|
108
|
+
it "sets interface" do
|
109
|
+
expect(request.options[:interface]).to eq("interface")
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "#configure_timeout" do
|
115
|
+
before { adapter.method(:configure_timeout).call(request, env) }
|
116
|
+
|
117
|
+
context "when timeout" do
|
118
|
+
let(:env) { { :request => { :timeout => 1 } } }
|
119
|
+
|
120
|
+
it "sets timeout_ms" do
|
121
|
+
expect(request.options[:timeout_ms]).to eq(1000)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
context "when open_timeout" do
|
126
|
+
let(:env) { { :request => { :open_timeout => 1 } } }
|
127
|
+
|
128
|
+
it "sets connecttimeout_ms" do
|
129
|
+
expect(request.options[:connecttimeout_ms]).to eq(1000)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe "#configure_proxy" do
|
135
|
+
before { adapter.method(:configure_proxy).call(request, env) }
|
136
|
+
|
137
|
+
context "when proxy" do
|
138
|
+
let(:env) { { :request => { :proxy => { :uri => double(:host => "localhost", :port => "3001") } } } }
|
139
|
+
|
140
|
+
it "sets proxy" do
|
141
|
+
expect(request.options[:proxy]).to eq("localhost:3001")
|
142
|
+
end
|
143
|
+
|
144
|
+
context "when username and password" do
|
145
|
+
let(:env) do
|
146
|
+
{ :request => { :proxy => {
|
147
|
+
:uri => double(:host => :a, :port => :b),
|
148
|
+
:username => "a",
|
149
|
+
:password => "b"
|
150
|
+
} } }
|
151
|
+
end
|
152
|
+
|
153
|
+
it "sets proxyuserpwd" do
|
154
|
+
expect(request.options[:proxyuserpwd]).to eq("a:b")
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
describe "#configure_ssl" do
|
161
|
+
before { adapter.method(:configure_ssl).call(request, env) }
|
162
|
+
|
163
|
+
context "when version" do
|
164
|
+
let(:env) { { :ssl => { :version => "a" } } }
|
165
|
+
|
166
|
+
it "sets sslversion" do
|
167
|
+
expect(request.options[:sslversion]).to eq("a")
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
context "when client_cert" do
|
172
|
+
let(:env) { { :ssl => { :client_cert => "a" } } }
|
173
|
+
|
174
|
+
it "sets sslcert" do
|
175
|
+
expect(request.options[:sslcert]).to eq("a")
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
context "when client_key" do
|
180
|
+
let(:env) { { :ssl => { :client_key => "a" } } }
|
181
|
+
|
182
|
+
it "sets sslkey" do
|
183
|
+
expect(request.options[:sslkey]).to eq("a")
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
context "when ca_file" do
|
188
|
+
let(:env) { { :ssl => { :ca_file => "a" } } }
|
189
|
+
|
190
|
+
it "sets cainfo" do
|
191
|
+
expect(request.options[:cainfo]).to eq("a")
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
context "when ca_path" do
|
196
|
+
let(:env) { { :ssl => { :ca_path => "a" } } }
|
197
|
+
|
198
|
+
it "sets capath" do
|
199
|
+
expect(request.options[:capath]).to eq("a")
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
context "when verify is false" do
|
204
|
+
let(:env) { { :ssl => { :verify => false } } }
|
205
|
+
|
206
|
+
it "sets ssl_verifyhost to 0" do
|
207
|
+
expect(request.options[:ssl_verifyhost]).to eq(0)
|
208
|
+
end
|
209
|
+
|
210
|
+
it "sets ssl_verifypeer to false" do
|
211
|
+
expect(request.options[:ssl_verifypeer]).to be_false
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
context "when verify is true" do
|
216
|
+
let(:env) { { :ssl => { :verify => true } } }
|
217
|
+
|
218
|
+
it "sets ssl_verifyhost to 2" do
|
219
|
+
expect(request.options[:ssl_verifyhost]).to eq(2)
|
220
|
+
end
|
221
|
+
|
222
|
+
it "sets ssl_verifypeer to true" do
|
223
|
+
expect(request.options[:ssl_verifypeer]).to be_true
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
describe "#parallel?" do
|
229
|
+
context "when parallel_manager" do
|
230
|
+
let(:env) { { :parallel_manager => true } }
|
231
|
+
|
232
|
+
it "returns true" do
|
233
|
+
expect(adapter.method(:parallel?).call(env)).to be_true
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
context "when no parallel_manager" do
|
238
|
+
let(:env) { { :parallel_manager => nil } }
|
239
|
+
|
240
|
+
it "returns false" do
|
241
|
+
expect(adapter.method(:parallel?).call(env)).to be_false
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|