redcar 0.3.8.3 → 0.3.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. data/CHANGES +6 -0
  2. data/Rakefile +1 -1
  3. data/lib/redcar.rb +1 -1
  4. data/lib/redcar/installer.rb +14 -4
  5. metadata +1 -168
  6. data/lib/openssl/Manifest.txt +0 -99
  7. data/lib/openssl/build.properties +0 -7
  8. data/lib/plugin_manager/plugin_manager.gemspec +0 -33
  9. data/plugins/project/vendor/net-sftp/Manifest +0 -55
  10. data/plugins/project/vendor/net-sftp/Rakefile +0 -30
  11. data/plugins/project/vendor/net-sftp/lib/net/sftp.rb +0 -70
  12. data/plugins/project/vendor/net-sftp/lib/net/sftp/constants.rb +0 -187
  13. data/plugins/project/vendor/net-sftp/lib/net/sftp/errors.rb +0 -39
  14. data/plugins/project/vendor/net-sftp/lib/net/sftp/operations/dir.rb +0 -93
  15. data/plugins/project/vendor/net-sftp/lib/net/sftp/operations/download.rb +0 -364
  16. data/plugins/project/vendor/net-sftp/lib/net/sftp/operations/file.rb +0 -176
  17. data/plugins/project/vendor/net-sftp/lib/net/sftp/operations/file_factory.rb +0 -60
  18. data/plugins/project/vendor/net-sftp/lib/net/sftp/operations/upload.rb +0 -387
  19. data/plugins/project/vendor/net-sftp/lib/net/sftp/packet.rb +0 -21
  20. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol.rb +0 -32
  21. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/01/attributes.rb +0 -315
  22. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/01/base.rb +0 -268
  23. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/01/name.rb +0 -43
  24. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/02/base.rb +0 -31
  25. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/03/base.rb +0 -35
  26. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/04/attributes.rb +0 -152
  27. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/04/base.rb +0 -94
  28. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/04/name.rb +0 -67
  29. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/05/base.rb +0 -66
  30. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/06/attributes.rb +0 -107
  31. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/06/base.rb +0 -63
  32. data/plugins/project/vendor/net-sftp/lib/net/sftp/protocol/base.rb +0 -50
  33. data/plugins/project/vendor/net-sftp/lib/net/sftp/request.rb +0 -91
  34. data/plugins/project/vendor/net-sftp/lib/net/sftp/response.rb +0 -76
  35. data/plugins/project/vendor/net-sftp/lib/net/sftp/session.rb +0 -951
  36. data/plugins/project/vendor/net-sftp/lib/net/sftp/version.rb +0 -18
  37. data/plugins/project/vendor/net-sftp/setup.rb +0 -1331
  38. data/plugins/project/vendor/net-sftp/test/common.rb +0 -171
  39. data/plugins/project/vendor/net-sftp/test/protocol/01/test_attributes.rb +0 -97
  40. data/plugins/project/vendor/net-sftp/test/protocol/01/test_base.rb +0 -210
  41. data/plugins/project/vendor/net-sftp/test/protocol/01/test_name.rb +0 -27
  42. data/plugins/project/vendor/net-sftp/test/protocol/02/test_base.rb +0 -26
  43. data/plugins/project/vendor/net-sftp/test/protocol/03/test_base.rb +0 -27
  44. data/plugins/project/vendor/net-sftp/test/protocol/04/test_attributes.rb +0 -148
  45. data/plugins/project/vendor/net-sftp/test/protocol/04/test_base.rb +0 -74
  46. data/plugins/project/vendor/net-sftp/test/protocol/04/test_name.rb +0 -53
  47. data/plugins/project/vendor/net-sftp/test/protocol/05/test_base.rb +0 -62
  48. data/plugins/project/vendor/net-sftp/test/protocol/06/test_attributes.rb +0 -124
  49. data/plugins/project/vendor/net-sftp/test/protocol/06/test_base.rb +0 -51
  50. data/plugins/project/vendor/net-sftp/test/protocol/test_base.rb +0 -42
  51. data/plugins/project/vendor/net-sftp/test/test_all.rb +0 -7
  52. data/plugins/project/vendor/net-sftp/test/test_dir.rb +0 -47
  53. data/plugins/project/vendor/net-sftp/test/test_download.rb +0 -252
  54. data/plugins/project/vendor/net-sftp/test/test_file.rb +0 -159
  55. data/plugins/project/vendor/net-sftp/test/test_file_factory.rb +0 -48
  56. data/plugins/project/vendor/net-sftp/test/test_packet.rb +0 -9
  57. data/plugins/project/vendor/net-sftp/test/test_protocol.rb +0 -17
  58. data/plugins/project/vendor/net-sftp/test/test_request.rb +0 -71
  59. data/plugins/project/vendor/net-sftp/test/test_response.rb +0 -53
  60. data/plugins/project/vendor/net-sftp/test/test_session.rb +0 -741
  61. data/plugins/project/vendor/net-sftp/test/test_upload.rb +0 -219
  62. data/plugins/project/vendor/net-ssh/Manifest +0 -110
  63. data/plugins/project/vendor/net-ssh/Rakefile +0 -85
  64. data/plugins/project/vendor/net-ssh/Rudyfile +0 -96
  65. data/plugins/project/vendor/net-ssh/lib/net/ssh.rb +0 -215
  66. data/plugins/project/vendor/net-ssh/lib/net/ssh/authentication/agent.rb +0 -179
  67. data/plugins/project/vendor/net-ssh/lib/net/ssh/authentication/constants.rb +0 -18
  68. data/plugins/project/vendor/net-ssh/lib/net/ssh/authentication/key_manager.rb +0 -193
  69. data/plugins/project/vendor/net-ssh/lib/net/ssh/authentication/methods/abstract.rb +0 -60
  70. data/plugins/project/vendor/net-ssh/lib/net/ssh/authentication/methods/hostbased.rb +0 -71
  71. data/plugins/project/vendor/net-ssh/lib/net/ssh/authentication/methods/keyboard_interactive.rb +0 -66
  72. data/plugins/project/vendor/net-ssh/lib/net/ssh/authentication/methods/password.rb +0 -39
  73. data/plugins/project/vendor/net-ssh/lib/net/ssh/authentication/methods/publickey.rb +0 -92
  74. data/plugins/project/vendor/net-ssh/lib/net/ssh/authentication/pageant.rb +0 -183
  75. data/plugins/project/vendor/net-ssh/lib/net/ssh/authentication/session.rb +0 -134
  76. data/plugins/project/vendor/net-ssh/lib/net/ssh/buffer.rb +0 -340
  77. data/plugins/project/vendor/net-ssh/lib/net/ssh/buffered_io.rb +0 -198
  78. data/plugins/project/vendor/net-ssh/lib/net/ssh/config.rb +0 -202
  79. data/plugins/project/vendor/net-ssh/lib/net/ssh/connection/channel.rb +0 -630
  80. data/plugins/project/vendor/net-ssh/lib/net/ssh/connection/constants.rb +0 -33
  81. data/plugins/project/vendor/net-ssh/lib/net/ssh/connection/session.rb +0 -597
  82. data/plugins/project/vendor/net-ssh/lib/net/ssh/connection/term.rb +0 -178
  83. data/plugins/project/vendor/net-ssh/lib/net/ssh/errors.rb +0 -85
  84. data/plugins/project/vendor/net-ssh/lib/net/ssh/key_factory.rb +0 -102
  85. data/plugins/project/vendor/net-ssh/lib/net/ssh/known_hosts.rb +0 -129
  86. data/plugins/project/vendor/net-ssh/lib/net/ssh/loggable.rb +0 -61
  87. data/plugins/project/vendor/net-ssh/lib/net/ssh/packet.rb +0 -102
  88. data/plugins/project/vendor/net-ssh/lib/net/ssh/prompt.rb +0 -93
  89. data/plugins/project/vendor/net-ssh/lib/net/ssh/proxy/command.rb +0 -75
  90. data/plugins/project/vendor/net-ssh/lib/net/ssh/proxy/errors.rb +0 -14
  91. data/plugins/project/vendor/net-ssh/lib/net/ssh/proxy/http.rb +0 -94
  92. data/plugins/project/vendor/net-ssh/lib/net/ssh/proxy/socks4.rb +0 -70
  93. data/plugins/project/vendor/net-ssh/lib/net/ssh/proxy/socks5.rb +0 -142
  94. data/plugins/project/vendor/net-ssh/lib/net/ssh/ruby_compat.rb +0 -43
  95. data/plugins/project/vendor/net-ssh/lib/net/ssh/service/forward.rb +0 -288
  96. data/plugins/project/vendor/net-ssh/lib/net/ssh/test.rb +0 -89
  97. data/plugins/project/vendor/net-ssh/lib/net/ssh/test/channel.rb +0 -129
  98. data/plugins/project/vendor/net-ssh/lib/net/ssh/test/extensions.rb +0 -152
  99. data/plugins/project/vendor/net-ssh/lib/net/ssh/test/kex.rb +0 -44
  100. data/plugins/project/vendor/net-ssh/lib/net/ssh/test/local_packet.rb +0 -51
  101. data/plugins/project/vendor/net-ssh/lib/net/ssh/test/packet.rb +0 -81
  102. data/plugins/project/vendor/net-ssh/lib/net/ssh/test/remote_packet.rb +0 -38
  103. data/plugins/project/vendor/net-ssh/lib/net/ssh/test/script.rb +0 -157
  104. data/plugins/project/vendor/net-ssh/lib/net/ssh/test/socket.rb +0 -64
  105. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/algorithms.rb +0 -384
  106. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/cipher_factory.rb +0 -97
  107. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/constants.rb +0 -30
  108. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/hmac.rb +0 -31
  109. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/hmac/abstract.rb +0 -79
  110. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/hmac/md5.rb +0 -12
  111. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/hmac/md5_96.rb +0 -11
  112. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/hmac/none.rb +0 -15
  113. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/hmac/sha1.rb +0 -13
  114. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/hmac/sha1_96.rb +0 -11
  115. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/identity_cipher.rb +0 -55
  116. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/kex.rb +0 -13
  117. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb +0 -208
  118. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb +0 -77
  119. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/openssl.rb +0 -128
  120. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/packet_stream.rb +0 -235
  121. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/server_version.rb +0 -71
  122. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/session.rb +0 -276
  123. data/plugins/project/vendor/net-ssh/lib/net/ssh/transport/state.rb +0 -206
  124. data/plugins/project/vendor/net-ssh/lib/net/ssh/verifiers/lenient.rb +0 -30
  125. data/plugins/project/vendor/net-ssh/lib/net/ssh/verifiers/null.rb +0 -12
  126. data/plugins/project/vendor/net-ssh/lib/net/ssh/verifiers/strict.rb +0 -53
  127. data/plugins/project/vendor/net-ssh/lib/net/ssh/version.rb +0 -62
  128. data/plugins/project/vendor/net-ssh/net-ssh.gemspec +0 -138
  129. data/plugins/project/vendor/net-ssh/setup.rb +0 -1585
  130. data/plugins/project/vendor/net-ssh/support/arcfour_check.rb +0 -20
  131. data/plugins/project/vendor/net-ssh/support/ssh_tunnel_bug.rb +0 -65
  132. data/plugins/project/vendor/net-ssh/test/README.txt +0 -42
  133. data/plugins/project/vendor/net-ssh/test/authentication/methods/common.rb +0 -28
  134. data/plugins/project/vendor/net-ssh/test/authentication/methods/test_abstract.rb +0 -51
  135. data/plugins/project/vendor/net-ssh/test/authentication/methods/test_hostbased.rb +0 -114
  136. data/plugins/project/vendor/net-ssh/test/authentication/methods/test_keyboard_interactive.rb +0 -98
  137. data/plugins/project/vendor/net-ssh/test/authentication/methods/test_password.rb +0 -50
  138. data/plugins/project/vendor/net-ssh/test/authentication/methods/test_publickey.rb +0 -127
  139. data/plugins/project/vendor/net-ssh/test/authentication/test_agent.rb +0 -205
  140. data/plugins/project/vendor/net-ssh/test/authentication/test_key_manager.rb +0 -105
  141. data/plugins/project/vendor/net-ssh/test/authentication/test_session.rb +0 -93
  142. data/plugins/project/vendor/net-ssh/test/common.rb +0 -107
  143. data/plugins/project/vendor/net-ssh/test/configs/eqsign +0 -3
  144. data/plugins/project/vendor/net-ssh/test/configs/exact_match +0 -8
  145. data/plugins/project/vendor/net-ssh/test/configs/host_plus +0 -10
  146. data/plugins/project/vendor/net-ssh/test/configs/multihost +0 -4
  147. data/plugins/project/vendor/net-ssh/test/configs/nohost +0 -19
  148. data/plugins/project/vendor/net-ssh/test/configs/numeric_host +0 -4
  149. data/plugins/project/vendor/net-ssh/test/configs/wild_cards +0 -14
  150. data/plugins/project/vendor/net-ssh/test/connection/test_channel.rb +0 -467
  151. data/plugins/project/vendor/net-ssh/test/connection/test_session.rb +0 -488
  152. data/plugins/project/vendor/net-ssh/test/manual/test_forward.rb +0 -185
  153. data/plugins/project/vendor/net-ssh/test/test_all.rb +0 -9
  154. data/plugins/project/vendor/net-ssh/test/test_buffer.rb +0 -336
  155. data/plugins/project/vendor/net-ssh/test/test_buffered_io.rb +0 -63
  156. data/plugins/project/vendor/net-ssh/test/test_config.rb +0 -117
  157. data/plugins/project/vendor/net-ssh/test/test_key_factory.rb +0 -67
  158. data/plugins/project/vendor/net-ssh/test/transport/hmac/test_md5.rb +0 -39
  159. data/plugins/project/vendor/net-ssh/test/transport/hmac/test_md5_96.rb +0 -25
  160. data/plugins/project/vendor/net-ssh/test/transport/hmac/test_none.rb +0 -34
  161. data/plugins/project/vendor/net-ssh/test/transport/hmac/test_sha1.rb +0 -34
  162. data/plugins/project/vendor/net-ssh/test/transport/hmac/test_sha1_96.rb +0 -25
  163. data/plugins/project/vendor/net-ssh/test/transport/kex/test_diffie_hellman_group1_sha1.rb +0 -146
  164. data/plugins/project/vendor/net-ssh/test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb +0 -92
  165. data/plugins/project/vendor/net-ssh/test/transport/test_algorithms.rb +0 -302
  166. data/plugins/project/vendor/net-ssh/test/transport/test_cipher_factory.rb +0 -213
  167. data/plugins/project/vendor/net-ssh/test/transport/test_hmac.rb +0 -34
  168. data/plugins/project/vendor/net-ssh/test/transport/test_identity_cipher.rb +0 -40
  169. data/plugins/project/vendor/net-ssh/test/transport/test_packet_stream.rb +0 -441
  170. data/plugins/project/vendor/net-ssh/test/transport/test_server_version.rb +0 -78
  171. data/plugins/project/vendor/net-ssh/test/transport/test_session.rb +0 -315
  172. data/plugins/project/vendor/net-ssh/test/transport/test_state.rb +0 -173
@@ -1,127 +0,0 @@
1
- require 'common'
2
- require 'net/ssh/authentication/methods/publickey'
3
- require 'authentication/methods/common'
4
-
5
- module Authentication; module Methods
6
-
7
- class TestPublickey < Test::Unit::TestCase
8
- include Common
9
-
10
- def test_authenticate_should_return_false_when_no_key_manager_has_been_set
11
- assert_equal false, subject(:key_manager => nil).authenticate("ssh-connection", "jamis")
12
- end
13
-
14
- def test_authenticate_should_return_false_when_key_manager_has_no_keys
15
- assert_equal false, subject(:keys => []).authenticate("ssh-connection", "jamis")
16
- end
17
-
18
- def test_authenticate_should_return_false_if_no_keys_can_authenticate
19
- transport.expect do |t, packet|
20
- assert_equal USERAUTH_REQUEST, packet.type
21
- assert verify_userauth_request_packet(packet, keys.first, false)
22
- t.return(USERAUTH_FAILURE, :string, "hostbased,password")
23
-
24
- t.expect do |t2, packet2|
25
- assert_equal USERAUTH_REQUEST, packet2.type
26
- assert verify_userauth_request_packet(packet2, keys.last, false)
27
- t2.return(USERAUTH_FAILURE, :string, "hostbased,password")
28
- end
29
- end
30
-
31
- assert_equal false, subject.authenticate("ssh-connection", "jamis")
32
- end
33
-
34
- def test_authenticate_should_return_false_if_signature_exchange_fails
35
- key_manager.expects(:sign).with(&signature_parameters(keys.first)).returns("sig-one")
36
- key_manager.expects(:sign).with(&signature_parameters(keys.last)).returns("sig-two")
37
-
38
- transport.expect do |t, packet|
39
- assert_equal USERAUTH_REQUEST, packet.type
40
- assert verify_userauth_request_packet(packet, keys.first, false)
41
- t.return(USERAUTH_PK_OK, :string, keys.first.ssh_type, :string, Net::SSH::Buffer.from(:key, keys.first))
42
-
43
- t.expect do |t2,packet2|
44
- assert_equal USERAUTH_REQUEST, packet2.type
45
- assert verify_userauth_request_packet(packet2, keys.first, true)
46
- assert_equal "sig-one", packet2.read_string
47
- t2.return(USERAUTH_FAILURE, :string, "hostbased,password")
48
-
49
- t2.expect do |t3, packet3|
50
- assert_equal USERAUTH_REQUEST, packet3.type
51
- assert verify_userauth_request_packet(packet3, keys.last, false)
52
- t3.return(USERAUTH_PK_OK, :string, keys.last.ssh_type, :string, Net::SSH::Buffer.from(:key, keys.last))
53
-
54
- t3.expect do |t4,packet4|
55
- assert_equal USERAUTH_REQUEST, packet4.type
56
- assert verify_userauth_request_packet(packet4, keys.last, true)
57
- assert_equal "sig-two", packet4.read_string
58
- t4.return(USERAUTH_FAILURE, :string, "hostbased,password")
59
- end
60
- end
61
- end
62
- end
63
-
64
- assert !subject.authenticate("ssh-connection", "jamis")
65
- end
66
-
67
- def test_authenticate_should_return_true_if_any_key_can_authenticate
68
- key_manager.expects(:sign).with(&signature_parameters(keys.first)).returns("sig-one")
69
-
70
- transport.expect do |t, packet|
71
- assert_equal USERAUTH_REQUEST, packet.type
72
- assert verify_userauth_request_packet(packet, keys.first, false)
73
- t.return(USERAUTH_PK_OK, :string, keys.first.ssh_type, :string, Net::SSH::Buffer.from(:key, keys.first))
74
-
75
- t.expect do |t2,packet2|
76
- assert_equal USERAUTH_REQUEST, packet2.type
77
- assert verify_userauth_request_packet(packet2, keys.first, true)
78
- assert_equal "sig-one", packet2.read_string
79
- t2.return(USERAUTH_SUCCESS)
80
- end
81
- end
82
-
83
- assert subject.authenticate("ssh-connection", "jamis")
84
- end
85
-
86
- private
87
-
88
- def signature_parameters(key)
89
- Proc.new do |given_key, data|
90
- next false unless given_key.to_blob == key.to_blob
91
- buffer = Net::SSH::Buffer.new(data)
92
- buffer.read_string == "abcxyz123" && # session-id
93
- buffer.read_byte == USERAUTH_REQUEST && # type
94
- verify_userauth_request_packet(buffer, key, true)
95
- end
96
- end
97
-
98
- def verify_userauth_request_packet(packet, key, has_sig)
99
- packet.read_string == "jamis" && # user-name
100
- packet.read_string == "ssh-connection" && # next service
101
- packet.read_string == "publickey" && # auth-method
102
- packet.read_bool == has_sig && # whether a signature is appended
103
- packet.read_string == key.ssh_type && # ssh key type
104
- packet.read_buffer.read_key.to_blob == key.to_blob # key
105
- end
106
-
107
- @@keys = nil
108
- def keys
109
- @@keys ||= [OpenSSL::PKey::RSA.new(32), OpenSSL::PKey::DSA.new(32)]
110
- end
111
-
112
- def key_manager(options={})
113
- @key_manager ||= begin
114
- manager = stub("key_manager")
115
- manager.stubs(:each_identity).multiple_yields(*(options[:keys] || keys))
116
- manager
117
- end
118
- end
119
-
120
- def subject(options={})
121
- options[:key_manager] = key_manager(options) unless options.key?(:key_manager)
122
- @subject ||= Net::SSH::Authentication::Methods::Publickey.new(session(options), options)
123
- end
124
-
125
- end
126
-
127
- end; end
@@ -1,205 +0,0 @@
1
- require 'common'
2
- require 'net/ssh/authentication/agent'
3
-
4
- module Authentication
5
-
6
- class TestAgent < Test::Unit::TestCase
7
-
8
- SSH2_AGENT_REQUEST_VERSION = 1
9
- SSH2_AGENT_REQUEST_IDENTITIES = 11
10
- SSH2_AGENT_IDENTITIES_ANSWER = 12
11
- SSH2_AGENT_SIGN_REQUEST = 13
12
- SSH2_AGENT_SIGN_RESPONSE = 14
13
- SSH2_AGENT_FAILURE = 30
14
- SSH2_AGENT_VERSION_RESPONSE = 103
15
-
16
- SSH_COM_AGENT2_FAILURE = 102
17
-
18
- SSH_AGENT_REQUEST_RSA_IDENTITIES = 1
19
- SSH_AGENT_RSA_IDENTITIES_ANSWER = 2
20
- SSH_AGENT_FAILURE = 5
21
-
22
- def setup
23
- @original, ENV['SSH_AUTH_SOCK'] = ENV['SSH_AUTH_SOCK'], "/path/to/ssh.agent.sock"
24
- end
25
-
26
- def teardown
27
- ENV['SSH_AUTH_SOCK'] = @original
28
- end
29
-
30
- def test_connect_should_use_agent_factory_to_determine_connection_type
31
- factory.expects(:open).with("/path/to/ssh.agent.sock").returns(socket)
32
- agent(false).connect!
33
- end
34
-
35
- def test_connect_should_raise_error_if_connection_could_not_be_established
36
- factory.expects(:open).raises(SocketError)
37
- assert_raises(Net::SSH::Authentication::AgentNotAvailable) { agent(false).connect! }
38
- end
39
-
40
- def test_negotiate_should_raise_error_if_ssh2_agent_response_recieved
41
- socket.expect do |s, type, buffer|
42
- assert_equal SSH2_AGENT_REQUEST_VERSION, type
43
- assert_equal Net::SSH::Transport::ServerVersion::PROTO_VERSION, buffer.read_string
44
- s.return(SSH2_AGENT_VERSION_RESPONSE)
45
- end
46
- assert_raises(NotImplementedError) { agent.negotiate! }
47
- end
48
-
49
- def test_negotiate_should_raise_error_if_response_was_unexpected
50
- socket.expect do |s, type, buffer|
51
- assert_equal SSH2_AGENT_REQUEST_VERSION, type
52
- s.return(255)
53
- end
54
- assert_raises(Net::SSH::Authentication::AgentError) { agent.negotiate! }
55
- end
56
-
57
- def test_negotiate_should_be_successful_with_expected_response
58
- socket.expect do |s, type, buffer|
59
- assert_equal SSH2_AGENT_REQUEST_VERSION, type
60
- s.return(SSH_AGENT_RSA_IDENTITIES_ANSWER)
61
- end
62
- assert_nothing_raised { agent(:connect).negotiate! }
63
- end
64
-
65
- def test_identities_should_fail_if_SSH_AGENT_FAILURE_recieved
66
- socket.expect do |s, type, buffer|
67
- assert_equal SSH2_AGENT_REQUEST_IDENTITIES, type
68
- s.return(SSH_AGENT_FAILURE)
69
- end
70
- assert_raises(Net::SSH::Authentication::AgentError) { agent.identities }
71
- end
72
-
73
- def test_identities_should_fail_if_SSH2_AGENT_FAILURE_recieved
74
- socket.expect do |s, type, buffer|
75
- assert_equal SSH2_AGENT_REQUEST_IDENTITIES, type
76
- s.return(SSH2_AGENT_FAILURE)
77
- end
78
- assert_raises(Net::SSH::Authentication::AgentError) { agent.identities }
79
- end
80
-
81
- def test_identities_should_fail_if_SSH_COM_AGENT2_FAILURE_recieved
82
- socket.expect do |s, type, buffer|
83
- assert_equal SSH2_AGENT_REQUEST_IDENTITIES, type
84
- s.return(SSH_COM_AGENT2_FAILURE)
85
- end
86
- assert_raises(Net::SSH::Authentication::AgentError) { agent.identities }
87
- end
88
-
89
- def test_identities_should_fail_if_response_is_not_SSH2_AGENT_IDENTITIES_ANSWER
90
- socket.expect do |s, type, buffer|
91
- assert_equal SSH2_AGENT_REQUEST_IDENTITIES, type
92
- s.return(255)
93
- end
94
- assert_raises(Net::SSH::Authentication::AgentError) { agent.identities }
95
- end
96
-
97
- def test_identities_should_augment_identities_with_comment_field
98
- key1 = key
99
- key2 = OpenSSL::PKey::DSA.new(32)
100
-
101
- socket.expect do |s, type, buffer|
102
- assert_equal SSH2_AGENT_REQUEST_IDENTITIES, type
103
- s.return(SSH2_AGENT_IDENTITIES_ANSWER, :long, 2, :string, Net::SSH::Buffer.from(:key, key1), :string, "My favorite key", :string, Net::SSH::Buffer.from(:key, key2), :string, "Okay, but not the best")
104
- end
105
-
106
- result = agent.identities
107
- assert_equal key1.to_blob, result.first.to_blob
108
- assert_equal key2.to_blob, result.last.to_blob
109
- assert_equal "My favorite key", result.first.comment
110
- assert_equal "Okay, but not the best", result.last.comment
111
- end
112
-
113
- def test_close_should_close_socket
114
- socket.expects(:close)
115
- agent.close
116
- end
117
-
118
- def test_sign_should_fail_if_response_is_SSH_AGENT_FAILURE
119
- socket.expect { |s,| s.return(SSH_AGENT_FAILURE) }
120
- assert_raises(Net::SSH::Authentication::AgentError) { agent.sign(key, "hello world") }
121
- end
122
-
123
- def test_sign_should_fail_if_response_is_SSH2_AGENT_FAILURE
124
- socket.expect { |s,| s.return(SSH2_AGENT_FAILURE) }
125
- assert_raises(Net::SSH::Authentication::AgentError) { agent.sign(key, "hello world") }
126
- end
127
-
128
- def test_sign_should_fail_if_response_is_SSH_COM_AGENT2_FAILURE
129
- socket.expect { |s,| s.return(SSH_COM_AGENT2_FAILURE) }
130
- assert_raises(Net::SSH::Authentication::AgentError) { agent.sign(key, "hello world") }
131
- end
132
-
133
- def test_sign_should_fail_if_response_is_not_SSH2_AGENT_SIGN_RESPONSE
134
- socket.expect { |s,| s.return(255) }
135
- assert_raises(Net::SSH::Authentication::AgentError) { agent.sign(key, "hello world") }
136
- end
137
-
138
- def test_sign_should_return_signed_data_from_agent
139
- socket.expect do |s,type,buffer|
140
- assert_equal SSH2_AGENT_SIGN_REQUEST, type
141
- assert_equal key.to_blob, Net::SSH::Buffer.new(buffer.read_string).read_key.to_blob
142
- assert_equal "hello world", buffer.read_string
143
- assert_equal 0, buffer.read_long
144
-
145
- s.return(SSH2_AGENT_SIGN_RESPONSE, :string, "abcxyz123")
146
- end
147
-
148
- assert_equal "abcxyz123", agent.sign(key, "hello world")
149
- end
150
-
151
- private
152
-
153
- class MockSocket
154
- def initialize
155
- @expectation = nil
156
- @buffer = Net::SSH::Buffer.new
157
- end
158
-
159
- def expect(&block)
160
- @expectation = block
161
- end
162
-
163
- def return(type, *args)
164
- data = Net::SSH::Buffer.from(*args)
165
- @buffer.append([data.length+1, type, data.to_s].pack("NCA*"))
166
- end
167
-
168
- def send(data, flags)
169
- raise "got #{data.inspect} but no packet was expected" unless @expectation
170
- buffer = Net::SSH::Buffer.new(data)
171
- buffer.read_long # skip the length
172
- type = buffer.read_byte
173
- @expectation.call(self, type, buffer)
174
- @expectation = nil
175
- end
176
-
177
- def read(length)
178
- @buffer.read(length)
179
- end
180
- end
181
-
182
- def key
183
- @key ||= OpenSSL::PKey::RSA.new(32)
184
- end
185
-
186
- def socket
187
- @socket ||= MockSocket.new
188
- end
189
-
190
- def factory
191
- @factory ||= stub("socket factory", :open => socket)
192
- end
193
-
194
- def agent(auto=:connect)
195
- @agent ||= begin
196
- agent = Net::SSH::Authentication::Agent.new
197
- agent.stubs(:agent_socket_factory).returns(factory)
198
- agent.connect! if auto == :connect
199
- agent
200
- end
201
- end
202
-
203
- end
204
-
205
- end
@@ -1,105 +0,0 @@
1
- require 'common'
2
- require 'net/ssh/authentication/key_manager'
3
-
4
- module Authentication
5
-
6
- class TestKeyManager < Test::Unit::TestCase
7
- def test_key_files_and_known_identities_are_empty_by_default
8
- assert manager.key_files.empty?
9
- assert manager.known_identities.empty?
10
- end
11
-
12
- def test_assume_agent_is_available_by_default
13
- assert manager.use_agent?
14
- end
15
-
16
- def test_add_ensures_list_is_unique
17
- manager.add "/first"
18
- manager.add "/second"
19
- manager.add "/third"
20
- manager.add "/second"
21
- assert_equal %w(/first /second /third), manager.key_files
22
- end
23
-
24
- def test_use_agent_should_be_set_to_false_if_agent_could_not_be_found
25
- Net::SSH::Authentication::Agent.expects(:connect).raises(Net::SSH::Authentication::AgentNotAvailable)
26
- assert manager.use_agent?
27
- assert_nil manager.agent
28
- assert !manager.use_agent?
29
- end
30
-
31
- def test_each_identity_should_load_from_key_files
32
- manager.stubs(:agent).returns(nil)
33
-
34
- stub_file_key "/first", rsa
35
- stub_file_key "/second", dsa
36
-
37
- identities = []
38
- manager.each_identity { |identity| identities << identity }
39
-
40
- assert_equal 2, identities.length
41
- assert_equal rsa.to_blob, identities.first.to_blob
42
- assert_equal dsa.to_blob, identities.last.to_blob
43
-
44
- assert_equal({:from => :file, :file => "/first", :key => rsa}, manager.known_identities[rsa])
45
- assert_equal({:from => :file, :file => "/second", :key => dsa}, manager.known_identities[dsa])
46
- end
47
-
48
- def test_identities_should_load_from_agent
49
- manager.stubs(:agent).returns(agent)
50
-
51
- identities = []
52
- manager.each_identity { |identity| identities << identity }
53
-
54
- assert_equal 2, identities.length
55
- assert_equal rsa.to_blob, identities.first.to_blob
56
- assert_equal dsa.to_blob, identities.last.to_blob
57
-
58
- assert_equal({:from => :agent}, manager.known_identities[rsa])
59
- assert_equal({:from => :agent}, manager.known_identities[dsa])
60
- end
61
-
62
- def test_sign_with_agent_originated_key_should_request_signature_from_agent
63
- manager.stubs(:agent).returns(agent)
64
- manager.each_identity { |identity| } # preload the known_identities
65
- agent.expects(:sign).with(rsa, "hello, world").returns("abcxyz123")
66
- assert_equal "abcxyz123", manager.sign(rsa, "hello, world")
67
- end
68
-
69
- def test_sign_with_file_originated_key_should_load_private_key_and_sign_with_it
70
- manager.stubs(:agent).returns(nil)
71
- stub_file_key "/first", rsa(512), true
72
- rsa.expects(:ssh_do_sign).with("hello, world").returns("abcxyz123")
73
- manager.each_identity { |identity| } # preload the known_identities
74
- assert_equal "\0\0\0\assh-rsa\0\0\0\011abcxyz123", manager.sign(rsa, "hello, world")
75
- end
76
-
77
- private
78
-
79
- def stub_file_key(name, key, also_private=false)
80
- manager.add(name)
81
- File.expects(:readable?).with(name).returns(true)
82
- File.expects(:readable?).with(name + ".pub").returns(false)
83
- Net::SSH::KeyFactory.expects(:load_private_key).with(name, nil).returns(key).at_least_once
84
- key.expects(:public_key).returns(key)
85
- end
86
-
87
- def rsa(size=32)
88
- @rsa ||= OpenSSL::PKey::RSA.new(size)
89
- end
90
-
91
- def dsa
92
- @dsa ||= OpenSSL::PKey::DSA.new(32)
93
- end
94
-
95
- def agent
96
- @agent ||= stub("agent", :identities => [rsa, dsa])
97
- end
98
-
99
- def manager
100
- @manager ||= Net::SSH::Authentication::KeyManager.new(nil)
101
- end
102
-
103
- end
104
-
105
- end
@@ -1,93 +0,0 @@
1
- require 'common'
2
- require 'net/ssh/authentication/session'
3
-
4
- module Authentication
5
-
6
- class TestSession < Test::Unit::TestCase
7
- include Net::SSH::Transport::Constants
8
- include Net::SSH::Authentication::Constants
9
-
10
- def test_constructor_should_set_defaults
11
- assert_equal %w(publickey hostbased password keyboard-interactive), session.auth_methods
12
- assert_equal session.auth_methods, session.allowed_auth_methods
13
- end
14
-
15
- def test_authenticate_should_raise_error_if_service_request_fails
16
- transport.expect do |t, packet|
17
- assert_equal SERVICE_REQUEST, packet.type
18
- assert_equal "ssh-userauth", packet.read_string
19
- t.return(255)
20
- end
21
-
22
- assert_raises(Net::SSH::Exception) { session.authenticate("next service", "username", "password") }
23
- end
24
-
25
- def test_authenticate_should_return_false_if_all_auth_methods_fail
26
- transport.expect do |t, packet|
27
- assert_equal SERVICE_REQUEST, packet.type
28
- assert_equal "ssh-userauth", packet.read_string
29
- t.return(SERVICE_ACCEPT)
30
- end
31
-
32
- Net::SSH::Authentication::Methods::Publickey.any_instance.expects(:authenticate).with("next service", "username", "password").returns(false)
33
- Net::SSH::Authentication::Methods::Hostbased.any_instance.expects(:authenticate).with("next service", "username", "password").returns(false)
34
- Net::SSH::Authentication::Methods::Password.any_instance.expects(:authenticate).with("next service", "username", "password").returns(false)
35
- Net::SSH::Authentication::Methods::KeyboardInteractive.any_instance.expects(:authenticate).with("next service", "username", "password").returns(false)
36
-
37
- assert_equal false, session.authenticate("next service", "username", "password")
38
- end
39
-
40
- def test_next_message_should_silently_handle_USERAUTH_BANNER_packets
41
- transport.return(USERAUTH_BANNER, :string, "Howdy, folks!")
42
- transport.return(SERVICE_ACCEPT)
43
- assert_equal SERVICE_ACCEPT, session.next_message.type
44
- end
45
-
46
- def test_next_message_should_understand_USERAUTH_FAILURE
47
- transport.return(USERAUTH_FAILURE, :string, "a,b,c", :bool, false)
48
- packet = session.next_message
49
- assert_equal USERAUTH_FAILURE, packet.type
50
- assert_equal %w(a b c), session.allowed_auth_methods
51
- end
52
-
53
- (60..79).each do |type|
54
- define_method("test_next_message_should_return_packets_of_type_#{type}") do
55
- transport.return(type)
56
- assert_equal type, session.next_message.type
57
- end
58
- end
59
-
60
- def test_next_message_should_understand_USERAUTH_SUCCESS
61
- transport.return(USERAUTH_SUCCESS)
62
- assert !transport.hints[:authenticated]
63
- assert_equal USERAUTH_SUCCESS, session.next_message.type
64
- assert transport.hints[:authenticated]
65
- end
66
-
67
- def test_next_message_should_raise_error_on_unrecognized_packet_types
68
- transport.return(1)
69
- assert_raises(Net::SSH::Exception) { session.next_message }
70
- end
71
-
72
- def test_expect_message_should_raise_exception_if_next_packet_is_not_expected_type
73
- transport.return(SERVICE_ACCEPT)
74
- assert_raises(Net::SSH::Exception) { session.expect_message(USERAUTH_BANNER) }
75
- end
76
-
77
- def test_expect_message_should_return_packet_if_next_packet_is_expected_type
78
- transport.return(SERVICE_ACCEPT)
79
- assert_equal SERVICE_ACCEPT, session.expect_message(SERVICE_ACCEPT).type
80
- end
81
-
82
- private
83
-
84
- def session(options={})
85
- @session ||= Net::SSH::Authentication::Session.new(transport(options), options)
86
- end
87
-
88
- def transport(options={})
89
- @transport ||= MockTransport.new(options)
90
- end
91
- end
92
-
93
- end