Sha256: 234f16414143f76edc06bc916eb6bf822c1e72fd24b0c9b2d45f2c3243024ae5

Contents?: true

Size: 1.71 KB

Versions: 113

Compression:

Stored size: 1.71 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

113 entries across 100 versions & 11 rubygems

Version Path
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.1.2.0 vendor/bundle/ruby/2.3.0/gems/net-ssh-4.2.0/lib/net/ssh/test/local_packet.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/net-ssh-4.2.0/lib/net/ssh/test/local_packet.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/net-ssh-4.2.0/lib/net/ssh/test/local_packet.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/net-ssh-4.2.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.1.1.0 vendor/bundle/ruby/2.5.0/gems/net-ssh-4.2.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.0.4.0 vendor/bundle/ruby/2.5.0/gems/net-ssh-4.2.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.0.3.0 vendor/bundle/ruby/2.5.0/gems/net-ssh-4.2.0/lib/net/ssh/test/local_packet.rb
net-ssh-5.0.0.beta1 lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.0.2.0 vendor/bundle/ruby/2.5.0/gems/net-ssh-4.2.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.0.2.0 vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.0.1.0 vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-2.0.0.1 vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/lib/net/ssh/test/local_packet.rb
net-ssh-4.2.0 lib/net/ssh/test/local_packet.rb
vagrant-unbundled-1.9.8.1 vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/lib/net/ssh/test/local_packet.rb
vagrant-unbundled-1.9.7.1 vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/lib/net/ssh/test/local_packet.rb
net-ssh-4.2.0.rc2 lib/net/ssh/test/local_packet.rb
net-ssh-4.2.0.rc1 lib/net/ssh/test/local_packet.rb
vagrant-unbundled-1.9.5.1 vendor/bundle/ruby/2.4.0/gems/net-ssh-4.1.0/lib/net/ssh/test/local_packet.rb
savant-echo-1.0.4 bin/alexa-0.1.2-osx/lib/vendor/ruby/2.2.0/gems/net-ssh-3.2.0/lib/net/ssh/test/local_packet.rb