def test_ordering_extra_keys(): hc = HostConfig(HostName="192.168.0.20", User="******", ForwardX11=False) ordering = ['User', 'BindAddress'] assert hc.lines(ordering=ordering) == [ ' User mrzor\n', ' ForwardX11 no\n', ' HostName 192.168.0.20\n' ]
def test_ordering_partially_specified(): hc = HostConfig(HostName="192.168.0.20", User="******", ForwardX11=False) ordering = ['User'] assert hc.lines(ordering=ordering) == [ ' User mrzor\n', ' ForwardX11 no\n', ' HostName 192.168.0.20\n' ]
def test_default_lines(): hc = HostConfig(HostName="4.4.4.4", CertificateFile="exists-or-not-we-dont-check") ls = hc.lines() assert ls == [ ' CertificateFile exists-or-not-we-dont-check\n', ' HostName 4.4.4.4\n' ]
def test_quoting(): hc = HostConfig(User="******") assert hc.lines(force_quotes=True) == [' User "narcissus"\n'] hc = HostConfig(User="******") assert hc.lines() == [' User "narcissus maximus"\n'] assert hc.lines(force_quotes=True) == [' User "narcissus maximus"\n']
def test_append_host_using_defaults(): conf = SSHConfig(_test_file_path("exhibit_4")) assert not conf.dirty conf.update_host("new_host", "30.30.30.30", "1234321", HostConfig.default_config()) assert conf.dirty assert conf._lines == [ f'{_BEGIN_MARKER}\n', '\n', 'Host new_host\n', ' HostName 30.30.30.30\n', ' IdentityFile /home/zor/.ssh/google_compute_engine\n', ' UserKnownHostsFile /home/zor/.ssh/google_compute_known_hosts\n', ' HostKeyAlias compute.1234321\n', ' IdentitiesOnly yes\n', ' CheckHostIP no\n', f'{_END_MARKER}\n', '\n' ]
def test_append_host_in_empty_file(): with NamedTemporaryFile(mode="r", encoding="UTF-8") as f: conf = SSHConfig(f.name) assert conf.dirty # should have markers # import pdb; pdb.set_trace() conf.update_host("new_host", "30.30.30.30", "1234321", HostConfig.default_config()) assert conf._lines == [ '\n', f'{_BEGIN_MARKER}\n', f'{_GCSS_COMMENT}\n', '\n', 'Host new_host\n', ' HostName 30.30.30.30\n', ' IdentityFile /home/zor/.ssh/google_compute_engine\n', ' UserKnownHostsFile /home/zor/.ssh/google_compute_known_hosts\n', ' HostKeyAlias compute.1234321\n', ' IdentitiesOnly yes\n', ' CheckHostIP no\n', f'{_END_MARKER}\n' ]
def test_multiple_values(): hc = HostConfig(LocalForward=['lf1', 'lf2', 'lf3'], User="******") assert len(hc.lines()) == 4
def test_custom_indent(): hc = HostConfig(User="******") assert hc.lines(indent="") == ['User narcissus\n'] assert hc.lines(indent="\t") == ['\tUser narcissus\n']
def test_custom_separator(): hc = HostConfig(User="******") assert hc.lines(separator="=") == [' User=narcissus\n'] assert hc.lines(separator=" = ") == [' User = narcissus\n']
def test_custom_casing(): hc = HostConfig(HostName="192.168.0.20", User="******") assert hc.lines(casings=["HoStNaMe", "USER"]) == [ ' HoStNaMe 192.168.0.20\n', ' USER mrzor\n' ]
def test_empty(): hc = HostConfig() assert not hc.minidict()
def test_ordering_default(): hc = HostConfig(HostName="192.168.0.20", User="******", ForwardX11=False) assert hc.lines() == [ ' ForwardX11 no\n', ' HostName 192.168.0.20\n', ' User mrzor\n' ]