diff options
Diffstat (limited to 'vendor/rsync_command/test')
-rw-r--r-- | vendor/rsync_command/test/rsync_test.rb | 74 | ||||
-rw-r--r-- | vendor/rsync_command/test/ssh_options_test.rb | 61 |
2 files changed, 135 insertions, 0 deletions
diff --git a/vendor/rsync_command/test/rsync_test.rb b/vendor/rsync_command/test/rsync_test.rb new file mode 100644 index 0000000..7860f73 --- /dev/null +++ b/vendor/rsync_command/test/rsync_test.rb @@ -0,0 +1,74 @@ +require 'test/unit' +require File.expand_path('../../lib/rsync_command', __FILE__) + +if RUBY_VERSION >= '1.9' + SimpleOrderedHash = ::Hash +else + class SimpleOrderedHash < Hash + def each; self.keys.map(&:to_s).sort.each {|key| yield [key.to_sym, self[key.to_sym]]}; end + end +end + +class RsyncTest < Test::Unit::TestCase + + def test_build_simple_command + command = rsync_command('bar', 'foo') + assert_equal 'rsync -az bar foo', command + end + + def test_allows_passing_delete + command = rsync_command('bar', 'foo', :delete => true) + assert_equal 'rsync -az --delete bar foo', command + end + + def test_allows_specifying_an_exclude + command = rsync_command('bar', 'foo', :excludes => '.git') + assert_equal "rsync -az --exclude='.git' bar foo", command + end + + def test_ssh_options_keys_only_lists_existing_files + command = rsync_command('.', 'foo', :ssh => { :keys => [__FILE__, "#{__FILE__}dadijofs"] }) + assert_match /-i '#{__FILE__}'/, command + end + + def test_ssh_options_ignores_keys_if_nil + command = rsync_command('.', 'foo', :ssh => { :keys => nil }) + assert_equal 'rsync -az . foo', command + command = rsync_command('bar', 'foo') + assert_equal 'rsync -az bar foo', command + end + + def test_ssh_options_config_adds_flag + command = rsync_command('.', 'foo', :ssh => { :config => __FILE__ }) + assert_equal %Q[rsync -az -e "ssh -F '#{__FILE__}'" . foo], command + end + + def test_ssh_options_port_adds_port + command = rsync_command('.', 'foo', :ssh => { :port => '30022' }) + assert_equal %Q[rsync -az -e "ssh -p 30022" . foo], command + end + + def test_ssh_options_ignores_config_if_nil_or_false + command = rsync_command('.', 'foo', :ssh => { :config => nil }) + assert_equal 'rsync -az . foo', command + command = rsync_command('.', 'foo', :ssh => { :config => false }) + assert_equal 'rsync -az . foo', command + end + + def test_remote_address + cmd = rsync_command('.', {:user => 'user', :host => 'box.local', :path => '/tmp'}) + assert_equal "rsync -az . user@box.local:/tmp", cmd + end + + #def test_remote_address_drops_at_when_user_is_nil + # assert_equal 'box.local:/tmp', SupplyDrop::Rsync.remote_address(nil, 'box.local', '/tmp') + #end + + protected + + def rsync_command(src, dest, options={}) + rsync = RsyncCommand.new(:flags => '-az') + rsync.command(src, dest, options) + end + +end
\ No newline at end of file diff --git a/vendor/rsync_command/test/ssh_options_test.rb b/vendor/rsync_command/test/ssh_options_test.rb new file mode 100644 index 0000000..1bffa00 --- /dev/null +++ b/vendor/rsync_command/test/ssh_options_test.rb @@ -0,0 +1,61 @@ +require 'test/unit' +require File.expand_path('../../lib/rsync_command', __FILE__) + +class SshOptionsTest < Test::Unit::TestCase + + def test_simple_ssh_options + options = ssh_options(Hash[ + :bind_address, '0.0.0.0', + :compression, true, + :compression_level, 1, + :config, '/etc/ssh/ssh_config', + :global_known_hosts_file, '/etc/ssh/known_hosts', + :host_name, 'myhost', + :keys_only, false, + :paranoid, true, + :port, 2222, + :timeout, 10000, + :user, 'root', + :user_known_hosts_file, '~/.ssh/known_hosts' + ]) + assert_match /-o BindAddress='0.0.0.0'/, options + assert_match /-o Compression='yes'/, options + assert_match %r{-o CompressionLevel='1' -F '/etc/ssh/ssh_config'}, options + assert_match %r{-o GlobalKnownHostsFile='/etc/ssh/known_hosts'}, options + assert_match /-o HostName='myhost'/, options + assert_match /-o StrictHostKeyChecking='yes' -p 2222/, options + assert_match /-o ConnectTimeout='10000' -l root/, options + assert_match %r{-o UserKnownHostsFile='~/.ssh/known_hosts'}, options + end + + def test_complex_ssh_options + options = ssh_options(Hash[ + :auth_methods, 'publickey', + :encryption, ['aes256-cbc', 'aes192-cbc'], + :hmac, 'hmac-sha2-256', + :host_key, 'ecdsa-sha2-nistp256-cert-v01@openssh.com', + :rekey_limit, 2*1024*1024, + :verbose, :debug, + :user_known_hosts_file, ['~/.ssh/known_hosts', '~/.ssh/production_known_hosts'] + ]) + assert_match /PasswordAuthentication='no'/, options + assert_match /PubkeyAuthentication='yes'/, options + assert_match /HostbasedAuthentication='no'/, options + assert_match /-o PasswordAuthentication='no'/, options + assert_match /-o PubkeyAuthentication='yes'/, options + assert_match /-o HostbasedAuthentication='no'/, options + assert_match /-o Ciphers='aes256-cbc,aes192-cbc'/, options + assert_match /-o MACs='hmac-sha2-256'/, options + assert_match /-o HostKeyAlgorithms='ecdsa-sha2-nistp256-cert-v01@openssh.com'/, options + assert_match /-o RekeyLimit='2M'/, options + assert_match %r{-o UserKnownHostsFile='~/.ssh/known_hosts'}, options + assert_match %r{-o UserKnownHostsFile='~/.ssh/production_known_hosts'}, options + assert_match /-o LogLevel='DEBUG'/, options + end + + protected + + def ssh_options(options) + RsyncCommand::SshOptions.new(options).to_flags + end +end |