Save SSH passwords with connections

This commit is contained in:
jocayn
2026-06-13 13:10:16 +08:00
parent 51b6f9ecfd
commit f5369b7ab9
9 changed files with 102 additions and 22 deletions
+27
View File
@@ -318,6 +318,33 @@ class TestWsockHandler(unittest.TestCase):
obj.close.assert_called_with(reason='Worker closed')
class TestIndexHandler(unittest.TestCase):
def test_get_args_keeps_password_for_saved_connection(self):
obj = Mock(spec=IndexHandler)
obj.get_hostname.return_value = '127.0.0.1'
obj.get_port.return_value = 22
obj.get_value.return_value = 'root'
obj.get_privatekey.return_value = ('', '')
obj.policy = paramiko.WarningPolicy()
obj.ssh_client = Mock()
values = {
'password': 'root-secret',
'passphrase': '',
'totp': '',
'term': 'xterm-256color'
}
obj.get_argument.side_effect = lambda name, default=u'': values.get(
name, default
)
args = IndexHandler.get_args(obj)
self.assertEqual(
('127.0.0.1', 22, 'root', 'root-secret'),
args[:4]
)
self.assertEqual('root-secret', obj.connection_info['password'])
def test_null_in_encoding(self):
handler = Mock(spec=IndexHandler)
+4 -1
View File
@@ -21,11 +21,13 @@ class TestConnectionStore(unittest.TestCase):
'hostname': '127.0.0.1',
'port': 22,
'username': 'root',
'password': 'root-secret',
'term': 'xterm-256color',
'auth_type': 'password'
})
self.assertEqual(profile['title'], 'root@127.0.0.1:22')
self.assertEqual(profile['password'], 'root-secret')
self.assertEqual([profile], self.store.list('admin'))
self.assertEqual([], self.store.list('other'))
@@ -33,6 +35,7 @@ class TestConnectionStore(unittest.TestCase):
'hostname': '127.0.0.1',
'port': 22,
'username': 'root',
'password': 'new-secret',
'term': 'xterm',
'auth_type': 'privatekey'
})
@@ -40,7 +43,7 @@ class TestConnectionStore(unittest.TestCase):
self.assertEqual(profile['id'], updated['id'])
self.assertEqual(1, len(self.store.list('admin')))
self.assertEqual('xterm', self.store.list('admin')[0]['term'])
self.assertEqual('new-secret', self.store.list('admin')[0]['password'])
self.assertTrue(self.store.delete('admin', profile['id']))
self.assertFalse(self.store.delete('admin', profile['id']))
self.assertEqual([], self.store.list('admin'))