[rubygems/rubygems] Run test/rubygems/test_bundled_ca.rb locally

It's not that slow.

https://github.com/rubygems/rubygems/commit/9b928a4503
This commit is contained in:
David Rodríguez 2020-06-29 18:37:55 +02:00 committed by Hiroshi SHIBATA
parent ed3794495d
commit d3efba0950
Notes: git 2020-07-31 21:08:19 +09:00

View File

@ -8,50 +8,48 @@ require 'rubygems/request'
# The tested hosts are explained in detail here: https://github.com/rubygems/rubygems/commit/5e16a5428f973667cabfa07e94ff939e7a83ebd9
#
if ENV["CI"]
class TestBundledCA < Gem::TestCase
THIS_FILE = File.expand_path __FILE__
class TestBundledCA < Gem::TestCase
THIS_FILE = File.expand_path __FILE__
def bundled_certificate_store
store = OpenSSL::X509::Store.new
def bundled_certificate_store
store = OpenSSL::X509::Store.new
ssl_cert_glob =
File.expand_path '../../../lib/rubygems/ssl_certs/*/*.pem', THIS_FILE
ssl_cert_glob =
File.expand_path '../../../lib/rubygems/ssl_certs/*/*.pem', THIS_FILE
Dir[ssl_cert_glob].each do |ssl_cert|
store.add_file ssl_cert
end
store
Dir[ssl_cert_glob].each do |ssl_cert|
store.add_file ssl_cert
end
def assert_https(host)
self.assertions += 1
http = Net::HTTP.new(host, 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.cert_store = bundled_certificate_store
http.get('/')
rescue Errno::ENOENT, Errno::ETIMEDOUT, SocketError
skip "#{host} seems offline, I can't tell whether ssl would work."
rescue OpenSSL::SSL::SSLError => e
# Only fail for certificate verification errors
if e.message =~ /certificate verify failed/
flunk "#{host} is not verifiable using the included certificates. Error was: #{e.message}"
end
raise
end
store
end
def test_accessing_rubygems
assert_https('rubygems.org')
def assert_https(host)
self.assertions += 1
http = Net::HTTP.new(host, 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.cert_store = bundled_certificate_store
http.get('/')
rescue Errno::ENOENT, Errno::ETIMEDOUT, SocketError
skip "#{host} seems offline, I can't tell whether ssl would work."
rescue OpenSSL::SSL::SSLError => e
# Only fail for certificate verification errors
if e.message =~ /certificate verify failed/
flunk "#{host} is not verifiable using the included certificates. Error was: #{e.message}"
end
raise
end
def test_accessing_fastly
assert_https('rubygems.global.ssl.fastly.net')
end
def test_accessing_rubygems
assert_https('rubygems.org')
end
def test_accessing_new_index
assert_https('fastly.rubygems.org')
end
def test_accessing_fastly
assert_https('rubygems.global.ssl.fastly.net')
end
def test_accessing_new_index
assert_https('fastly.rubygems.org')
end
end