summaryrefslogtreecommitdiff
path: root/test/rubygems
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-10-30 06:32:48 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-10-30 06:32:48 +0000
commit9a21c28426e1021afd0f4d7314d707d578f60256 (patch)
treead567ed7fe9d9cb24c9877070cad689a90cd8f15 /test/rubygems
parentf4b623f780b0688ebc4c99e8c27203d3e950f014 (diff)
* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update
rubygems to 2.6.8. Release note of 2.6.8: https://github.com/rubygems/rubygems/commit/9fb8880976f5ab998912898b091d88aa10eb1d4a git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems')
-rw-r--r--test/rubygems/test_gem_request.rb132
-rw-r--r--test/rubygems/test_gem_specification.rb9
2 files changed, 140 insertions, 1 deletions
diff --git a/test/rubygems/test_gem_request.rb b/test/rubygems/test_gem_request.rb
index a44b6d9d13..46a49a6943 100644
--- a/test/rubygems/test_gem_request.rb
+++ b/test/rubygems/test_gem_request.rb
@@ -8,6 +8,7 @@ class TestGemRequest < Gem::TestCase
CA_CERT_FILE = cert_path 'ca'
CHILD_CERT = load_cert 'child'
+ EXPIRED_CERT = load_cert 'expired'
PUBLIC_CERT = load_cert 'public'
PUBLIC_CERT_FILE = cert_path 'public'
SSL_CERT = load_cert 'ssl'
@@ -311,6 +312,136 @@ class TestGemRequest < Gem::TestCase
util_restore_version
end
+ def test_verify_certificate
+ store = OpenSSL::X509::Store.new
+ context = OpenSSL::X509::StoreContext.new store
+ context.error = OpenSSL::X509::V_ERR_OUT_OF_MEM
+
+ use_ui @ui do
+ Gem::Request.verify_certificate context
+ end
+
+ assert_equal "ERROR: SSL verification error at depth 0: out of memory (17)\n",
+ @ui.error
+ end
+
+ def test_verify_certificate_extra_message
+ store = OpenSSL::X509::Store.new
+ context = OpenSSL::X509::StoreContext.new store
+ context.error = OpenSSL::X509::V_ERR_INVALID_CA
+
+ use_ui @ui do
+ Gem::Request.verify_certificate context
+ end
+
+ expected = <<-ERROR
+ERROR: SSL verification error at depth 0: invalid CA certificate (24)
+ERROR: Certificate is an invalid CA certificate
+ ERROR
+
+ assert_equal expected, @ui.error
+ end
+
+ def test_verify_certificate_message_CERT_HAS_EXPIRED
+ error_number = OpenSSL::X509::V_ERR_CERT_HAS_EXPIRED
+
+ message =
+ Gem::Request.verify_certificate_message error_number, EXPIRED_CERT
+
+ assert_equal "Certificate #{EXPIRED_CERT.subject} expired at #{EXPIRED_CERT.not_before.iso8601}",
+ message
+ end
+
+ def test_verify_certificate_message_CERT_NOT_YET_VALID
+ error_number = OpenSSL::X509::V_ERR_CERT_NOT_YET_VALID
+
+ message =
+ Gem::Request.verify_certificate_message error_number, EXPIRED_CERT
+
+ assert_equal "Certificate #{EXPIRED_CERT.subject} not valid until #{EXPIRED_CERT.not_before.iso8601}",
+ message
+ end
+
+ def test_verify_certificate_message_CERT_REJECTED
+ error_number = OpenSSL::X509::V_ERR_CERT_REJECTED
+
+ message =
+ Gem::Request.verify_certificate_message error_number, CHILD_CERT
+
+ assert_equal "Certificate #{CHILD_CERT.subject} is rejected",
+ message
+ end
+
+ def test_verify_certificate_message_CERT_UNTRUSTED
+ error_number = OpenSSL::X509::V_ERR_CERT_UNTRUSTED
+
+ message =
+ Gem::Request.verify_certificate_message error_number, CHILD_CERT
+
+ assert_equal "Certificate #{CHILD_CERT.subject} is not trusted",
+ message
+ end
+
+ def test_verify_certificate_message_DEPTH_ZERO_SELF_SIGNED_CERT
+ error_number = OpenSSL::X509::V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT
+
+ message =
+ Gem::Request.verify_certificate_message error_number, CHILD_CERT
+
+ assert_equal "Certificate #{CHILD_CERT.issuer} is not trusted",
+ message
+ end
+
+ def test_verify_certificate_message_INVALID_CA
+ error_number = OpenSSL::X509::V_ERR_INVALID_CA
+
+ message =
+ Gem::Request.verify_certificate_message error_number, CHILD_CERT
+
+ assert_equal "Certificate #{CHILD_CERT.subject} is an invalid CA certificate",
+ message
+ end
+
+ def test_verify_certificate_message_INVALID_PURPOSE
+ error_number = OpenSSL::X509::V_ERR_INVALID_PURPOSE
+
+ message =
+ Gem::Request.verify_certificate_message error_number, CHILD_CERT
+
+ assert_equal "Certificate #{CHILD_CERT.subject} has an invalid purpose",
+ message
+ end
+
+ def test_verify_certificate_message_SELF_SIGNED_CERT_IN_CHAIN
+ error_number = OpenSSL::X509::V_ERR_SELF_SIGNED_CERT_IN_CHAIN
+
+ message =
+ Gem::Request.verify_certificate_message error_number, EXPIRED_CERT
+
+ assert_equal "Root certificate is not trusted (#{EXPIRED_CERT.subject})",
+ message
+ end
+
+ def test_verify_certificate_message_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
+ error_number = OpenSSL::X509::V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
+
+ message =
+ Gem::Request.verify_certificate_message error_number, EXPIRED_CERT
+
+ assert_equal "You must add #{EXPIRED_CERT.issuer} to your local trusted store",
+ message
+ end
+
+ def test_verify_certificate_message_UNABLE_TO_VERIFY_LEAF_SIGNATURE
+ error_number = OpenSSL::X509::V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE
+
+ message =
+ Gem::Request.verify_certificate_message error_number, EXPIRED_CERT
+
+ assert_equal "You must add #{EXPIRED_CERT.issuer} to your local trusted store",
+ message
+ end
+
def util_restore_version
Object.send :remove_const, :RUBY_ENGINE if defined?(RUBY_ENGINE)
Object.send :const_set, :RUBY_ENGINE, @orig_RUBY_ENGINE if
@@ -344,6 +475,7 @@ class TestGemRequest < Gem::TestCase
def new *args; self; end
def use_ssl=(bool); end
+ def verify_callback=(setting); end
def verify_mode=(setting); end
def cert_store=(setting); end
def start; end
diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb
index 46828e05ad..4131a376c9 100644
--- a/test/rubygems/test_gem_specification.rb
+++ b/test/rubygems/test_gem_specification.rb
@@ -3080,7 +3080,7 @@ Did you mean 'Ruby'?
end
end
- err = 'specification_version must be an Integer (did you mean version?)'
+ err = 'specification_version must be a Integer (did you mean version?)'
assert_equal err, e.message
end
end
@@ -3389,6 +3389,13 @@ end
end
end
+ def test_find_by_name_with_only_prereleases
+ q = util_spec "q", "2.a"
+ install_specs q
+
+ assert Gem::Specification.find_by_name "q"
+ end
+
def test_find_by_name_prerelease
b = util_spec "b", "2.a"