Class Net::SSH::Test::Socket

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

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. open
  3. readpartial
  4. recv
  5. 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
22:     def initialize
23:       extend(Net::SSH::Transport::PacketStream)
24:       super "SSH-2.0-Test\r\n"
25: 
26:       @script = Script.new
27: 
28:       script.gets(:kexinit, 1, 2, 3, 4, "test", "ssh-rsa", "none", "none", "none", "none", "none", "none", "", "", false)
29:       script.sends(:kexinit)
30:       script.sends(:newkeys)
31:       script.gets(:newkeys)
32:     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
49:     def getpeername
50:       ::Socket.sockaddr_in(port, host)
51:     end
open (host, port)

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

[show source]
    # File lib/net/ssh/test/socket.rb, line 42
42:     def open(host, port)
43:       @host, @port = host, port
44:       self
45:     end
readpartial (n)
[show source]
    # File lib/net/ssh/test/socket.rb, line 58
58:     def readpartial(n)
59:       recv(n)
60:     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
54:     def recv(n)
55:       read(n) || ""
56:     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
36:     def write(data)
37:       # black hole, because we don't actually care about what gets written
38:     end