diff options
author | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-16 18:49:26 +0900 |
---|---|---|
committer | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-30 00:39:06 +0900 |
commit | fcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch) | |
tree | 64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/test/rubygems/test_gem_commands_owner_command.rb |
Fresh start
Diffstat (limited to 'jni/ruby/test/rubygems/test_gem_commands_owner_command.rb')
-rw-r--r-- | jni/ruby/test/rubygems/test_gem_commands_owner_command.rb | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/jni/ruby/test/rubygems/test_gem_commands_owner_command.rb b/jni/ruby/test/rubygems/test_gem_commands_owner_command.rb new file mode 100644 index 0000000..5d7b661 --- /dev/null +++ b/jni/ruby/test/rubygems/test_gem_commands_owner_command.rb @@ -0,0 +1,204 @@ +require 'rubygems/test_case' +require 'rubygems/commands/owner_command' + +class TestGemCommandsOwnerCommand < Gem::TestCase + + def setup + super + + ENV["RUBYGEMS_HOST"] = nil + @fetcher = Gem::FakeFetcher.new + Gem::RemoteFetcher.fetcher = @fetcher + Gem.configuration.rubygems_api_key = "ed244fbf2b1a52e012da8616c512fa47f9aa5250" + + @cmd = Gem::Commands::OwnerCommand.new + end + + def test_show_owners + response = <<EOF +--- +- email: user1@example.com +- email: user2@example.com +EOF + + @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners.yaml"] = [response, 200, 'OK'] + + use_ui @ui do + @cmd.show_owners("freewill") + end + + assert_equal Net::HTTP::Get, @fetcher.last_request.class + assert_equal Gem.configuration.rubygems_api_key, @fetcher.last_request["Authorization"] + + assert_match %r{Owners for gem: freewill}, @ui.output + assert_match %r{- user1@example.com}, @ui.output + assert_match %r{- user2@example.com}, @ui.output + end + + def test_show_owners_setting_up_host_through_env_var + response = "- email: user1@example.com\n" + host = "http://rubygems.example" + ENV["RUBYGEMS_HOST"] = host + + @fetcher.data["#{host}/api/v1/gems/freewill/owners.yaml"] = [response, 200, 'OK'] + + use_ui @ui do + @cmd.show_owners("freewill") + end + + assert_match %r{Owners for gem: freewill}, @ui.output + assert_match %r{- user1@example.com}, @ui.output + end + + def test_show_owners_setting_up_host + response = "- email: user1@example.com\n" + host = "http://rubygems.example" + @cmd.host = host + + @fetcher.data["#{host}/api/v1/gems/freewill/owners.yaml"] = [response, 200, 'OK'] + + use_ui @ui do + @cmd.show_owners("freewill") + end + + assert_match %r{Owners for gem: freewill}, @ui.output + assert_match %r{- user1@example.com}, @ui.output + end + + def test_show_owners_denied + response = "You don't have permission to push to this gem" + @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners.yaml"] = [response, 403, 'Forbidden'] + + assert_raises Gem::MockGemUi::TermError do + use_ui @ui do + @cmd.show_owners("freewill") + end + end + + assert_match response, @ui.output + end + + def test_show_owners_key + response = "- email: user1@example.com\n" + @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners.yaml"] = [response, 200, 'OK'] + File.open Gem.configuration.credentials_path, 'a' do |f| + f.write ':other: 701229f217cdf23b1344c7b4b54ca97' + end + Gem.configuration.load_api_keys + + @cmd.handle_options %w(-k other) + @cmd.show_owners('freewill') + + assert_equal '701229f217cdf23b1344c7b4b54ca97', @fetcher.last_request['Authorization'] + end + + def test_add_owners + response = "Owner added successfully." + @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 200, 'OK'] + + use_ui @ui do + @cmd.add_owners("freewill", ["user-new1@example.com"]) + end + + assert_equal Net::HTTP::Post, @fetcher.last_request.class + assert_equal Gem.configuration.rubygems_api_key, @fetcher.last_request["Authorization"] + assert_equal "email=user-new1%40example.com", @fetcher.last_request.body + + assert_match response, @ui.output + end + + def test_add_owners_denied + response = "You don't have permission to push to this gem" + @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 403, 'Forbidden'] + + use_ui @ui do + @cmd.add_owners("freewill", ["user-new1@example.com"]) + end + + assert_match response, @ui.output + end + + def test_add_owner_with_host_option_through_execute + host = "http://rubygems.example" + add_owner_response = "Owner added successfully." + show_owners_response = "- email: user1@example.com\n" + @fetcher.data["#{host}/api/v1/gems/freewill/owners"] = [add_owner_response, 200, 'OK'] + @fetcher.data["#{host}/api/v1/gems/freewill/owners.yaml"] = [show_owners_response, 200, 'OK'] + + @cmd.handle_options %W[--host #{host} --add user-new1@example.com freewill] + + use_ui @ui do + @cmd.execute + end + + assert_match add_owner_response, @ui.output + assert_match %r{Owners for gem: freewill}, @ui.output + assert_match %r{- user1@example.com}, @ui.output + end + + def test_add_owners_key + response = "Owner added successfully." + @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 200, 'OK'] + File.open Gem.configuration.credentials_path, 'a' do |f| + f.write ':other: 701229f217cdf23b1344c7b4b54ca97' + end + Gem.configuration.load_api_keys + + @cmd.handle_options %w(-k other) + @cmd.add_owners('freewill', ['user-new1@example.com']) + + assert_equal '701229f217cdf23b1344c7b4b54ca97', @fetcher.last_request['Authorization'] + end + + def test_remove_owners + response = "Owner removed successfully." + @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 200, 'OK'] + + use_ui @ui do + @cmd.remove_owners("freewill", ["user-remove1@example.com"]) + end + + assert_equal Net::HTTP::Delete, @fetcher.last_request.class + assert_equal Gem.configuration.rubygems_api_key, @fetcher.last_request["Authorization"] + assert_equal "email=user-remove1%40example.com", @fetcher.last_request.body + + assert_match response, @ui.output + end + + def test_remove_owners_denied + response = "You don't have permission to push to this gem" + @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 403, 'Forbidden'] + + use_ui @ui do + @cmd.remove_owners("freewill", ["user-remove1@example.com"]) + end + + assert_match response, @ui.output + end + + def test_remove_owners_key + response = "Owner removed successfully." + @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 200, 'OK'] + File.open Gem.configuration.credentials_path, 'a' do |f| + f.write ':other: 701229f217cdf23b1344c7b4b54ca97' + end + Gem.configuration.load_api_keys + + @cmd.handle_options %w(-k other) + @cmd.remove_owners('freewill', ['user-remove1@example.com']) + + assert_equal '701229f217cdf23b1344c7b4b54ca97', @fetcher.last_request['Authorization'] + end + + def test_remove_owners_missing + response = 'Owner could not be found.' + @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 404, 'Not Found'] + + use_ui @ui do + @cmd.remove_owners("freewill", ["missing@example"]) + end + + assert_equal "Removing missing@example: #{response}\n", @ui.output + end + +end |