[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 # The tested hosts are explained in detail here: https://github.com/rubygems/rubygems/commit/5e16a5428f973667cabfa07e94ff939e7a83ebd9
# #
if ENV["CI"] class TestBundledCA < Gem::TestCase
class TestBundledCA < Gem::TestCase THIS_FILE = File.expand_path __FILE__
THIS_FILE = File.expand_path __FILE__
def bundled_certificate_store def bundled_certificate_store
store = OpenSSL::X509::Store.new store = OpenSSL::X509::Store.new
ssl_cert_glob = ssl_cert_glob =
File.expand_path '../../../lib/rubygems/ssl_certs/*/*.pem', THIS_FILE File.expand_path '../../../lib/rubygems/ssl_certs/*/*.pem', THIS_FILE
Dir[ssl_cert_glob].each do |ssl_cert| Dir[ssl_cert_glob].each do |ssl_cert|
store.add_file ssl_cert store.add_file ssl_cert
end
store
end end
def assert_https(host) store
self.assertions += 1 end
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_rubygems def assert_https(host)
assert_https('rubygems.org') 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 end
raise
end
def test_accessing_fastly def test_accessing_rubygems
assert_https('rubygems.global.ssl.fastly.net') assert_https('rubygems.org')
end end
def test_accessing_new_index def test_accessing_fastly
assert_https('fastly.rubygems.org') assert_https('rubygems.global.ssl.fastly.net')
end end
def test_accessing_new_index
assert_https('fastly.rubygems.org')
end end
end end