diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2023-07-12 09:43:26 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2023-07-12 12:42:25 +1200 |
commit | b88dafb263c712493e4d57a17b7ef7a1fff54619 (patch) | |
tree | 32e55f87d7fd94d963f9b170c28790ca60b049f2 | |
parent | Correct handling of SSH remote command (diff) | |
download | ssh_negotiate_term-b88dafb263c712493e4d57a17b7ef7a1fff54619.tar.gz ssh_negotiate_term-b88dafb263c712493e4d57a17b7ef7a1fff54619.zip |
Add test suite
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | test.py | 78 |
2 files changed, 79 insertions, 0 deletions
@@ -1 +1,2 @@ /ssh_negotiate_term +/__pycache__ @@ -0,0 +1,78 @@ +#!/usr/bin/python3 +import configparser +import unittest + +from ssh_negotiate_term import SSHNegotiateTerm + +class TestSSHNegotiateTerm(unittest.TestCase): + + def setUp(self): + config = configparser.ConfigParser() + config['patterns'] = SSHNegotiateTerm.DEFAULT_PATTERNS + config['ssh'] = {} + config['ssh']['path'] = SSHNegotiateTerm.DEFAULT_SSH + config['translations'] = SSHNegotiateTerm.DEFAULT_TRANSLATIONS + self.snt_config = config + + def test_instantiate(self): + snt = SSHNegotiateTerm('foo', [], self.snt_config) + self.assertIsInstance(snt, SSHNegotiateTerm) + + def test_hostname(self): + snt = SSHNegotiateTerm('screen-256color', ['ssh', 'examplehost'], self.snt_config) + self.assertEqual(snt.term, 'screen-256color') + + def test_fqdn(self): + snt = SSHNegotiateTerm('screen-256color', ['ssh', 'host.example.net.'], self.snt_config) + self.assertEqual(snt.term, 'screen-256color') + + def test_ipv4(self): + snt = SSHNegotiateTerm('screen-256color', ['ssh', '192.0.2.1'], self.snt_config) + self.assertEqual(snt.term, 'screen') + + def test_ipv6(self): + snt = SSHNegotiateTerm('screen-256color', ['ssh', '2001:0db8::1'], self.snt_config) + self.assertEqual(snt.term, 'screen') + + def test_complex_command_line(self): + snt = SSHNegotiateTerm('screen-256color', ['ssh', '-4', '-NfoSetEnv=FOO=BAR', '-NtT', '--', '192.0.2.1', 'runcmd'], self.snt_config) + self.assertEqual(snt.term, 'screen') + snt = SSHNegotiateTerm('screen-256color', ['ssh', '-4', '-NfoSetEnv=FOO=BAR', '-NtT', '--', 'examplehost', 'runcmd'], self.snt_config) + self.assertEqual(snt.term, 'screen-256color') + + def test_null_term(self): + snt = SSHNegotiateTerm(None, ['ssh', '192.0.2.1'], self.snt_config) + self.assertEqual(snt.term, None) + + def test_unknown_term(self): + snt = SSHNegotiateTerm('qwyjibo', ['ssh', '192.0.2.1'], self.snt_config) + self.assertEqual(snt.term, 'qwyjibo') + + def test_untranslated_term(self): + snt = SSHNegotiateTerm('screen', ['ssh', '192.0.2.1'], self.snt_config) + self.assertEqual(snt.term, 'screen') + + def test_patterns_simple(self): + config = self.snt_config + self.snt_config['patterns']['examplehost'] = '^examplehost$' + snt = SSHNegotiateTerm('screen-256color', ['ssh', 'examplehost'], self.snt_config) + self.assertEqual(snt.term, 'screen') + snt = SSHNegotiateTerm('screen-256color', ['ssh', 'examplehost2'], self.snt_config) + self.assertEqual(snt.term, 'screen-256color') + + def test_pattern_complex(self): + config = self.snt_config + self.snt_config['patterns']['complexhost'] = '^[a-z]{3}-[a-z]{2,}-[a-z]{2,}-[0-9]' + snt = SSHNegotiateTerm('screen-256color', ['ssh', 'abc-example-ar-1'], self.snt_config) + self.assertEqual(snt.term, 'screen') + snt = SSHNegotiateTerm('screen-256color', ['ssh', 'abc-example-ar-a1'], self.snt_config) + self.assertEqual(snt.term, 'screen-256color') + + def test_translations(self): + for outer in self.snt_config['translations']: + snt = SSHNegotiateTerm(outer, ['ssh', '192.0.2.1'], self.snt_config) + inner = self.snt_config['translations'][outer] + self.assertEqual(snt.term, inner) + +if __name__ == '__main__': + unittest.main() |