Skip to content

Commit a620d6d

Browse files
andrewschenckAndrew Schenck
and
Andrew Schenck
authored
Minor doc update, minor error handling fixes (#40)
Co-authored-by: Andrew Schenck <[email protected]>
1 parent 4a02039 commit a620d6d

File tree

4 files changed

+19
-6
lines changed

4 files changed

+19
-6
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ authentication handlers which can handle either use case, and more.
2424

2525

2626
## Installing paramiko-jump
27-
Paramiko-jump is now available on PyPI, so you can readily install it with pip:
27+
Paramiko-jump is available on PyPI, so you can readily install it with pip:
2828

2929
```bash
3030
pip install paramiko-jump

paramiko_jump/client.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def __init__(
5050

5151
j = self._jump_session = jump_session
5252
if j is not None and not hasattr(j, '_transport'):
53-
raise TypeError(f'bad jump_session: {j}')
53+
raise ValueError(f'bad jump_session: {j}')
5454
self._auth_handler = auth_handler
5555

5656
def __repr__(self):
@@ -130,6 +130,8 @@ def connect(
130130
raise ValueError('jump_session= and sock= are mutually '
131131
'exclusive')
132132
transport = self._jump_session._transport
133+
if not hasattr(transport, 'open_channel'):
134+
raise ValueError('jump_session must be connected')
133135
sock = transport.open_channel(
134136
kind='direct-tcpip',
135137
dest_addr=(hostname, port),

paramiko_jump/handler.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ def simple_auth_handler(
5656
"""
5757
answers = []
5858
if title:
59-
_LOG.info(title)
59+
print(title)
6060
if instructions:
61-
_LOG.info(instructions)
61+
print(instructions)
6262

6363
for prompt, show_input in prompt_list:
6464
input_ = input if show_input else getpass
65-
answers.append(input_(prompt)) # type: ignore
65+
answers.append(input_(prompt)) # type: ignore[operator]
6666
return answers
6767

6868

tests/unit/test_client.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,17 @@ def test_connect_failure(self, mock_connect):
3131
client.connect(hostname='invalid-host', username='username')
3232
self.assertEqual(str(context.exception), "Connection failed")
3333

34+
def test_invalid_jump_session_no_transport(self):
35+
# Create a mock jump session without a _transport attribute
36+
invalid_jump_session = MagicMock()
37+
del invalid_jump_session._transport.open_channel
38+
39+
# Ensure that initializing SSHJumpClient with this invalid jump session raises a TypeError
40+
with self.assertRaises(ValueError) as context:
41+
client = SSHJumpClient(jump_session=invalid_jump_session)
42+
client.connect(hostname='invalid-host', username='username')
43+
# self.assertEqual(str(context.exception), f'bad jump_session')
44+
3445
@patch('paramiko_jump.client.SSHJumpClient.exec_command')
3546
def test_exec_command_failure(self, mock_exec_command):
3647
mock_exec_command.side_effect = Exception("Command failed")
@@ -145,7 +156,7 @@ def test_connect_with_jump_session(self, mock_connect):
145156
jump_client._transport.open_channel.assert_called()
146157

147158
def test_invalid_jump_session(self):
148-
with self.assertRaises(TypeError):
159+
with self.assertRaises(ValueError):
149160
SSHJumpClient(jump_session="invalid_session")
150161

151162
@patch('paramiko_jump.client.SSHClient.connect')

0 commit comments

Comments
 (0)