36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from unittest.mock import Mock, patch
|
|
|
|
import pytest
|
|
|
|
from k1link.macos_credentials import CredentialDialogError, _dialog_text
|
|
|
|
|
|
@patch("k1link.macos_credentials.platform.system", return_value="Darwin")
|
|
@patch("k1link.macos_credentials.shutil.which", return_value="/usr/bin/osascript")
|
|
@patch("k1link.macos_credentials.subprocess.run")
|
|
def test_dialog_returns_value_without_printing(
|
|
run: Mock,
|
|
_which: Mock,
|
|
_system: Mock,
|
|
) -> None:
|
|
run.return_value = Mock(returncode=0, stdout="local-value\n", stderr="")
|
|
|
|
assert _dialog_text("Prompt", hidden=True) == "local-value"
|
|
command = run.call_args.args[0]
|
|
assert "local-value" not in command
|
|
assert "with hidden answer" in command[-1]
|
|
|
|
|
|
@patch("k1link.macos_credentials.platform.system", return_value="Darwin")
|
|
@patch("k1link.macos_credentials.shutil.which", return_value="/usr/bin/osascript")
|
|
@patch("k1link.macos_credentials.subprocess.run")
|
|
def test_dialog_cancel_is_not_echoed(
|
|
run: Mock,
|
|
_which: Mock,
|
|
_system: Mock,
|
|
) -> None:
|
|
run.return_value = Mock(returncode=1, stdout="", stderr="User canceled.")
|
|
|
|
with pytest.raises(CredentialDialogError, match="cancelled"):
|
|
_dialog_text("Prompt", hidden=False)
|