summaryrefslogtreecommitdiff
path: root/vendor/rsync_command/test
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rsync_command/test')
-rw-r--r--vendor/rsync_command/test/rsync_test.rb74
-rw-r--r--vendor/rsync_command/test/ssh_options_test.rb61
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