diff options
author | Robey Pointer <robey@lag.net> | 2008-03-22 19:57:51 -0700 |
---|---|---|
committer | Robey Pointer <robey@lag.net> | 2008-03-22 19:57:51 -0700 |
commit | e5a1b4bf569599b53016374f96e53639799ed6d3 (patch) | |
tree | 0086bd5919af7e6e12c9230f53ec50aeec9304e4 /tests/test_auth.py | |
parent | 7b819f0e917dadedb7cc9399d33fe7b5f9c63a9e (diff) |
[project @ robey@lag.net-20080323025751-de0lem9pi4oydt2g]
bug 193779:
catch EOFError in auth, and turn it into an auth exception. add a unit
test to verify.
Diffstat (limited to 'tests/test_auth.py')
-rw-r--r-- | tests/test_auth.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/tests/test_auth.py b/tests/test_auth.py index a18c57d0..fadd8cad 100644 --- a/tests/test_auth.py +++ b/tests/test_auth.py @@ -25,7 +25,8 @@ import threading import unittest from paramiko import Transport, ServerInterface, RSAKey, DSSKey, \ - SSHException, BadAuthenticationType, InteractiveQuery, ChannelException + SSHException, BadAuthenticationType, InteractiveQuery, ChannelException, \ + AuthenticationException from paramiko import AUTH_FAILED, AUTH_PARTIALLY_SUCCESSFUL, AUTH_SUCCESSFUL from paramiko import OPEN_SUCCEEDED, OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED from loop import LoopSocket @@ -67,6 +68,8 @@ class NullServer (ServerInterface): return AUTH_SUCCESSFUL if (username == 'non-utf8') and (password == '\xff'): return AUTH_SUCCESSFUL + if username == 'bad-server': + raise Exception("Ack!") return AUTH_FAILED def check_auth_publickey(self, username, key): @@ -147,7 +150,7 @@ class AuthTest (unittest.TestCase): self.assert_(False) except: etype, evalue, etb = sys.exc_info() - self.assert_(issubclass(etype, SSHException)) + self.assert_(issubclass(etype, AuthenticationException)) self.tc.auth_password(username='slowdive', password='pygmalion') self.verify_finished() @@ -213,3 +216,16 @@ class AuthTest (unittest.TestCase): remain = self.tc.auth_password('non-utf8', '\xff') self.assertEquals([], remain) self.verify_finished() + + def test_8_auth_gets_disconnected(self): + """ + verify that we catch a server disconnecting during auth, and report + it as an auth failure. + """ + self.start_server() + self.tc.connect(hostkey=self.public_host_key) + try: + remain = self.tc.auth_password('bad-server', 'hello') + except: + etype, evalue, etb = sys.exc_info() + self.assert_(issubclass(etype, AuthenticationException)) |