summaryrefslogtreecommitdiff
path: root/test/transport/test_server_version.rb
diff options
context:
space:
mode:
authoraaalex <apeuchert@googlemail.com>2009-11-04 22:43:42 +0800
committerDelano Mandelbaum <delano.mandelbaum@gmail.com>2009-11-10 04:01:08 +0800
commit2fc2d203ed731888ed393449e6ececbc2ad3dfdd (patch)
tree7f104d85c83f0084611286a48734d941fab42af2 /test/transport/test_server_version.rb
parent63fda966ca5429a694b2f9b654a03a45724072ec (diff)
downloadnet-ssh-2fc2d203ed731888ed393449e6ececbc2ad3dfdd.tar.gz
switched from #readchar to #readpartial(1) in lib/net/ssh/transport/server_version.rb, so that closed sockets are recognized
Diffstat (limited to 'test/transport/test_server_version.rb')
-rw-r--r--test/transport/test_server_version.rb19
1 files changed, 14 insertions, 5 deletions
diff --git a/test/transport/test_server_version.rb b/test/transport/test_server_version.rb
index 32c8360..2fa957d 100644
--- a/test/transport/test_server_version.rb
+++ b/test/transport/test_server_version.rb
@@ -28,6 +28,10 @@ module Transport
assert_raises(Net::SSH::Exception) { subject(socket(false, "SSH-1.4-Testing_1.0\r\n")) }
end
+ def test_unexpected_server_close_should_raise_exception
+ assert_raises(Net::SSH::Disconnect) { subject(socket(false, "\r\nDestination server does not have Ssh activated.\r\nContact Cisco Systems, Inc to purchase a\r\nlicense key to activate Ssh.\r\n", true)) }
+ end
+
def test_header_lines_should_be_accumulated
s = subject(socket(true, "Welcome\r\nAnother line\r\nSSH-2.0-Testing_1.0\r\n"))
assert_equal "Welcome\r\nAnother line\r\n", s.header
@@ -40,16 +44,21 @@ module Transport
private
- def socket(good, version_header)
+ def socket(good, version_header, raise_eot=false)
socket = mock("socket")
data = version_header.split('')
recv_times = data.length
- if data[-1] != "\n"
- recv_times += 1
- end
+ recv_times += 1 if data[-1] != "\n"
+
+ unless raise_eot
+
# socket.expects(:recv).with(1).times(recv_times).returns(*data).then.returns(nil)
- socket.expects(:readchar).times(recv_times).returns(*data).then.returns(nil)
+# socket.expects(:readchar).times(recv_times).returns(*data).then.returns(nil)
+ socket.expects(:readpartial).with(1).times(recv_times).returns(*data).then.returns(nil)
+ else
+ socket.expects(:readpartial).with(1).times(recv_times+1).returns(*data).then.raises(EOFError, "end of file reached")
+ end
if good
socket.expects(:write).with("#{Net::SSH::Transport::ServerVersion::PROTO_VERSION}\r\n")