summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_remote_fetcher.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/rubygems/test_gem_remote_fetcher.rb')
-rw-r--r--test/rubygems/test_gem_remote_fetcher.rb64
1 files changed, 56 insertions, 8 deletions
diff --git a/test/rubygems/test_gem_remote_fetcher.rb b/test/rubygems/test_gem_remote_fetcher.rb
index 1eed0c7670..dfef55c7ca 100644
--- a/test/rubygems/test_gem_remote_fetcher.rb
+++ b/test/rubygems/test_gem_remote_fetcher.rb
@@ -731,10 +731,9 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
assert_equal "murphy", fetcher.fetch_path(@server_uri)
end
- def test_fetch_s3
+ def assert_fetch_s3(url)
fetcher = Gem::RemoteFetcher.new nil
@fetcher = fetcher
- url = 's3://testuser:testpass@my-bucket/gems/specs.4.8.gz'
$fetched_uri = nil
def fetcher.request(uri, request_class, last_modified = nil)
@@ -756,15 +755,64 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
$fetched_uri = nil
end
- def test_fetch_s3_no_creds
+ def test_fetch_s3_config_creds
+ Gem.configuration[:s3_source] = {
+ 'my-bucket' => {:id => 'testuser', :secret => 'testpass'}
+ }
+ url = 's3://my-bucket/gems/specs.4.8.gz'
+ assert_fetch_s3 url
+ ensure
+ Gem.configuration[:s3_source] = nil
+ end
+
+ def test_fetch_s3_url_creds
+ url = 's3://testuser:testpass@my-bucket/gems/specs.4.8.gz'
+ assert_fetch_s3 url
+ end
+
+ def refute_fetch_s3(url, expected_message)
fetcher = Gem::RemoteFetcher.new nil
@fetcher = fetcher
- url = 's3://my-bucket/gems/specs.4.8.gz'
+
e = assert_raises Gem::RemoteFetcher::FetchError do
fetcher.fetch_s3 URI.parse(url)
end
- assert_match "credentials needed", e.message
+ assert_match expected_message, e.message
+ end
+
+ def test_fetch_s3_no_source_key
+ url = 's3://my-bucket/gems/specs.4.8.gz'
+ refute_fetch_s3 url, 'no s3_source key exists in .gemrc'
+ end
+
+ def test_fetch_s3_no_host
+ Gem.configuration[:s3_source] = {
+ 'my-bucket' => {:id => 'testuser', :secret => 'testpass'}
+ }
+
+ url = 's3://other-bucket/gems/specs.4.8.gz'
+ refute_fetch_s3 url, 'no key for host other-bucket in s3_source in .gemrc'
+ ensure
+ Gem.configuration[:s3_source] = nil
+ end
+
+ def test_fetch_s3_no_id
+ Gem.configuration[:s3_source] = { 'my-bucket' => {:secret => 'testpass'} }
+
+ url = 's3://my-bucket/gems/specs.4.8.gz'
+ refute_fetch_s3 url, 's3_source for my-bucket missing id or secret'
+ ensure
+ Gem.configuration[:s3_source] = nil
+ end
+
+ def test_fetch_s3_no_secret
+ Gem.configuration[:s3_source] = { 'my-bucket' => {:id => 'testuser'} }
+
+ url = 's3://my-bucket/gems/specs.4.8.gz'
+ refute_fetch_s3 url, 's3_source for my-bucket missing id or secret'
+ ensure
+ Gem.configuration[:s3_source] = nil
end
def test_observe_no_proxy_env_single_host
@@ -846,9 +894,9 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
with_configured_fetcher(
":ssl_ca_cert: #{temp_ca_cert}\n" +
":ssl_client_cert: #{temp_client_cert}\n") do |fetcher|
- assert_raises Gem::RemoteFetcher::FetchError do
- fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml")
- end
+ assert_raises Gem::RemoteFetcher::FetchError do
+ fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml")
+ end
end
end