diff options
Diffstat (limited to 'switchtower/test')
-rw-r--r-- | switchtower/test/actor_test.rb | 47 | ||||
-rw-r--r-- | switchtower/test/command_test.rb | 43 |
2 files changed, 69 insertions, 21 deletions
diff --git a/switchtower/test/actor_test.rb b/switchtower/test/actor_test.rb index bc33750b83..ed657ee26e 100644 --- a/switchtower/test/actor_test.rb +++ b/switchtower/test/actor_test.rb @@ -5,28 +5,24 @@ require 'test/unit' require 'switchtower/actor' require 'switchtower/logger' -module SwitchTower - class Actor - attr_reader :factory +class ActorTest < Test::Unit::TestCase - class DefaultConnectionFactory - def connect_to(server) - server - end + class TestingConnectionFactory + def initialize(config) end - class GatewayConnectionFactory - def connect_to(server) - server - end + def connect_to(server) + server end + end - def establish_gateway - GatewayConnectionFactory.new + class GatewayConnectionFactory + def connect_to(server) + server end end - class Command + class TestingCommand def self.invoked! @invoked = true end @@ -46,9 +42,18 @@ module SwitchTower self.class.invoked! end end -end -class ActorTest < Test::Unit::TestCase + class TestActor < SwitchTower::Actor + attr_reader :factory + + self.connection_factory = TestingConnectionFactory + self.command_factory = TestingCommand + + def establish_gateway + GatewayConnectionFactory.new + end + end + class MockConfiguration Role = Struct.new(:host, :options) @@ -79,8 +84,8 @@ class ActorTest < Test::Unit::TestCase end def setup - SwitchTower::Command.reset! - @actor = SwitchTower::Actor.new(MockConfiguration.new) + TestingCommand.reset! + @actor = TestActor.new(MockConfiguration.new) end def test_define_task_creates_method @@ -203,7 +208,7 @@ class ActorTest < Test::Unit::TestCase end @actor.foo - assert_instance_of SwitchTower::Actor::GatewayConnectionFactory, @actor.factory + assert_instance_of GatewayConnectionFactory, @actor.factory end def test_run_when_not_pretend @@ -213,7 +218,7 @@ class ActorTest < Test::Unit::TestCase @actor.configuration.pretend = false @actor.foo - assert SwitchTower::Command.invoked? + assert TestingCommand.invoked? end def test_run_when_pretend @@ -223,7 +228,7 @@ class ActorTest < Test::Unit::TestCase @actor.configuration.pretend = true @actor.foo - assert !SwitchTower::Command.invoked? + assert !TestingCommand.invoked? end def test_task_before_hook 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 |