diff options
| -rw-r--r-- | lib/rubygems/gemcutter_utilities.rb | 2 | ||||
| -rw-r--r-- | test/rubygems/test_gem_commands_signin_command.rb | 32 | ||||
| -rw-r--r-- | test/rubygems/test_gem_gemcutter_utilities.rb | 2 |
3 files changed, 35 insertions, 1 deletions
diff --git a/lib/rubygems/gemcutter_utilities.rb b/lib/rubygems/gemcutter_utilities.rb index 80d70c5c90..2779880121 100644 --- a/lib/rubygems/gemcutter_utilities.rb +++ b/lib/rubygems/gemcutter_utilities.rb @@ -271,6 +271,8 @@ module Gem::GemcutterUtilities end def get_mfa_params(email, password) + return {} unless self.host == Gem::DEFAULT_HOST + mfa_level = get_user_mfa_level(email, password) params = {} if mfa_level == "ui_only" || mfa_level == "ui_and_gem_signin" diff --git a/test/rubygems/test_gem_commands_signin_command.rb b/test/rubygems/test_gem_commands_signin_command.rb index bdd7690c41..524378f200 100644 --- a/test/rubygems/test_gem_commands_signin_command.rb +++ b/test/rubygems/test_gem_commands_signin_command.rb @@ -159,6 +159,38 @@ class TestGemCommandsSigninCommand < Gem::TestCase assert_equal api_key, credentials[:rubygems_api_key] end + def test_execute_on_gemserver_without_profile_me_endpoint + host = 'http://some-gemcutter-compatible-host.org' + + email = 'you@example.com' + password = 'secret' + api_key = '1234' + fetcher = Gem::RemoteFetcher.fetcher + + key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny" + + # Set the expected response for the Web-API supplied + ENV['RUBYGEMS_HOST'] = host + data_key = "#{ENV['RUBYGEMS_HOST']}/api/v1/api_key" + fetcher.data[data_key] = [api_key, 200, 'OK'] + + use_ui key_name_ui do + @cmd.execute + end + + user = ENV["USER"] || ENV["USERNAME"] + + assert_match "API Key name [#{Socket.gethostname}-#{user}", key_name_ui.output + assert_match "index_rubygems [y/N]", key_name_ui.output + assert_match "push_rubygem [y/N]", key_name_ui.output + assert_match "yank_rubygem [y/N]", key_name_ui.output + assert_match "add_owner [y/N]", key_name_ui.output + assert_match "remove_owner [y/N]", key_name_ui.output + assert_match "access_webhooks [y/N]", key_name_ui.output + assert_match "show_dashboard [y/N]", key_name_ui.output + assert_equal "name=test-key&push_rubygem=true", fetcher.last_request.body + end + # Utility method to capture IO/UI within the block passed def util_capture(ui_stub = nil, host = nil, api_key = nil, fetcher = Gem::FakeFetcher.new, mfa_level = "disabled") diff --git a/test/rubygems/test_gem_gemcutter_utilities.rb b/test/rubygems/test_gem_gemcutter_utilities.rb index 2e3e598ef4..b3d105d3ad 100644 --- a/test/rubygems/test_gem_gemcutter_utilities.rb +++ b/test/rubygems/test_gem_gemcutter_utilities.rb @@ -239,7 +239,7 @@ class TestGemGemcutterUtilities < Gem::TestCase @fetcher = Gem::FakeFetcher.new @fetcher.data["#{host}/api/v1/api_key"] = response - @fetcher.data["#{host}/api/v1/profile"] = profile_response + @fetcher.data["#{host}/api/v1/profile/me"] = profile_response Gem::RemoteFetcher.fetcher = @fetcher @sign_in_ui = Gem::MockGemUi.new("#{email}\n#{password}\n\n\n\n\n\n\n\n\n" + extra_input) |
