class Net::SSH::Test::Socket

  1. lib/net/ssh/test/socket.rb
Parent: Test

A mock socket implementation for use in testing. It implements the minimum necessary interface for interacting with the rest of the Net::SSH::Test system.

Methods

Public Class

  1. new

Public Instance

  1. getpeername
  2. host
  3. open
  4. port
  5. readpartial
  6. recv
  7. script
  8. write

Attributes

host [R]
port [R]
script [R]

The Net::SSH::Test::Script object in use by this socket. This is the canonical script instance that should be used for any test depending on this socket instance.

Public Class methods

new ()

Create a new test socket. This will also instantiate a new Net::SSH::Test::Script and seed it with the necessary events to power the initialization of the connection.

[show source]
# File lib/net/ssh/test/socket.rb, line 22
def initialize
  extend(Net::SSH::Transport::PacketStream)
  super "SSH-2.0-Test\r\n"

  @script = Script.new

  script.gets(:kexinit, 1, 2, 3, 4, "test", "ssh-rsa", "none", "none", "none", "none", "none", "none", "", "", false)
  script.sends(:kexinit)
  script.sends(:newkeys)
  script.gets(:newkeys)
end

Public Instance methods

getpeername ()

Returns a sockaddr struct for the port and host that were used when the socket was instantiated.

[show source]
# File lib/net/ssh/test/socket.rb, line 49
def getpeername
  ::Socket.sockaddr_in(port, host)
end
open (host, port, options={})

Allows the socket to also mimic a socket factory, simply returning self.

[show source]
# File lib/net/ssh/test/socket.rb, line 42
def open(host, port, options={})
  @host, @port = host, port
  self
end
readpartial (n)
[show source]
# File lib/net/ssh/test/socket.rb, line 58
def readpartial(n)
  recv(n)
end
recv (n)

Alias to read, but never returns nil (returns an empty string instead).

[show source]
# File lib/net/ssh/test/socket.rb, line 54
def recv(n)
  read(n) || ""
end
write (data)

This doesn't actually do anything, since we don't really care what gets written.

[show source]
# File lib/net/ssh/test/socket.rb, line 36
def write(data)
  # black hole, because we don't actually care about what gets written
end