Sha256: 9e1a3115d5b3813ac54025d3bf77dd2a0e0c270f7e8c80496548964013ea264d

Contents?: true

Size: 1.92 KB

Versions: 48

Compression:

Stored size: 1.92 KB

Contents

require 'net/ssh/packet'
require 'net/ssh/test/packet'

module Net
  module SSH
    module Test

      # This is a specialization of Net::SSH::Test::Packet for representing mock
      # packets that are sent from the local (client) host. These are created
      # automatically by Net::SSH::Test::Script and Net::SSH::Test::Channel by any
      # of the sends_* methods.
      class LocalPacket < Packet
        attr_reader :init

        # Extend the default Net::SSH::Test::Packet constructor to also accept an
        # optional block, which is used to finalize the initialization of the
        # packet when #process is first called.
        def initialize(type, *args, &block)
          super(type, *args)
          @init = block
        end

        # Returns +true+; this is a local packet.
        def local?
          true
        end

        # Called by Net::SSH::Test::Extensions::PacketStream#test_enqueue_packet
        # to mimic remote processing of a locally-sent packet. It compares the
        # packet it was given with the contents of this LocalPacket's data, to see
        # if what was sent matches what was scripted. If it differs in any way,
        # an exception is raised.
        def process(packet)
          @init.call(Net::SSH::Packet.new(packet.to_s)) if @init
          type = packet.read_byte
          raise "expected #{@type}, but got #{type}" if @type != type

          @data.zip(types).each do |expected, _type|
            _type ||= case expected
                      when nil then break
                      when Numeric then :long
                      when String then :string
                      when TrueClass, FalseClass then :bool
                      end

            actual = packet.send("read_#{_type}")
            next if expected.nil?
            raise "expected #{_type} #{expected.inspect} but got #{actual.inspect}" unless expected == actual
          end
        end
      end

    end
  end
end

Version data entries

48 entries across 41 versions & 3 rubygems

Version Path
vagrant-unbundled-2.2.19.0 vendor/bundle/ruby/3.0.0/gems/net-ssh-6.1.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.2.18.0 vendor/bundle/ruby/3.0.0/gems/net-ssh-6.1.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/3.0.0/gems/net-ssh-6.1.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/2.7.0/gems/net-ssh-6.2.0.rc1/lib/net/ssh/test/local_packet.rb
net-ssh-6.2.0.rc2 lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.2.14.0 vendor/bundle/ruby/2.7.0/gems/net-ssh-6.2.0.rc1/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.2.10.0 vendor/bundle/ruby/2.7.0/gems/net-ssh-6.1.0/lib/net/ssh/test/local_packet.rb
net-ssh-6.2.0.rc1 lib/net/ssh/test/local_packet.rb
net-ssh-6.2.0.beta1 lib/net/ssh/test/local_packet.rb
net-ssh-6.1.0 lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.2.9.0 vendor/bundle/ruby/2.7.0/gems/net-ssh-5.2.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.2.8.0 vendor/bundle/ruby/2.7.0/gems/net-ssh-5.2.0/lib/net/ssh/test/local_packet.rb
net-ssh-6.1.0.rc1 lib/net/ssh/test/local_packet.rb
net-ssh-6.0.2 lib/net/ssh/test/local_packet.rb
net-ssh-6.0.1 lib/net/ssh/test/local_packet.rb
net-ssh-6.0.0 lib/net/ssh/test/local_packet.rb
net-ssh-6.0.0.rc1 lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.7.0/gems/net-ssh-5.1.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.6.0/gems/net-ssh-5.1.0/lib/net/ssh/test/local_packet.rb
net-ssh-6.0.0.beta2 lib/net/ssh/test/local_packet.rb