diff --git a/app/helpers/api_keys_helper.rb b/app/helpers/api_keys_helper.rb new file mode 100644 index 00000000000..05e4ad2b41b --- /dev/null +++ b/app/helpers/api_keys_helper.rb @@ -0,0 +1,7 @@ +module ApiKeysHelper + def gem_scope(api_key) + return if api_key.soft_deleted? + + api_key.rubygem ? api_key.rubygem.name : t("api_keys.all_gems") + end +end diff --git a/app/views/api_keys/index.html.erb b/app/views/api_keys/index.html.erb index 35a3988b164..e64fea53d2b 100644 --- a/app/views/api_keys/index.html.erb +++ b/app/views/api_keys/index.html.erb @@ -49,7 +49,7 @@ <% end %> - <%= api_key.rubygem&.name %> + <%= gem_scope(api_key) %> <%= time_ago_in_words(api_key.created_at) %> diff --git a/config/locales/de.yml b/config/locales/de.yml index fbbb730a06b..88ee22cc1f0 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -102,6 +102,7 @@ de: rubygem_scope_info: all_gems: invalid_key: + all_gems: clearance_mailer: change_password: title: diff --git a/config/locales/en.yml b/config/locales/en.yml index 71abf98fa36..f2f3d32a7b5 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -94,7 +94,6 @@ en: enable_mfa: Enable MFA rubygem_scope: Gem Scope rubygem_scope_info: This scope restricts gem push/yank and owner add/remove commands to a specific gem. - all_gems: All Gems reset: success: "Deleted all API keys" update: @@ -106,8 +105,8 @@ en: enable_mfa: Enable MFA rubygem_scope: Gem Scope rubygem_scope_info: This scope restricts gem push/yank and owner add/remove commands to a specific gem. - all_gems: All Gems invalid_key: An invalid API key cannot be edited. Please delete it and create a new one. + all_gems: All Gems clearance_mailer: change_password: title: CHANGE PASSWORD diff --git a/config/locales/es.yml b/config/locales/es.yml index 0c17a6e5a0a..8b9eab0f2b7 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -99,7 +99,6 @@ es: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: reset: success: update: @@ -111,8 +110,8 @@ es: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: invalid_key: + all_gems: clearance_mailer: change_password: title: CAMBIAR CONTRASEÑA diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 72d977bc59d..b109e41ec36 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -90,7 +90,6 @@ fr: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: reset: success: update: @@ -102,8 +101,8 @@ fr: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: invalid_key: + all_gems: clearance_mailer: change_password: title: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index daa234c5a0b..bd028cf63be 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -92,7 +92,6 @@ ja: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: reset: success: update: @@ -104,8 +103,8 @@ ja: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: invalid_key: + all_gems: clearance_mailer: change_password: title: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 721355dd806..74f60190edc 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -91,7 +91,6 @@ nl: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: reset: success: update: @@ -103,8 +102,8 @@ nl: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: invalid_key: + all_gems: clearance_mailer: change_password: title: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 7bc54441a83..dfe51067c14 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -98,7 +98,6 @@ pt-BR: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: reset: success: update: @@ -110,8 +109,8 @@ pt-BR: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: invalid_key: + all_gems: clearance_mailer: change_password: title: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 4a3d2750f96..ce40d4ff8fc 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -88,7 +88,6 @@ zh-CN: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: reset: success: update: @@ -100,8 +99,8 @@ zh-CN: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: invalid_key: + all_gems: clearance_mailer: change_password: title: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index f55d42f317f..743abc4609e 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -88,7 +88,6 @@ zh-TW: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: reset: success: update: @@ -100,8 +99,8 @@ zh-TW: enable_mfa: rubygem_scope: rubygem_scope_info: - all_gems: invalid_key: + all_gems: clearance_mailer: change_password: title: diff --git a/test/integration/api_keys_test.rb b/test/integration/api_keys_test.rb index 488125c34a7..4a8d9779d66 100644 --- a/test/integration/api_keys_test.rb +++ b/test/integration/api_keys_test.rb @@ -36,6 +36,7 @@ class ApiKeysTest < SystemTest click_button "Create" assert page.has_content? "Note that we won't be able to show the key to you again. New API key:" + assert_equal @ownership.rubygem.name, page.find('.owners__cell[data-title="Gem"]').text assert_equal @ownership.rubygem, @user.api_keys.last.rubygem end @@ -130,6 +131,7 @@ class ApiKeysTest < SystemTest page.select "All Gems" click_button "Update" + assert_equal "All Gems", page.find('.owners__cell[data-title="Gem"]').text assert_nil api_key.reload.rubygem end @@ -250,6 +252,7 @@ class ApiKeysTest < SystemTest assert_predicate api_key.reload, :soft_deleted? refute page.has_button? "Edit" + assert_nil page.find('.owners__cell[data-title="Gem"]').text visit_edit_profile_api_key_path(api_key) assert page.has_content? "An invalid API key cannot be edited. Please delete it and create a new one." assert_equal profile_api_keys_path, page.current_path diff --git a/test/unit/helpers/api_keys_helper_test.rb b/test/unit/helpers/api_keys_helper_test.rb new file mode 100644 index 00000000000..7f59369d89a --- /dev/null +++ b/test/unit/helpers/api_keys_helper_test.rb @@ -0,0 +1,24 @@ +require "test_helper" + +class ApiKeysHelperTest < ActionView::TestCase + context "gem_scope" do + should "return gem name" do + @ownership = create(:ownership) + @api_key = create(:api_key, push_rubygem: true, user: @ownership.user, ownership: @ownership) + + assert_equal @ownership.rubygem.name, gem_scope(@api_key) + end + + should "return all gems if there is no scope specified" do + assert_equal "All Gems", gem_scope(create(:api_key)) + end + + should "return if key if gem ownership is removed" do + @ownership = create(:ownership) + @api_key = create(:api_key, push_rubygem: true, user: @ownership.user, ownership: @ownership) + @ownership.destroy! + + assert_nil gem_scope(@api_key.reload) + end + end +end