40 lines
1.4 KiB
Ruby
40 lines
1.4 KiB
Ruby
# -*- coding: binary -*-
|
|
require 'net/ssh/buffer'
|
|
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 received by the local (client) host. These are created
|
|
# automatically by Net::SSH::Test::Script and Net::SSH::Test::Channel by any
|
|
# of the gets_* methods.
|
|
class RemotePacket < Packet
|
|
# Returns +true+; this is a remote packet.
|
|
def remote?
|
|
true
|
|
end
|
|
|
|
# The #process method should only be called on Net::SSH::Test::LocalPacket
|
|
# packets; if it is attempted on a remote packet, then it is an expectation
|
|
# mismatch (a remote packet was received when a local packet was expected
|
|
# to be sent). This will happen when either your test script
|
|
# (Net::SSH::Test::Script) or your program are wrong.
|
|
def process(packet)
|
|
raise "received packet type #{packet.read_byte} and was not expecting any packet"
|
|
end
|
|
|
|
# Returns this remote packet as a string, suitable for parsing by
|
|
# Net::SSH::Transport::PacketStream and friends. When a remote packet is
|
|
# received, this method is called and the result concatenated onto the
|
|
# input buffer for the packet stream.
|
|
def to_s
|
|
@to_s ||= begin
|
|
instantiate!
|
|
string = Net::SSH::Buffer.from(:byte, @type, *types.zip(@data).flatten).to_s
|
|
[string.length, string].pack("NA*")
|
|
end
|
|
end
|
|
end
|
|
|
|
end; end; end
|