forked from ParallelSSH/ssh2-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_exceptions.py
More file actions
101 lines (94 loc) · 7.01 KB
/
test_exceptions.py
File metadata and controls
101 lines (94 loc) · 7.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import unittest
from ssh2.error_codes import LIBSSH2_ERROR_NONE, LIBSSH2_ERROR_SOCKET_NONE, \
LIBSSH2_ERROR_BANNER_RECV, LIBSSH2_ERROR_BANNER_SEND, \
LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE, LIBSSH2_ERROR_TIMEOUT, \
LIBSSH2_ERROR_HOSTKEY_INIT, LIBSSH2_ERROR_HOSTKEY_SIGN, \
LIBSSH2_ERROR_DECRYPT, LIBSSH2_ERROR_SOCKET_DISCONNECT, \
LIBSSH2_ERROR_PROTO, LIBSSH2_ERROR_PASSWORD_EXPIRED, \
LIBSSH2_ERROR_FILE, LIBSSH2_ERROR_METHOD_NONE, \
LIBSSH2_ERROR_AUTHENTICATION_FAILED, LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED, \
LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED, LIBSSH2_ERROR_CHANNEL_OUTOFORDER, \
LIBSSH2_ERROR_CHANNEL_FAILURE, LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED, \
LIBSSH2_ERROR_CHANNEL_UNKNOWN, LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED, \
LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED, LIBSSH2_ERROR_CHANNEL_CLOSED, \
LIBSSH2_ERROR_CHANNEL_EOF_SENT, LIBSSH2_ERROR_SCP_PROTOCOL, \
LIBSSH2_ERROR_ZLIB, LIBSSH2_ERROR_SOCKET_TIMEOUT, \
LIBSSH2_ERROR_SFTP_PROTOCOL, LIBSSH2_ERROR_REQUEST_DENIED, \
LIBSSH2_ERROR_METHOD_NOT_SUPPORTED, LIBSSH2_ERROR_INVAL, \
LIBSSH2_ERROR_INVALID_POLL_TYPE, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \
LIBSSH2_ERROR_EAGAIN, LIBSSH2CHANNEL_EAGAIN, \
LIBSSH2_ERROR_BUFFER_TOO_SMALL, LIBSSH2_ERROR_BAD_USE, \
LIBSSH2_ERROR_COMPRESS, LIBSSH2_ERROR_OUT_OF_BOUNDARY, \
LIBSSH2_ERROR_AGENT_PROTOCOL, LIBSSH2_ERROR_SOCKET_RECV, \
LIBSSH2_ERROR_SOCKET_SEND, LIBSSH2_ERROR_ENCRYPT, \
LIBSSH2_ERROR_BAD_SOCKET, LIBSSH2_ERROR_KNOWN_HOSTS
from ssh2.exceptions import SSH2Error, AgentError, AuthenticationError, \
AgentConnectionError, AgentAuthenticationError, AgentListIdentitiesError, \
AgentGetIdentityError, AgentProtocolError, SessionError, \
SessionStartupError, SessionHandshakeError, SessionHostKeyError, \
BannerRecvError, BannerSendError, KeyExchangeError, Timeout, \
HostkeyInitError, HostkeySignError, DecryptError, SocketDisconnectError, \
ProtocolError, PasswordExpiredError, FileError, MethodNoneError, \
PublicKeyError, PublicKeyInitError, PublickeyUnverifiedError, \
ChannelError, ChannelOutOfOrderError, ChannelFailure, \
ChannelRequestDenied, ChannelUnknownError, ChannelWindowExceeded, \
ChannelPacketExceeded, ChannelClosedError, ChannelEOFSentError, \
SCPProtocolError, ZlibError, SocketTimeout, \
RequestDeniedError, MethodNotSupported, InvalidRequestError, \
InvalidPollTypeError, PublicKeyProtocolError, BufferTooSmallError, \
BadUseError, CompressError, OutOfBoundaryError, SocketRecvError, \
SocketSendError, EncryptError, BadSocketError, SFTPError, SFTPProtocolError, \
KnownHostError, UnknownError
from ssh2.utils import handle_error_codes
class ErrorCodeExceptionsTest(unittest.TestCase):
def test_no_exceptions(self):
self.assertEqual(handle_error_codes(0), 0)
self.assertEqual(handle_error_codes(LIBSSH2_ERROR_EAGAIN), LIBSSH2_ERROR_EAGAIN)
def test_general_errors(self):
self.assertRaises(AuthenticationError, handle_error_codes, LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED)
self.assertRaises(SSH2Error, handle_error_codes, LIBSSH2_ERROR_SOCKET_NONE)
self.assertRaises(BannerRecvError, handle_error_codes, LIBSSH2_ERROR_BANNER_RECV)
self.assertRaises(BannerSendError, handle_error_codes, LIBSSH2_ERROR_BANNER_SEND)
self.assertRaises(KeyExchangeError, handle_error_codes, LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE)
self.assertRaises(Timeout, handle_error_codes, LIBSSH2_ERROR_TIMEOUT)
self.assertRaises(HostkeyInitError, handle_error_codes, LIBSSH2_ERROR_HOSTKEY_INIT)
self.assertRaises(HostkeySignError, handle_error_codes, LIBSSH2_ERROR_HOSTKEY_SIGN)
self.assertRaises(DecryptError, handle_error_codes, LIBSSH2_ERROR_DECRYPT)
self.assertRaises(SocketDisconnectError, handle_error_codes, LIBSSH2_ERROR_SOCKET_DISCONNECT)
self.assertRaises(ProtocolError, handle_error_codes, LIBSSH2_ERROR_PROTO)
self.assertRaises(PasswordExpiredError, handle_error_codes, LIBSSH2_ERROR_PASSWORD_EXPIRED)
self.assertRaises(FileError, handle_error_codes, LIBSSH2_ERROR_FILE)
self.assertRaises(MethodNoneError, handle_error_codes, LIBSSH2_ERROR_METHOD_NONE)
self.assertRaises(AuthenticationError, handle_error_codes, LIBSSH2_ERROR_AUTHENTICATION_FAILED)
self.assertRaises(PublickeyUnverifiedError, handle_error_codes, LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED)
def test_channel_errors(self):
self.assertRaises(ChannelOutOfOrderError, handle_error_codes, LIBSSH2_ERROR_CHANNEL_OUTOFORDER)
self.assertRaises(ChannelFailure, handle_error_codes, LIBSSH2_ERROR_CHANNEL_FAILURE)
self.assertRaises(ChannelRequestDenied, handle_error_codes, LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED)
self.assertRaises(ChannelUnknownError, handle_error_codes, LIBSSH2_ERROR_CHANNEL_UNKNOWN)
self.assertRaises(ChannelWindowExceeded, handle_error_codes, LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED)
self.assertRaises(ChannelPacketExceeded, handle_error_codes, LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED)
self.assertRaises(ChannelClosedError, handle_error_codes, LIBSSH2_ERROR_CHANNEL_CLOSED)
self.assertRaises(ChannelEOFSentError, handle_error_codes, LIBSSH2_ERROR_CHANNEL_EOF_SENT)
self.assertRaises(SCPProtocolError, handle_error_codes, LIBSSH2_ERROR_SCP_PROTOCOL)
self.assertRaises(ZlibError, handle_error_codes, LIBSSH2_ERROR_ZLIB)
self.assertRaises(SocketTimeout, handle_error_codes, LIBSSH2_ERROR_SOCKET_TIMEOUT)
def test_request_errors(self):
self.assertRaises(RequestDeniedError, handle_error_codes, LIBSSH2_ERROR_REQUEST_DENIED)
self.assertRaises(MethodNotSupported, handle_error_codes, LIBSSH2_ERROR_METHOD_NOT_SUPPORTED)
self.assertRaises(InvalidRequestError, handle_error_codes, LIBSSH2_ERROR_INVAL)
self.assertRaises(InvalidPollTypeError, handle_error_codes, LIBSSH2_ERROR_INVALID_POLL_TYPE)
self.assertRaises(PublicKeyProtocolError, handle_error_codes, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL)
self.assertRaises(BufferTooSmallError, handle_error_codes, LIBSSH2_ERROR_BUFFER_TOO_SMALL)
self.assertRaises(BadUseError, handle_error_codes, LIBSSH2_ERROR_BAD_USE)
def test_protocol_errors(self):
self.assertRaises(SFTPProtocolError, handle_error_codes, LIBSSH2_ERROR_SFTP_PROTOCOL)
self.assertRaises(CompressError, handle_error_codes, LIBSSH2_ERROR_COMPRESS)
self.assertRaises(OutOfBoundaryError, handle_error_codes, LIBSSH2_ERROR_OUT_OF_BOUNDARY)
self.assertRaises(AgentProtocolError, handle_error_codes, LIBSSH2_ERROR_AGENT_PROTOCOL)
self.assertRaises(SocketRecvError, handle_error_codes, LIBSSH2_ERROR_SOCKET_RECV)
self.assertRaises(SocketSendError, handle_error_codes, LIBSSH2_ERROR_SOCKET_SEND)
self.assertRaises(EncryptError, handle_error_codes, LIBSSH2_ERROR_ENCRYPT)
self.assertRaises(BadSocketError, handle_error_codes, LIBSSH2_ERROR_BAD_SOCKET)
self.assertRaises(KnownHostError, handle_error_codes, LIBSSH2_ERROR_KNOWN_HOSTS)
self.assertRaises(UnknownError, handle_error_codes, -9999)