[前][次][番号順一覧][スレッド一覧]

ruby-changes:71644

From: Ashley <ko1@a...>
Date: Wed, 6 Apr 2022 08:55:16 +0900 (JST)
Subject: [ruby-changes:71644] bb3ecdba6a (master): [rubygems/rubygems] Accomodate gem hosts without profile/me endpoint

https://git.ruby-lang.org/ruby.git/commit/?id=bb3ecdba6a

From bb3ecdba6a48e9c82b651e74debcec1a10081126 Mon Sep 17 00:00:00 2001
From: Ashley Ellis Pierce <anellis12@g...>
Date: Thu, 24 Feb 2022 15:16:32 +0000
Subject: [rubygems/rubygems] Accomodate gem hosts without profile/me endpoint

https://github.com/rubygems/rubygems/commit/31b6dcf5d3
---
 lib/rubygems/gemcutter_utilities.rb               |  2 ++
 test/rubygems/test_gem_commands_signin_command.rb | 32 +++++++++++++++++++++++
 test/rubygems/test_gem_gemcutter_utilities.rb     |  2 +-
 3 files changed, 35 insertions(+), 1 deletion(-)

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 https://github.com/ruby/ruby/blob/trunk/lib/rubygems/gemcutter_utilities.rb#L271
   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 https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_commands_signin_command.rb#L159
     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@e...'
+    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 https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_gemcutter_utilities.rb#L239
 
     @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)
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]