示例#1
0
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")
示例#2
0
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,
    )
示例#3
0
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")]
示例#4
0
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,
    )
示例#5
0
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")
示例#6
0
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")]
示例#7
0
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)
示例#8
0
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)
示例#9
0
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)
示例#10
0
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)
示例#11
0
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)
示例#12
0
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)
示例#13
0
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)
示例#14
0
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)