aboutsummaryrefslogtreecommitdiffstats
path: root/test/rubygems/test_gem_request.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-04 00:48:31 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-04 00:48:31 +0000
commitea2a00d785576a7dc45c0f6e965de605929e889d (patch)
tree567e52888b17aacb404c59eb64519d927fb8894f /test/rubygems/test_gem_request.rb
parentbd950a75b512a7d6243d1f0bb5e944a06a2e1f94 (diff)
downloadruby-ea2a00d785576a7dc45c0f6e965de605929e889d.tar.gz
* lib/rubygems: Update to RubyGems 2.2.2 prerelease to check fixes to
CI. * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44799 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_request.rb')
-rw-r--r--test/rubygems/test_gem_request.rb69
1 files changed, 69 insertions, 0 deletions
diff --git a/test/rubygems/test_gem_request.rb b/test/rubygems/test_gem_request.rb
index 04ff50786f..bcbbcf1f99 100644
--- a/test/rubygems/test_gem_request.rb
+++ b/test/rubygems/test_gem_request.rb
@@ -1,9 +1,16 @@
require 'rubygems/test_case'
require 'rubygems/request'
require 'ostruct'
+require 'base64'
class TestGemRequest < Gem::TestCase
+ CA_CERT_FILE = cert_path 'ca'
+ CHILD_CERT = load_cert 'child'
+ PUBLIC_CERT = load_cert 'public'
+ PUBLIC_CERT_FILE = cert_path 'public'
+ SSL_CERT = load_cert 'ssl'
+
def setup
@proxies = %w[http_proxy HTTP_PROXY http_proxy_user HTTP_PROXY_USER http_proxy_pass HTTP_PROXY_PASS no_proxy NO_PROXY]
@old_proxies = @proxies.map {|k| ENV[k] }
@@ -62,6 +69,44 @@ class TestGemRequest < Gem::TestCase
assert_equal URI(@proxy_uri), proxy
end
+ def test_configure_connection_for_https
+ connection = Net::HTTP.new 'localhost', 443
+
+ request = Gem::Request.new URI('https://example'), nil, nil, nil
+
+ def request.add_rubygems_trusted_certs store
+ store.add_cert TestGemRequest::PUBLIC_CERT
+ end
+
+ request.configure_connection_for_https connection
+
+ cert_store = connection.cert_store
+
+ assert cert_store.verify CHILD_CERT
+ end
+
+ def test_configure_connection_for_https_ssl_ca_cert
+ ssl_ca_cert, Gem.configuration.ssl_ca_cert =
+ Gem.configuration.ssl_ca_cert, CA_CERT_FILE
+
+ connection = Net::HTTP.new 'localhost', 443
+
+ request = Gem::Request.new URI('https://example'), nil, nil, nil
+
+ def request.add_rubygems_trusted_certs store
+ store.add_cert TestGemRequest::PUBLIC_CERT
+ end
+
+ request.configure_connection_for_https connection
+
+ cert_store = connection.cert_store
+
+ assert cert_store.verify CHILD_CERT
+ assert cert_store.verify SSL_CERT
+ ensure
+ Gem.configuration.ssl_ca_cert = ssl_ca_cert
+ end
+
def test_get_proxy_from_env_fallback
ENV['http_proxy'] = @proxy_uri
@@ -124,6 +169,30 @@ class TestGemRequest < Gem::TestCase
assert_equal :junk, response.body
end
+ def test_fetch_basic_auth
+ uri = URI.parse "https://user:pass@example.rubygems/specs.#{Gem.marshal_version}"
+ @request = Gem::Request.new(uri, Net::HTTP::Get, nil, nil)
+ conn = util_stub_connection_for :body => :junk, :code => 200
+
+ @request.fetch
+
+ auth_header = conn.payload['Authorization']
+
+ assert_equal "Basic #{Base64.encode64('user:pass')}".strip, auth_header
+ end
+
+ def test_fetch_basic_auth_encoded
+ uri = URI.parse "https://user:%7BDEScede%7Dpass@example.rubygems/specs.#{Gem.marshal_version}"
+ @request = Gem::Request.new(uri, Net::HTTP::Get, nil, nil)
+ conn = util_stub_connection_for :body => :junk, :code => 200
+
+ @request.fetch
+
+ auth_header = conn.payload['Authorization']
+
+ assert_equal "Basic #{Base64.encode64('user:{DEScede}pass')}".strip, auth_header
+ end
+
def test_fetch_head
uri = URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}"
@request = Gem::Request.new(uri, Net::HTTP::Get, nil, nil)