Removed obsolete bin scripts.
[rbx.git] / test / rubygems / test_gem_commands_cert_command.rb
blob79e3e721589d03f4188793e5387fc89a3adcf1d9
1 require 'test/unit'
2 require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
4 require 'rubygems/commands/cert_command'
6 unless defined? OpenSSL then
7   warn "`gem cert` tests are being skipped, module OpenSSL not found"
8 end
10 class TestGemCommandsCertCommand < RubyGemTestCase
12   def setup
13     super
15     @orig_security_trust_dir = Gem::Security::OPT[:trust_dir]
16     Gem::Security::OPT[:trust_dir] = @tempdir
18     @cmd = Gem::Commands::CertCommand.new
20     root = File.expand_path(File.dirname(__FILE__))
22     FileUtils.cp File.join(root, 'data', 'gem-private_key.pem'), @tempdir
23     FileUtils.cp File.join(root, 'data', 'gem-public_cert.pem'), @tempdir
25     @cert_file_name = File.join @tempdir, 'gem-public_cert.pem'
26     @pkey_file_name = File.join @tempdir, 'gem-private_key.pem'
27   end
29   def teardown
30     Gem::Security::OPT[:trust_dir] = @orig_security_trust_dir
32     super
33   end
35   def test_execute_add
36     use_ui @ui do
37       @cmd.send :handle_options, %W[--add #{@cert_file_name}]
38     end
40     assert_equal "Added '/CN=rubygems/DC=example/DC=com'\n", @ui.output
41     assert_equal '', @ui.error
42   end
44   def test_execute_build
45     FileUtils.rm @cert_file_name
46     FileUtils.rm @pkey_file_name
48     use_ui @ui do
49       Dir.chdir @tempdir do
50         @cmd.send :handle_options, %W[--build nobody@example.com]
51       end
52     end
54     output = @ui.output.split "\n"
56     assert_equal 'Public Cert: gem-public_cert.pem', output.shift
57     assert_equal 'Private Key: gem-private_key.pem', output.shift
58     assert_equal 'Don\'t forget to move the key file to somewhere private...',
59                  output.shift
60     assert_equal [], output
62     assert_equal '', @ui.error
64     assert File.exist?(File.join(@tempdir, 'gem-private_key.pem'))
65     assert File.exist?(File.join(@tempdir, 'gem-public_cert.pem'))
66   end
68   def test_execute_certificate
69     use_ui @ui do
70       @cmd.send :handle_options, %W[--certificate #{@cert_file_name}]
71     end
73     assert_equal '', @ui.output
74     assert_equal '', @ui.error
76     assert_equal File.read(@cert_file_name),
77                  Gem::Security::OPT[:issuer_cert].to_s
78   end
80   def test_execute_list
81     use_ui @ui do
82       @cmd.send :handle_options, %W[--list]
83     end
85     assert_equal "/CN=rubygems/DC=example/DC=com\n", @ui.output
86     assert_equal '', @ui.error
87   end
89   def test_execute_private_key
90     use_ui @ui do
91       @cmd.send :handle_options, %W[--private-key #{@pkey_file_name}]
92     end
94     assert_equal '', @ui.output
95     assert_equal '', @ui.error
97     assert_equal File.read(@pkey_file_name),
98                  Gem::Security::OPT[:issuer_key].to_s
99   end
101   def test_execute_remove
102     use_ui @ui do
103       @cmd.send :handle_options, %W[--remove rubygems]
104     end
106     assert_equal "Removed '/CN=rubygems/DC=example/DC=com'\n", @ui.output
107     assert_equal '', @ui.error
109     assert !File.exist?(@cert_file_name)
110   end
112   def test_execute_sign
113     use_ui @ui do
114       @cmd.send :handle_options, %W[
115         -K #{@pkey_file_name} -C #{@cert_file_name} --sign #{@cert_file_name}
116       ]
117     end
119     assert_equal '', @ui.output
120     assert_equal '', @ui.error
122     # HACK this test sucks
123   end
125 end if defined? OpenSSL