def check_match(self, known_hosts, results=None, host='host', addr='1.2.3.4', port=22): """Check the result of calling match_known_hosts""" if results: results = tuple([kl[r] for r in result] for kl, result in zip(self.imported_keylists, results)) matches = asyncssh.match_known_hosts(known_hosts, host, addr, port) self.assertEqual(matches, results)
def check_hosts(self, patlists, results=None, host='host', addr='1.2.3.4', port=22, from_file=False, from_bytes=False, as_callable=False, as_tuple=False): """Check a known_hosts file built from the specified patterns""" def call_match(host, addr, port): """Test passing callable as known_hosts""" return asyncssh.match_known_hosts(_known_hosts, host, addr, port) prefixes = ('', '@cert-authority ', '@revoked ', '', '@revoked ', '', '@revoked ') known_hosts = '# Comment line\n # Comment line with whitespace\n\n' for prefix, patlist, keys in zip(prefixes, patlists, self.keylists): for pattern, key in zip(patlist, keys): known_hosts += '%s%s %s' % (prefix, pattern, key) if from_file: with open('known_hosts', 'w') as f: f.write(known_hosts) known_hosts = 'known_hosts' elif from_bytes: known_hosts = known_hosts.encode() elif as_callable: _known_hosts = asyncssh.import_known_hosts(known_hosts) known_hosts = call_match elif as_tuple: known_hosts = asyncssh.import_known_hosts(known_hosts) known_hosts = asyncssh.match_known_hosts(known_hosts, host, addr, port) else: known_hosts = asyncssh.import_known_hosts(known_hosts) return self.check_match(known_hosts, results, host, addr, port)
def call_match(host, addr, port): """Test passing callable as known_hosts""" return asyncssh.match_known_hosts(_known_hosts, host, addr, port)