diff options
Diffstat (limited to 'test/rubygems/test_gem_request.rb')
-rw-r--r-- | test/rubygems/test_gem_request.rb | 121 |
1 files changed, 57 insertions, 64 deletions
diff --git a/test/rubygems/test_gem_request.rb b/test/rubygems/test_gem_request.rb index aba9dc5447..5e9b264dac 100644 --- a/test/rubygems/test_gem_request.rb +++ b/test/rubygems/test_gem_request.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true + require_relative "helper" require "rubygems/request" require "ostruct" -require "base64" unless Gem::HAVE_OPENSSL warn "Skipping Gem::Request tests. openssl not found." @@ -20,6 +20,12 @@ class TestGemRequest < Gem::TestCase Gem::Request.create_with_proxy uri, request_class, last_modified, proxy end + # This method is same code as Base64.encode64 + # We should not use Base64.encode64 because we need to avoid gem activation. + def base64_encode64(bin) + [bin].pack("m") + end + def setup @proxies = %w[http_proxy https_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] } @@ -28,7 +34,7 @@ class TestGemRequest < Gem::TestCase super @proxy_uri = "http://localhost:1234" - @uri = URI("http://example") + @uri = Gem::URI("http://example") @request = make_request @uri, nil, nil, nil end @@ -50,7 +56,7 @@ class TestGemRequest < Gem::TestCase def test_initialize_proxy_URI proxy_uri = "http://proxy.example.com" - request = make_request @uri, nil, nil, URI(proxy_uri) + request = make_request @uri, nil, nil, Gem::URI(proxy_uri) assert_equal proxy_uri, request.proxy_uri.to_s end @@ -71,18 +77,18 @@ class TestGemRequest < Gem::TestCase def test_initialize_proxy_ENV_https ENV["https_proxy"] = @proxy_uri - request = make_request URI("https://example"), nil, nil, nil + request = make_request Gem::URI("https://example"), nil, nil, nil proxy = request.proxy_uri - assert_equal URI(@proxy_uri), proxy + assert_equal Gem::URI(@proxy_uri), proxy end def test_proxy_ENV ENV["http_proxy"] = "http://proxy" ENV["https_proxy"] = "" - request = make_request URI("https://example"), nil, nil, nil + request = make_request Gem::URI("https://example"), nil, nil, nil proxy = request.proxy_uri @@ -90,13 +96,13 @@ class TestGemRequest < Gem::TestCase end def test_configure_connection_for_https - connection = Net::HTTP.new "localhost", 443 + connection = Gem::Net::HTTP.new "localhost", 443 request = Class.new(Gem::Request) do def self.get_cert_files [TestGemRequest::PUBLIC_CERT_FILE] end - end.create_with_proxy URI("https://example"), nil, nil, nil + end.create_with_proxy Gem::URI("https://example"), nil, nil, nil Gem::Request.configure_connection_for_https connection, request.cert_files @@ -106,16 +112,16 @@ class TestGemRequest < Gem::TestCase 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 + ssl_ca_cert = Gem.configuration.ssl_ca_cert + Gem.configuration.ssl_ca_cert = CA_CERT_FILE - connection = Net::HTTP.new "localhost", 443 + connection = Gem::Net::HTTP.new "localhost", 443 request = Class.new(Gem::Request) do def self.get_cert_files [TestGemRequest::PUBLIC_CERT_FILE] end - end.create_with_proxy URI("https://example"), nil, nil, nil + end.create_with_proxy Gem::URI("https://example"), nil, nil, nil Gem::Request.configure_connection_for_https connection, request.cert_files @@ -132,17 +138,17 @@ class TestGemRequest < Gem::TestCase request = make_request @uri, nil, nil, nil proxy = request.proxy_uri - assert_equal URI(@proxy_uri), proxy + assert_equal Gem::URI(@proxy_uri), proxy end def test_get_proxy_from_env_https ENV["https_proxy"] = @proxy_uri - uri = URI("https://example") + uri = Gem::URI("https://example") request = make_request uri, nil, nil, nil proxy = request.proxy_uri - assert_equal URI(@proxy_uri), proxy + assert_equal Gem::URI(@proxy_uri), proxy end def test_get_proxy_from_env_domain @@ -185,9 +191,9 @@ class TestGemRequest < Gem::TestCase end def test_fetch - uri = Gem::Uri.new(URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}") - response = util_stub_net_http(:body => :junk, :code => 200) do - @request = make_request(uri, Net::HTTP::Get, nil, nil) + uri = Gem::Uri.new(Gem::URI.parse("#{@gem_repo}/specs.#{Gem.marshal_version}")) + response = util_stub_net_http(body: :junk, code: 200) do + @request = make_request(uri, Gem::Net::HTTP::Get, nil, nil) @request.fetch end @@ -198,58 +204,58 @@ class TestGemRequest < Gem::TestCase def test_fetch_basic_auth Gem.configuration.verbose = :really - uri = Gem::Uri.new(URI.parse "https://user:pass@example.rubygems/specs.#{Gem.marshal_version}") - conn = util_stub_net_http(:body => :junk, :code => 200) do |c| + uri = Gem::Uri.new(Gem::URI.parse("https://user:pass@example.rubygems/specs.#{Gem.marshal_version}")) + conn = util_stub_net_http(body: :junk, code: 200) do |c| use_ui @ui do - @request = make_request(uri, Net::HTTP::Get, nil, nil) + @request = make_request(uri, Gem::Net::HTTP::Get, nil, nil) @request.fetch end c end auth_header = conn.payload["Authorization"] - assert_equal "Basic #{Base64.encode64('user:pass')}".strip, auth_header + assert_equal "Basic #{base64_encode64("user:pass")}".strip, auth_header assert_includes @ui.output, "GET https://user:REDACTED@example.rubygems/specs.#{Gem.marshal_version}" end def test_fetch_basic_auth_encoded Gem.configuration.verbose = :really - uri = Gem::Uri.new(URI.parse "https://user:%7BDEScede%7Dpass@example.rubygems/specs.#{Gem.marshal_version}") + uri = Gem::Uri.new(Gem::URI.parse("https://user:%7BDEScede%7Dpass@example.rubygems/specs.#{Gem.marshal_version}")) - conn = util_stub_net_http(:body => :junk, :code => 200) do |c| + conn = util_stub_net_http(body: :junk, code: 200) do |c| use_ui @ui do - @request = make_request(uri, Net::HTTP::Get, nil, nil) + @request = make_request(uri, Gem::Net::HTTP::Get, nil, nil) @request.fetch end c end auth_header = conn.payload["Authorization"] - assert_equal "Basic #{Base64.encode64('user:{DEScede}pass')}".strip, auth_header + assert_equal "Basic #{base64_encode64("user:{DEScede}pass")}".strip, auth_header assert_includes @ui.output, "GET https://user:REDACTED@example.rubygems/specs.#{Gem.marshal_version}" end def test_fetch_basic_oauth_encoded Gem.configuration.verbose = :really - uri = Gem::Uri.new(URI.parse "https://%7BDEScede%7Dpass:x-oauth-basic@example.rubygems/specs.#{Gem.marshal_version}") + uri = Gem::Uri.new(Gem::URI.parse("https://%7BDEScede%7Dpass:x-oauth-basic@example.rubygems/specs.#{Gem.marshal_version}")) - conn = util_stub_net_http(:body => :junk, :code => 200) do |c| + conn = util_stub_net_http(body: :junk, code: 200) do |c| use_ui @ui do - @request = make_request(uri, Net::HTTP::Get, nil, nil) + @request = make_request(uri, Gem::Net::HTTP::Get, nil, nil) @request.fetch end c end auth_header = conn.payload["Authorization"] - assert_equal "Basic #{Base64.encode64('{DEScede}pass:x-oauth-basic')}".strip, auth_header + assert_equal "Basic #{base64_encode64("{DEScede}pass:x-oauth-basic")}".strip, auth_header assert_includes @ui.output, "GET https://REDACTED:x-oauth-basic@example.rubygems/specs.#{Gem.marshal_version}" end def test_fetch_head - uri = Gem::Uri.new(URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}") - response = util_stub_net_http(:body => "", :code => 200) do |conn| - @request = make_request(uri, Net::HTTP::Get, nil, nil) + uri = Gem::Uri.new(Gem::URI.parse("#{@gem_repo}/specs.#{Gem.marshal_version}")) + response = util_stub_net_http(body: "", code: 200) do |_conn| + @request = make_request(uri, Gem::Net::HTTP::Get, nil, nil) @request.fetch end @@ -258,10 +264,10 @@ class TestGemRequest < Gem::TestCase end def test_fetch_unmodified - uri = Gem::Uri.new(URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}") + uri = Gem::Uri.new(Gem::URI.parse("#{@gem_repo}/specs.#{Gem.marshal_version}")) t = Time.utc(2013, 1, 2, 3, 4, 5) - conn, response = util_stub_net_http(:body => "", :code => 304) do |c| - @request = make_request(uri, Net::HTTP::Get, t, nil) + conn, response = util_stub_net_http(body: "", code: 304) do |c| + @request = make_request(uri, Gem::Net::HTTP::Get, t, nil) [c, @request.fetch] end @@ -280,7 +286,7 @@ class TestGemRequest < Gem::TestCase assert_match %r{RubyGems/#{Regexp.escape Gem::VERSION}}, ua assert_match %r{ #{Regexp.escape Gem::Platform.local.to_s} }, ua assert_match %r{Ruby/#{Regexp.escape RUBY_VERSION}}, ua - assert_match %r{\(#{Regexp.escape RUBY_RELEASE_DATE} }, ua + assert_match(/\(#{Regexp.escape RUBY_RELEASE_DATE} /, ua) end def test_user_agent_engine @@ -291,7 +297,7 @@ class TestGemRequest < Gem::TestCase ua = make_request(@uri, nil, nil, nil).user_agent - assert_match %r{\) vroom}, ua + assert_match(/\) vroom/, ua) ensure util_restore_version end @@ -304,7 +310,7 @@ class TestGemRequest < Gem::TestCase ua = make_request(@uri, nil, nil, nil).user_agent - assert_match %r{\)}, ua + assert_match(/\)/, ua) ensure util_restore_version end @@ -327,7 +333,7 @@ class TestGemRequest < Gem::TestCase Object.send :remove_const, :RUBY_PATCHLEVEL Object.send :const_set, :RUBY_PATCHLEVEL, -1 - Object.send :remove_const, :RUBY_REVISION if defined?(RUBY_REVISION) + Object.send :remove_const, :RUBY_REVISION Object.send :const_set, :RUBY_REVISION, 6 ua = make_request(@uri, nil, nil, nil).user_agent @@ -338,20 +344,6 @@ class TestGemRequest < Gem::TestCase util_restore_version end - def test_user_agent_revision_missing - util_save_version - - Object.send :remove_const, :RUBY_PATCHLEVEL - Object.send :const_set, :RUBY_PATCHLEVEL, -1 - Object.send :remove_const, :RUBY_REVISION if defined?(RUBY_REVISION) - - ua = make_request(@uri, nil, nil, nil).user_agent - - assert_match %r{\(#{Regexp.escape RUBY_RELEASE_DATE}\)}, ua - ensure - util_restore_version - end - def test_verify_certificate pend if Gem.java_platform? @@ -492,21 +484,19 @@ ERROR: Certificate is an invalid CA certificate def util_restore_version Object.send :remove_const, :RUBY_ENGINE - Object.send :const_set, :RUBY_ENGINE, @orig_RUBY_ENGINE if - defined?(@orig_RUBY_ENGINE) + Object.send :const_set, :RUBY_ENGINE, @orig_ruby_engine Object.send :remove_const, :RUBY_PATCHLEVEL - Object.send :const_set, :RUBY_PATCHLEVEL, @orig_RUBY_PATCHLEVEL + Object.send :const_set, :RUBY_PATCHLEVEL, @orig_ruby_patchlevel - Object.send :remove_const, :RUBY_REVISION if defined?(RUBY_REVISION) - Object.send :const_set, :RUBY_REVISION, @orig_RUBY_REVISION if - defined?(@orig_RUBY_REVISION) + Object.send :remove_const, :RUBY_REVISION + Object.send :const_set, :RUBY_REVISION, @orig_ruby_revision end def util_save_version - @orig_RUBY_ENGINE = RUBY_ENGINE - @orig_RUBY_PATCHLEVEL = RUBY_PATCHLEVEL - @orig_RUBY_REVISION = RUBY_REVISION if defined? RUBY_REVISION + @orig_ruby_engine = RUBY_ENGINE + @orig_ruby_patchlevel = RUBY_PATCHLEVEL + @orig_ruby_revision = RUBY_REVISION end def util_stub_net_http(hash) @@ -521,7 +511,10 @@ ERROR: Certificate is an invalid CA certificate class Conn attr_accessor :payload - def new(*args); self; end + def new(*args) + self + end + def use_ssl=(bool); end def verify_callback=(setting); end def verify_mode=(setting); end |