Hello community,
here is the log from the commit of package rubygem-httpclient for
openSUSE:Factory checked in at 2016-08-25 09:54:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-httpclient (Old)
and /work/SRC/openSUSE:Factory/.rubygem-httpclient.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-httpclient"
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-httpclient/rubygem-httpclient.changes
2016-05-29 03:13:19.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.rubygem-httpclient.new/rubygem-httpclient.changes
2016-08-25 09:55:02.000000000 +0200
@@ -1,0 +2,6 @@
+Mon Aug 8 04:38:16 UTC 2016 - [email protected]
+
+- updated to version 2.8.1
+ no changelog found
+
+-------------------------------------------------------------------
Old:
----
httpclient-2.8.0.gem
New:
----
httpclient-2.8.1.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-httpclient.spec ++++++
--- /var/tmp/diff_new_pack.FfPROd/_old 2016-08-25 09:55:03.000000000 +0200
+++ /var/tmp/diff_new_pack.FfPROd/_new 2016-08-25 09:55:03.000000000 +0200
@@ -24,7 +24,7 @@
#
Name: rubygem-httpclient
-Version: 2.8.0
+Version: 2.8.1
Release: 0
%define mod_name httpclient
%define mod_full_name %{mod_name}-%{version}
++++++ httpclient-2.8.0.gem -> httpclient-2.8.1.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bin/httpclient new/bin/httpclient
--- old/bin/httpclient 2016-04-24 08:08:06.000000000 +0200
+++ new/bin/httpclient 2016-08-07 09:30:27.000000000 +0200
@@ -20,6 +20,7 @@
url = ARGV.shift
if method && url
client = HTTPClient.new
+ client.strict_response_size_check = true
if method == 'download'
print client.get_content(url)
else
@@ -37,6 +38,7 @@
class Runner
def initialize
@httpclient = HTTPClient.new
+ @httpclient.strict_response_size_check = true
end
def method_missing(msg, *a, &b)
Files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/httpclient/http.rb new/lib/httpclient/http.rb
--- old/lib/httpclient/http.rb 2016-04-24 08:08:06.000000000 +0200
+++ new/lib/httpclient/http.rb 2016-08-07 09:30:27.000000000 +0200
@@ -700,8 +700,9 @@
def params_from_file(value)
params = {}
+ original_filename = value.respond_to?(:original_filename) ?
value.original_filename : nil
path = value.respond_to?(:path) ? value.path : nil
- params['filename'] = File.basename(path || '')
+ params['filename'] = original_filename || File.basename(path || '')
# Creation time is not available from File::Stat
if value.respond_to?(:mtime)
params['modification-date'] = value.mtime.rfc822
@@ -808,6 +809,8 @@
case path
when /\.txt$/i
'text/plain'
+ when /\.xml$/i
+ 'text/xml'
when /\.(htm|html)$/i
'text/html'
when /\.doc$/i
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/httpclient/jruby_ssl_socket.rb
new/lib/httpclient/jruby_ssl_socket.rb
--- old/lib/httpclient/jruby_ssl_socket.rb 2016-04-24 08:08:06.000000000
+0200
+++ new/lib/httpclient/jruby_ssl_socket.rb 2016-08-07 09:30:27.000000000
+0200
@@ -289,11 +289,11 @@
@keystore.load(nil)
end
- def add(cert_file, key_file, password)
- cert_str = cert_file.respond_to?(:to_pem) ? cert_file.to_pem :
File.read(cert_file.to_s)
+ def add(cert_source, key_source, password)
+ cert_str = cert_source.respond_to?(:to_pem) ? cert_source.to_pem :
File.read(cert_source.to_s)
cert = PEMUtils.read_certificate(cert_str)
@keystore.setCertificateEntry('client_cert', cert)
- key_str = key_file.respond_to?(:to_pem) ? key_file.to_pem :
File.read(key_file.to_s)
+ key_str = key_source.respond_to?(:to_pem) ? key_source.to_pem :
File.read(key_source.to_s)
key_pair = PEMUtils.read_private_key(key_str, password)
@keystore.setKeyEntry('client_key', key_pair.getPrivate, PASSWORD,
[cert].to_java(Certificate))
end
@@ -312,20 +312,21 @@
@size = 0
end
- def add(file_or_dir)
- return if file_or_dir == :default
- if File.directory?(file_or_dir)
- warn("#{file_or_dir}: directory not yet supported")
+ def add(cert_source)
+ return if cert_source == :default
+ if cert_source.respond_to?(:to_pem)
+ pem = cert_source.to_pem
+ elsif File.directory?(cert_source)
+ warn("#{cert_source}: directory not yet supported")
+ return
else
pem = nil
- File.read(file_or_dir).each_line do |line|
+ File.read(cert_source).each_line do |line|
case line
when /-----BEGIN CERTIFICATE-----/
pem = ''
when /-----END CERTIFICATE-----/
- cert = PEMUtils.read_certificate(pem)
- @size += 1
- @trust_store.setCertificateEntry("cert_#{@size}", cert)
+ break
else
if pem
pem << line
@@ -333,6 +334,9 @@
end
end
end
+ cert = PEMUtils.read_certificate(pem)
+ @size += 1
+ @trust_store.setCertificateEntry("cert_#{@size}", cert)
end
def trust_store
@@ -442,12 +446,12 @@
new(socket, session.dest, session.ssl_config, session.debug_dev)
end
- DEFAULT_SSL_PROTOCOL = 'TLS'
+ DEFAULT_SSL_PROTOCOL =
(java.lang.System.getProperty('java.specification.version') == '1.7') ?
'TLSv1.2' : 'TLS'
def initialize(socket, dest, config, debug_dev = nil)
if config.ssl_version == :auto
ssl_version = DEFAULT_SSL_PROTOCOL
else
- ssl_version = config.ssl_version.to_s.gsub(/_/, '.')
+ ssl_version = config.ssl_version.to_s.tr('_', '.')
end
unless config.cert_store_crl_items.empty?
raise NotImplementedError.new('Manual CRL configuration is not yet
supported')
@@ -464,7 +468,7 @@
trust_store = nil
verify_callback = config.verify_callback ||
config.method(:default_verify_callback)
- if config.verify_mode == nil
+ if !config.verify?
tmf = VerifyNoneTrustManagerFactory.new(verify_callback)
else
tmf = SystemTrustManagerFactory.new(verify_callback)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/httpclient/session.rb
new/lib/httpclient/session.rb
--- old/lib/httpclient/session.rb 2016-04-24 08:08:06.000000000 +0200
+++ new/lib/httpclient/session.rb 2016-08-07 09:30:27.000000000 +0200
@@ -115,6 +115,9 @@
attr_accessor :read_block_size
attr_accessor :protocol_retry_count
+ # Raise BadResponseError if response size does not match with
Content-Length header in response.
+ attr_accessor :strict_response_size_check
+
# Local address to bind local side of the socket to
attr_accessor :socket_local
@@ -148,6 +151,7 @@
@test_loopback_http_response = []
@transparent_gzip_decompression = false
+ @strict_response_size_check = false
@socket_local = Site.new
@sess_pool = {}
@@ -221,6 +225,7 @@
sess.protocol_retry_count = @protocol_retry_count
sess.ssl_config = @ssl_config
sess.debug_dev = @debug_dev
+ sess.strict_response_size_check = @strict_response_size_check
sess.socket_local = @socket_local
sess.test_loopback_http_response = @test_loopback_http_response
sess.transparent_gzip_decompression = @transparent_gzip_decompression
@@ -444,6 +449,7 @@
attr_accessor :read_block_size
attr_accessor :protocol_retry_count
+ attr_accessor :strict_response_size_check
attr_accessor :socket_local
attr_accessor :ssl_config
@@ -473,6 +479,7 @@
@ssl_peer_cert = nil
@test_loopback_http_response = nil
+ @strict_response_size_check = false
@socket_local = Site::EMPTY
@agent_name = agent_name
@@ -871,6 +878,9 @@
rescue EOFError
close
buf = nil
+ if @strict_response_size_check
+ raise BadResponseError.new("EOF while reading rest
#{@content_length} bytes")
+ end
end
end
if buf && buf.bytesize > 0
@@ -887,18 +897,18 @@
def read_body_chunked(&block)
buf = empty_bin_str
while true
- len = @socket.gets(RS)
- if len.nil? # EOF
- close
- return
- end
- @chunk_length = len.hex
- if @chunk_length == 0
- @content_length = 0
- @socket.gets(RS)
- return
- end
::Timeout.timeout(@receive_timeout, ReceiveTimeoutError) do
+ len = @socket.gets(RS)
+ if len.nil? # EOF
+ close
+ return
+ end
+ @chunk_length = len.hex
+ if @chunk_length == 0
+ @content_length = 0
+ @socket.gets(RS)
+ return
+ end
@socket.read(@chunk_length, buf)
@socket.read(2)
end
@@ -920,6 +930,9 @@
@socket.readpartial(@read_block_size, buf)
rescue EOFError
buf = nil
+ if @strict_response_size_check
+ raise BadResponseError.new("EOF while reading chunked response")
+ end
end
end
if buf && buf.bytesize > 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/httpclient/ssl_config.rb
new/lib/httpclient/ssl_config.rb
--- old/lib/httpclient/ssl_config.rb 2016-04-24 08:08:06.000000000 +0200
+++ new/lib/httpclient/ssl_config.rb 2016-08-07 09:30:27.000000000 +0200
@@ -36,7 +36,30 @@
# then add_trust_ca for that purpose.
class SSLConfig
include HTTPClient::Util
- include OpenSSL if SSLEnabled
+ if SSLEnabled
+ include OpenSSL
+
+ module ::OpenSSL
+ module X509
+ class Store
+ attr_reader :_httpclient_cert_store_items
+
+ def initialize(*a, &b)
+ super(*a, &b)
+ @_httpclient_cert_store_items = [ENV['SSL_CERT_FILE'] ||
:default]
+ end
+
+ [:add_cert, :add_file, :add_path].each do |m|
+ wrapped = instance_method(m)
+ define_method(m) do |cert|
+ wrapped.bind(self).call(cert)
+ @_httpclient_cert_store_items << cert
+ end
+ end
+ end
+ end
+ end
+ end
CIPHERS_DEFAULT = "ALL:!aNULL:!eNULL:!SSLv2" # OpenSSL >1.0.0 default
@@ -89,7 +112,7 @@
attr_reader :client_ca # :nodoc:
# These array keeps original files/dirs that was added to @cert_store
- attr_reader :cert_store_items
+ def cert_store_items; @cert_store._httpclient_cert_store_items; end
attr_reader :cert_store_crl_items
# Creates a SSLConfig.
@@ -97,7 +120,6 @@
return unless SSLEnabled
@client = client
@cert_store = X509::Store.new
- @cert_store_items = [:default]
@cert_store_crl_items = []
@client_cert = @client_key = @client_ca = nil
@verify_mode = SSL::VERIFY_PEER | SSL::VERIFY_FAIL_IF_NO_PEER_CERT
@@ -170,7 +192,6 @@
@cacerts_loaded = true # avoid lazy override
@cert_store = X509::Store.new
@cert_store.set_default_paths
- @cert_store_items = [ENV['SSL_CERT_FILE'] || :default]
change_notify
end
@@ -181,7 +202,7 @@
def clear_cert_store
@cacerts_loaded = true # avoid lazy override
@cert_store = X509::Store.new
- @cert_store_items.clear
+ @cert_store._httpclient_cert_store_items.clear
change_notify
end
@@ -192,7 +213,6 @@
def cert_store=(cert_store)
@cacerts_loaded = true # avoid lazy override
@cert_store = cert_store
- @cert_store_items.clear
change_notify
end
@@ -209,7 +229,6 @@
end
@cacerts_loaded = true # avoid lazy override
add_trust_ca_to_store(@cert_store, trust_ca_file_or_hashed_dir)
- @cert_store_items << trust_ca_file_or_hashed_dir
change_notify
end
alias set_trust_ca add_trust_ca
@@ -308,6 +327,10 @@
change_notify
end
+ def verify?
+ @verify_mode && (@verify_mode & OpenSSL::SSL::VERIFY_PEER != 0)
+ end
+
# interfaces for SSLSocket.
def set_context(ctx) # :nodoc:
load_trust_ca unless @cacerts_loaded
@@ -445,11 +468,7 @@
def load_cacerts(cert_store)
ver = OpenSSL::OPENSSL_VERSION
file = File.join(File.dirname(__FILE__), 'cacert.pem')
- unless defined?(JRuby)
- # JRuby uses @cert_store_items
- add_trust_ca_to_store(cert_store, file)
- end
- @cert_store_items << file
+ add_trust_ca_to_store(cert_store, file)
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/httpclient/version.rb
new/lib/httpclient/version.rb
--- old/lib/httpclient/version.rb 2016-04-24 08:08:06.000000000 +0200
+++ new/lib/httpclient/version.rb 2016-08-07 09:30:27.000000000 +0200
@@ -1,3 +1,3 @@
class HTTPClient
- VERSION = '2.8.0'
+ VERSION = '2.8.1'
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/httpclient/webagent-cookie.rb
new/lib/httpclient/webagent-cookie.rb
--- old/lib/httpclient/webagent-cookie.rb 2016-04-24 08:08:06.000000000
+0200
+++ new/lib/httpclient/webagent-cookie.rb 2016-08-07 09:30:27.000000000
+0200
@@ -342,7 +342,7 @@
cookie.domain_orig = given.domain
cookie.path_orig = given.path
- if cookie.discard? || cookie.expires == nil
+ if cookie.discard? || cookie.expires.nil?
cookie.discard = true
else
cookie.discard = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/httpclient.rb new/lib/httpclient.rb
--- old/lib/httpclient.rb 2016-04-24 08:08:06.000000000 +0200
+++ new/lib/httpclient.rb 2016-08-07 09:30:27.000000000 +0200
@@ -309,7 +309,6 @@
if assignable
aname = name + '='
define_method(aname) { |rhs|
- reset_all
@session_manager.__send__(aname, rhs)
}
end
@@ -365,6 +364,9 @@
attr_proxy(:test_loopback_http_response)
# Decompress a compressed (with gzip or deflate) content body transparently.
false by default.
attr_proxy(:transparent_gzip_decompression, true)
+ # Raise BadResponseError if response size does not match with Content-Length
header in response. false by default.
+ # TODO: enable by default
+ attr_proxy(:strict_response_size_check, true)
# Local socket address. Set HTTPClient#socket_local.host and
HTTPClient#socket_local.port to specify local binding hostname and port of TCP
socket.
attr_proxy(:socket_local, true)
@@ -844,13 +846,7 @@
end
uri = to_resource_url(uri)
if block
- if block.arity == 1
- filtered_block = proc { |res, str|
- block.call(str)
- }
- else
- filtered_block = block
- end
+ filtered_block = adapt_block(&block)
end
if follow_redirect
follow_redirect(method, uri, query, body, header, &block)
@@ -1082,11 +1078,17 @@
ENV[name.downcase] || ENV[name.upcase]
end
+ def adapt_block(&block)
+ return block if block.arity == 2
+ proc { |r, str| block.call(str) }
+ end
+
def follow_redirect(method, uri, query, body, header, &block)
uri = to_resource_url(uri)
if block
+ b = adapt_block(&block)
filtered_block = proc { |r, str|
- block.call(str) if r.ok?
+ b.call(r, str) if r.ok?
}
end
if HTTP::Message.file?(body)
@@ -1270,6 +1272,7 @@
return
end
piper, pipew = IO.pipe
+ pipew.binmode
res = HTTP::Message.new_response(piper, req.header)
@debug_dev << "= Request\n\n" if @debug_dev
sess = @session_manager.query(req, proxy)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/oauthclient.rb new/lib/oauthclient.rb
--- old/lib/oauthclient.rb 2016-04-24 08:08:06.000000000 +0200
+++ new/lib/oauthclient.rb 2016-08-07 09:30:27.000000000 +0200
@@ -33,6 +33,7 @@
@oauth_config = HTTPClient::OAuth::Config.new
self.www_auth.oauth.set_config(nil, @oauth_config)
self.www_auth.oauth.challenge(nil)
+ self.strict_response_size_check = true
end
# Get request token.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2016-04-24 08:08:06.000000000 +0200
+++ new/metadata 2016-08-07 09:30:27.000000000 +0200
@@ -1,14 +1,14 @@
--- !ruby/object:Gem::Specification
name: httpclient
version: !ruby/object:Gem::Version
- version: 2.8.0
+ version: 2.8.1
platform: ruby
authors:
- Hiroshi Nakamura
autorequire:
bindir: bin
cert_chain: []
-date: 2016-04-24 00:00:00.000000000 Z
+date: 2016-08-07 00:00:00.000000000 Z
dependencies: []
description:
email: [email protected]
@@ -103,7 +103,7 @@
version: '0'
requirements: []
rubyforge_project:
-rubygems_version: 2.5.1
+rubygems_version: 2.4.5.1
signing_key:
specification_version: 4
summary: gives something like the functionality of libwww-perl (LWP) in Ruby
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/test_auth.rb new/test/test_auth.rb
--- old/test/test_auth.rb 2016-04-24 08:08:06.000000000 +0200
+++ new/test/test_auth.rb 2016-08-07 09:30:27.000000000 +0200
@@ -2,7 +2,6 @@
require 'digest/md5'
require 'rack'
require 'rack/lint'
-require 'rack/showexceptions'
require 'rack-ntlm'
class TestAuth < Test::Unit::TestCase
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/test_http-access2.rb
new/test/test_http-access2.rb
--- old/test/test_http-access2.rb 2016-04-24 08:08:06.000000000 +0200
+++ new/test/test_http-access2.rb 2016-08-07 09:30:27.000000000 +0200
@@ -347,11 +347,13 @@
def test_receive_timeout
# this test takes 2 sec
assert_equal('hello', @client.get_content(serverurl + 'sleep?sec=2'))
+ @client.reset_all
@client.receive_timeout = 1
assert_equal('hello', @client.get_content(serverurl + 'sleep?sec=0'))
assert_raise(HTTPClient::ReceiveTimeoutError) do
@client.get_content(serverurl + 'sleep?sec=2')
end
+ @client.reset_all
@client.receive_timeout = 3
assert_equal('hello', @client.get_content(serverurl + 'sleep?sec=2'))
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/test_httpclient.rb new/test/test_httpclient.rb
--- old/test/test_httpclient.rb 2016-04-24 08:08:06.000000000 +0200
+++ new/test/test_httpclient.rb 2016-08-07 09:30:27.000000000 +0200
@@ -609,10 +609,12 @@
assert_not_equal('hello', content)
assert_equal(GZIP_CONTENT, content)
@client.transparent_gzip_decompression = true
+ @client.reset_all
assert_equal('hello', @client.get_content(serverurl +
'compressed?enc=gzip'))
assert_equal('hello', @client.get_content(serverurl +
'compressed?enc=deflate'))
assert_equal('hello', @client.get_content(serverurl +
'compressed?enc=deflate_noheader'))
@client.transparent_gzip_decompression = false
+ @client.reset_all
end
def test_get_content_with_block
@@ -765,6 +767,22 @@
assert_equal(1000*1000, res.content.read.length)
end
+ if RUBY_VERSION > "1.9"
+ def test_post_async_with_default_internal
+ original_encoding = Encoding.default_internal
+ Encoding.default_internal = Encoding::UTF_8
+ begin
+ post_body = StringIO.new("こんにちは")
+ conn = @client.post_async(serverurl + 'servlet', post_body)
+ Thread.pass while !conn.finished?
+ res = conn.pop
+ assert_equal 'post,こんにちは', res.content.read
+ ensure
+ Encoding.default_internal = original_encoding
+ end
+ end
+ end
+
def test_get_with_block
called = false
res = @client.get(serverurl + 'servlet') { |str|
@@ -788,6 +806,29 @@
assert_nil(res.content)
end
+ def test_get_with_block_and_redirects
+ called = false
+ res = @client.get(serverurl + 'servlet', :follow_redirect => true) { |str|
+ assert_equal('get', str)
+ called = true
+ }
+ assert(called)
+ # res does not have a content
+ assert_nil(res.content)
+ end
+
+ def test_get_with_block_arity_2_and_redirects
+ called = false
+ res = @client.get(serverurl + 'servlet', :follow_redirect => true) {
|blk_res, str|
+ assert_equal(200, blk_res.status)
+ assert_equal('get', str)
+ called = true
+ }
+ assert(called)
+ # res does not have a content
+ assert_nil(res.content)
+ end
+
def test_get_with_block_string_recycle
@client.read_block_size = 2
body = []
@@ -1032,6 +1073,10 @@
def test_post_with_custom_multipart_and_file
STDOUT.sync = true
File.open(__FILE__) do |file|
+ def file.original_filename
+ 'file.txt'
+ end
+
ext = { 'Content-Type' => 'multipart/alternative' }
body = [{ 'Content-Type' => 'text/plain', :content => "this is only a
test" },
{ 'Content-Type' => 'application/x-ruby', :content => file }]
@@ -1039,6 +1084,7 @@
assert_match(/^Content-Type: text\/plain\r\n/m, res.content)
assert_match(/^this is only a test\r\n/m, res.content)
assert_match(/^Content-Type: application\/x-ruby\r\n/m, res.content)
+ assert_match(/Content-Disposition: form-data; name="3";
filename="file.txt"/, res.content)
assert_match(/FIND_TAG_IN_THIS_FILE/, res.content)
end
end
@@ -1311,11 +1357,13 @@
# this test takes 2 sec
assert_equal('hello?sec=2', @client.get_content(serverurl + 'sleep?sec=2'))
@client.receive_timeout = 1
+ @client.reset_all
assert_equal('hello?sec=0', @client.get_content(serverurl + 'sleep?sec=0'))
assert_raise(HTTPClient::ReceiveTimeoutError) do
@client.get_content(serverurl + 'sleep?sec=2')
end
@client.receive_timeout = 3
+ @client.reset_all
assert_equal('hello?sec=2', @client.get_content(serverurl + 'sleep?sec=2'))
end
@@ -1323,11 +1371,13 @@
# this test takes 2 sec
assert_equal('hello', @client.post(serverurl + 'sleep', :sec => 2).content)
@client.receive_timeout = 1
+ @client.reset_all
assert_equal('hello', @client.post(serverurl + 'sleep', :sec => 0).content)
assert_raise(HTTPClient::ReceiveTimeoutError) do
@client.post(serverurl + 'sleep', :sec => 2)
end
@client.receive_timeout = 3
+ @client.reset_all
assert_equal('hello', @client.post(serverurl + 'sleep', :sec => 2).content)
end
@@ -1486,6 +1536,7 @@
assert_equal('text/plain', HTTP::Message.mime_type('foo.txt'))
assert_equal('text/html', HTTP::Message.mime_type('foo.html'))
assert_equal('text/html', HTTP::Message.mime_type('foo.htm'))
+ assert_equal('text/xml', HTTP::Message.mime_type('foo.xml'))
assert_equal('application/msword', HTTP::Message.mime_type('foo.doc'))
assert_equal('image/png', HTTP::Message.mime_type('foo.png'))
assert_equal('image/gif', HTTP::Message.mime_type('foo.gif'))
@@ -1779,6 +1830,19 @@
end
end
+ def test_strict_response_size_check
+ @client.strict_response_size_check = false
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\r\nContent-Length:
12345\r\n\r\nhello world"
+ assert_equal('hello world', @client.get_content('http://dummy'))
+
+ @client.reset_all
+ @client.strict_response_size_check = true
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\r\nContent-Length:
12345\r\n\r\nhello world"
+ assert_raise(HTTPClient::BadResponseError) do
+ @client.get_content('http://dummy')
+ end
+ end
+
def test_socket_local
@client.socket_local.host = '127.0.0.1'
assert_equal('hello', @client.get_content(serverurl + 'hello'))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/test/test_ssl.rb new/test/test_ssl.rb
--- old/test/test_ssl.rb 2016-04-24 08:08:06.000000000 +0200
+++ new/test/test_ssl.rb 2016-08-07 09:30:27.000000000 +0200
@@ -149,6 +149,22 @@
#
cfg.verify_mode = nil
assert_equal("hello", @client.get_content(@url))
+ cfg.verify_mode = OpenSSL::SSL::VERIFY_NONE
+ assert_equal("hello", @client.get_content(@url))
+ end
+
+ def test_cert_store
+ cfg = @client.ssl_config
+ cfg.cert_store.add_cert(cert('ca.cert'))
+ begin
+ @client.get(@url)
+ assert(false)
+ rescue OpenSSL::SSL::SSLError => ssle
+ assert_match(/(certificate verify failed|unable to find valid
certification path to requested target)/, ssle.message)
+ end
+ #
+ cfg.cert_store.add_cert(cert('subca.cert'))
+ assert_equal("hello", @client.get_content(@url))
end
if defined?(HTTPClient::JRubySSLSocket)
@@ -237,7 +253,7 @@
def test_use_higher_TLS
omit('TODO: it does not pass with Java 7 or old openssl ')
teardown_server
- setup_server_with_ssl_version(:TLSv1_2)
+ setup_server_with_ssl_version('TLSv1_2')
assert_nothing_raised do
@client.ssl_config.verify_mode = nil
@client.get("https://localhost:#{serverport}/hello")
@@ -288,6 +304,10 @@
end
def setup_server_with_ssl_version(ssl_version)
+ # JRubyOpenSSL does not support "TLSv1_2" as an known version, and some
JCE provides TLS v1.2 as "TLSv1.2" not "TLSv1_2"
+ if RUBY_ENGINE == 'jruby' && ['TLSv1_1', 'TLSv1_2'].include?(ssl_version)
+ ssl_version = ssl_version.tr('_', '.')
+ end
logger = Logger.new(STDERR)
logger.level = Logger::Severity::FATAL # avoid logging SSLError (ERROR
level)
@server = WEBrick::HTTPServer.new(