Module: Net::SSH::Test

Module | Net::SSH::Test
In: | lib/net/ssh/test.rb lib/net/ssh/test/channel.rb lib/net/ssh/test/extensions.rb lib/net/ssh/test/kex.rb lib/net/ssh/test/local_packet.rb lib/net/ssh/test/packet.rb lib/net/ssh/test/remote_packet.rb lib/net/ssh/test/script.rb lib/net/ssh/test/socket.rb

This module may be used in unit tests, for when you want to test that your SSH state machines are really doing what you expect they are doing. You will typically include this module in your unit test class, and then build a "story" of expected sends and receives:

      require 'test/unit'
      require 'net/ssh/test'

      class MyTest < Test::Unit::TestCase
        include Net::SSH::Test

        def test_exec_via_channel_works
          story do |session|
            channel = session.opens_channel
            channel.sends_exec "ls"
            channel.gets_data "result of ls"
            channel.gets_close
            channel.sends_close
          end

          assert_scripted do
            result = nil

            connection.open_channel do |ch|
              ch.exec("ls") do |success|
                ch.on_data { |c, data| result = data }
                ch.on_close { |c| c.close }
              end
            end

            connection.loop
            assert_equal "result of ls", result
          end
        end
      end

See Net::SSH::Test::Channel and Net::SSH::Test::Script for more options.

Note that the Net::SSH::Test system is rather finicky yet, and can be kind of frustrating to get working. Any suggestions for improvement will be welcome!

### Methods

assert_scripted connection socket story transport

### Classes and Modules

Module Net::SSH::Test::Extensions
Class Net::SSH::Test::Channel
Class Net::SSH::Test::Kex
Class Net::SSH::Test::LocalPacket
Class Net::SSH::Test::Packet
Class Net::SSH::Test::RemotePacket
Class Net::SSH::Test::Script
Class Net::SSH::Test::Socket

### Public Instance methods

assert_scripted() {|| ...}

First asserts that a story has been described (see story). Then yields, and then asserts that all items described in the script have been processed. Typically, this is called immediately after a story has been built, and the SSH commands being tested are then executed within the block passed to this assertion.

connection(options={})

Returns the connection session (Net::SSH::Connection::Session) for use in these tests. It is a fully functional SSH session, operating over a mock socket (socket).

socket(options={})

Returns the test socket instance to use for these tests (see Net::SSH::Test::Socket).

story() {|socket.script if block_given?| ...}

If a block is given, yields the script for the test socket (socket). Otherwise, simply returns the socket‘s script. See Net::SSH::Test::Script.

transport(options={})

Returns the transport session (Net::SSH::Transport::Session) for use in these tests. It is a fully functional SSH transport session, operating over a mock socket (socket).

[Validate]