summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_commands_signout_command.rb
blob: 9a47dafe7cd6f07679296d38137ea13de7fd06a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# frozen_string_literal: true

require 'rubygems/test_case'
require 'rubygems/commands/signout_command'
require 'rubygems/installer'

class TestGemCommandsSignoutCommand < Gem::TestCase

  def setup
    super
    File.delete Gem.configuration.credentials_path if File.exist?(Gem.configuration.credentials_path)
    @cmd = Gem::Commands::SignoutCommand.new
  end

  def teardown
    super
    File.delete Gem.configuration.credentials_path if File.exist?(Gem.configuration.credentials_path)
  end

  def test_execute_when_user_is_signed_in
    FileUtils.mkdir_p File.dirname(Gem.configuration.credentials_path)
    FileUtils::touch Gem.configuration.credentials_path

    @sign_out_ui = Gem::MockGemUi.new
    use_ui(@sign_out_ui) { @cmd.execute }

    assert_match %r{You have successfully signed out}, @sign_out_ui.output
    assert_equal false, File.exist?(Gem.configuration.credentials_path)
  end

  def test_execute_when_not_signed_in # i.e. no credential file created
    @sign_out_ui = Gem::MockGemUi.new
    use_ui(@sign_out_ui) { @cmd.execute }

    assert_match %r{You are not currently signed in}, @sign_out_ui.error
  end

end