def test_login_send_password(): """Ensure then calls when logging in properly with a passwd prompt.""" runner = Bladerunner() sshc = Mock() sshc.expect = Mock(return_value=22) assert runner.login(sshc, "mock word", 1) == (sshc, 1) sshc.sendline.assert_called_once_with("mock word")
def test_login_fail_guess(pexpect_exceptions): """When sending a password fails try to guess the shell prompt.""" runner = Bladerunner() sshc = Mock() sshc.expect = Mock(side_effect=pexpect_exceptions("fake explosion")) with patch.object(runner, "_try_for_unmatched_prompt") as p_try_for: runner.login(sshc, "passwerd", 1) sshc.sendline.assert_called_once_with("passwerd") p_try_for.assert_called_once_with( sshc, sshc.before, "login", _from_login=True, )
def test_login_new_host(): """The first passwd prompt is a match for a new ssh key identity.""" runner = Bladerunner() sshc = Mock() sshc.expect = Mock(side_effect=iter([2, 22])) # passwd, then shell assert runner.login(sshc, "fake", 0) == (sshc, 1) assert sshc.sendline.mock_calls == [call("yes"), call("fake")]
def test_login_fail_guess(pexpect_exceptions): """When sending a password fails try to guess the shell prompt.""" runner = Bladerunner() sshc = Mock() sshc.expect = Mock(side_effect=pexpect_exceptions("fake explosion")) with patch.object(runner, "_try_for_unmatched_prompt") as p_try_for: runner.login(sshc, "passwerd", 1) sshc.sendline.assert_called_once_with("passwerd") p_try_for.assert_called_once_with( sshc, sshc.before, "login", _from_login=True, )
def test_login_send_password(): """Ensure then calls when logging in properly with a passwd prompt.""" runner = Bladerunner() sshc = Mock() sshc.expect = Mock(return_value=22) assert runner.login(sshc, "mock word", 1) == (sshc, 1) sshc.sendline.assert_called_once_with("mock word")
def test_login_new_host(): """The first passwd prompt is a match for a new ssh key identity.""" runner = Bladerunner() sshc = Mock() sshc.expect = Mock(side_effect=iter([2, 22])) # passwd, then shell assert runner.login(sshc, "fake", 0) == (sshc, 1) assert sshc.sendline.mock_calls == [call("yes"), call("fake")]
def test_login_unexpected_prompt(): """We received a password prompt when no password is in use.""" runner = Bladerunner() sshc = Mock() with patch.object(runner, "send_interrupt") as p_interrupt: assert runner.login(sshc, None, 1) == (None, -2) p_interrupt.assert_called_once_with(sshc)
def test_login_unexpected_prompt(): """We received a password prompt when no password is in use.""" runner = Bladerunner() sshc = Mock() with patch.object(runner, "send_interrupt") as p_interrupt: assert runner.login(sshc, None, 1) == (None, -2) p_interrupt.assert_called_once_with(sshc)
def test_login_passwd_fail(): """Ensure the calls when receiving another passwd prompt after sending.""" runner = Bladerunner() sshc = Mock() sshc.expect = Mock(return_value=1) with patch.object(runner, "send_interrupt") as p_interrupt: assert runner.login(sshc, "fakepasswd", 1) == (sshc, -5) sshc.sendline.assert_called_once_with("fakepasswd") p_interrupt.assert_called_once_with(sshc)
def test_login_new_host_failures(pexpect_exceptions): """Catch the pexpect EOF and TIMEOUT exceptions after accepting the key.""" runner = Bladerunner() sshc = Mock() sshc.expect = Mock(side_effect=pexpect_exceptions("fake exception")) with patch.object(runner, "send_interrupt") as p_interrupt: assert runner.login(sshc, "hunter12", 0) == (None, -1) sshc.sendline.assert_called_once_with("yes") p_interrupt.assert_called_once_with(sshc)
def test_login_passwd_fail(): """Ensure the calls when receiving another passwd prompt after sending.""" runner = Bladerunner() sshc = Mock() sshc.expect = Mock(return_value=1) with patch.object(runner, "send_interrupt") as p_interrupt: assert runner.login(sshc, "fakepasswd", 1) == (sshc, -5) sshc.sendline.assert_called_once_with("fakepasswd") p_interrupt.assert_called_once_with(sshc)
def test_login_new_host_failures(pexpect_exceptions): """Catch the pexpect EOF and TIMEOUT exceptions after accepting the key.""" runner = Bladerunner() sshc = Mock() sshc.expect = Mock(side_effect=pexpect_exceptions("fake exception")) with patch.object(runner, "send_interrupt") as p_interrupt: assert runner.login(sshc, "hunter12", 0) == (None, -1) sshc.sendline.assert_called_once_with("yes") p_interrupt.assert_called_once_with(sshc)
def test_login_unused_password(): """We logged in but did not send a password (unexpected key auth).""" runner = Bladerunner() sshc = Mock() assert runner.login(sshc, "no passwd sent", 9000) == (sshc, 1)
def test_login_unused_password(): """We logged in but did not send a password (unexpected key auth).""" runner = Bladerunner() sshc = Mock() assert runner.login(sshc, "no passwd sent", 9000) == (sshc, 1)