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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
require 'helper'
require 'tempfile'
module SSHKit
module Backend
class TestNetssh < UnitTest
def backend
@backend ||= Netssh
end
def test_net_ssh_configuration_options
backend.configure do |ssh|
ssh.pty = true
ssh.connection_timeout = 30
ssh.ssh_options = {
keys: %w(/home/user/.ssh/id_rsa),
forward_agent: false,
auth_methods: %w(publickey password)
}
end
assert_equal 30, backend.config.connection_timeout
assert_equal true, backend.config.pty
assert_equal %w(/home/user/.ssh/id_rsa), backend.config.ssh_options[:keys]
assert_equal false, backend.config.ssh_options[:forward_agent]
assert_equal %w(publickey password), backend.config.ssh_options[:auth_methods]
assert_instance_of backend::KnownHosts, backend.config.ssh_options[:known_hosts]
end
def test_netssh_ext
assert_includes Net::SSH::Config.default_files, "#{Dir.pwd}/.ssh/config"
end
def test_transfer_summarizer
netssh = Netssh.new(Host.new('fake'))
summarizer = netssh.send(:transfer_summarizer,'Transferring')
[
[1, 1000, :debug, 'Transferring afile 0.1%'],
[1, 100, :debug, 'Transferring afile 1.0%'],
[99, 1000, :debug, 'Transferring afile 9.9%'],
[15, 100, :info, 'Transferring afile 15.0%'],
[1, 3, :info, 'Transferring afile 33.33%'],
[0, 1, :debug, 'Transferring afile 0.0%'],
[1, 2, :info, 'Transferring afile 50.0%'],
[0, 0, :warn, 'percentage 0/0'],
[1023, 343, :info, 'Transferring'],
].each do |transferred,total,method,substring|
netssh.expects(method).with { |msg| msg.include?(substring) }
summarizer.call(nil,'afile',transferred,total)
end
end
def test_transfer_summarizer_uses_verbosity
netssh = Netssh.new(Host.new('fake'))
summarizer = netssh.send(:transfer_summarizer, 'Transferring', verbosity: :ERROR)
netssh.expects(:error).with { |msg| msg.include?('Transferring afile 15.0%') }
summarizer.call(nil,'afile',15,100)
end
if Net::SSH::Version::CURRENT >= Net::SSH::Version[3, 1, 0]
def test_known_hosts_for_when_all_hosts_are_recognized
perform_known_hosts_test('github', 'github.com')
end
def test_known_hosts_for_when_an_host_hash_is_recognized
perform_known_hosts_test('github_hash', 'github.com')
end
def test_known_hosts_for_with_multiple_hosts
perform_known_hosts_test('github', '192.30.252.123,github.com', 0)
perform_known_hosts_test('github_ip', '192.30.252.123,github.com', 1)
end
end
private
def perform_known_hosts_test(hostfile, hostlist, keys_count = 1)
source = File.join(File.dirname(__FILE__), '../../known_hosts', hostfile)
kh = Netssh::KnownHosts.new
keys = kh.search_for(hostlist, user_known_hosts_file: source, global_known_hosts_file: Tempfile.new('sshkit-test').path)
assert_instance_of ::Net::SSH::HostKeys, keys
assert_equal(keys_count, keys.count)
keys.each do |key|
assert_equal("ssh-rsa", key.ssh_type)
end
end
end
end
end
|