aboutsummaryrefslogtreecommitdiffstats
path: root/switchtower/test/command_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'switchtower/test/command_test.rb')
-rw-r--r--switchtower/test/command_test.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/switchtower/test/command_test.rb b/switchtower/test/command_test.rb
new file mode 100644
index 0000000000..7005ba0f2d
--- /dev/null
+++ b/switchtower/test/command_test.rb
@@ -0,0 +1,43 @@
+$:.unshift File.dirname(__FILE__) + "/../lib"
+
+require 'stringio'
+require 'test/unit'
+require 'switchtower/command'
+
+class CommandTest < Test::Unit::TestCase
+ class MockSession
+ def open_channel
+ { :closed => true, :status => 0 }
+ end
+ end
+
+ class MockActor
+ attr_reader :sessions
+
+ def initialize
+ @sessions = Hash.new { |h,k| h[k] = MockSession.new }
+ end
+ end
+
+ def setup
+ @actor = MockActor.new
+ end
+
+ def test_command_executes_on_all_servers
+ command = SwitchTower::Command.new(%w(server1 server2 server3),
+ "hello", nil, {}, @actor)
+ assert_equal %w(server1 server2 server3), @actor.sessions.keys.sort
+ end
+
+ def test_command_with_newlines
+ command = SwitchTower::Command.new(%w(server1), "hello\nworld", nil, {},
+ @actor)
+ assert_equal "hello\\\nworld", command.command
+ end
+
+ def test_command_with_windows_newlines
+ command = SwitchTower::Command.new(%w(server1), "hello\r\nworld", nil, {},
+ @actor)
+ assert_equal "hello\\\nworld", command.command
+ end
+end