Skyvern/tests/unit/test_credential_update_params.py

69 lines
2.4 KiB
Python

"""Tests that update_credential() accepts user_context and save_browser_session_intent
on CredentialRepository."""
from unittest.mock import MagicMock, patch
import pytest
from skyvern.forge.sdk.db.repositories.credentials import CredentialRepository
from tests.unit.conftest import MockAsyncSessionCtx, make_mock_session
def _make_credential_repo(mock_credential: MagicMock) -> CredentialRepository:
mock_session = make_mock_session(mock_credential)
return CredentialRepository(session_factory=lambda: MockAsyncSessionCtx(mock_session))
# --- CredentialRepository tests ---
@pytest.mark.asyncio
async def test_repo_update_credential_accepts_user_context() -> None:
mock_credential = MagicMock()
mock_credential.name = "test"
mock_credential.user_context = None
repo = _make_credential_repo(mock_credential)
with patch("skyvern.forge.sdk.schemas.credentials.Credential.model_validate", return_value=MagicMock()):
await repo.update_credential(
credential_id="cred_123",
organization_id="org_123",
user_context="Click SSO button first",
)
assert mock_credential.user_context == "Click SSO button first"
@pytest.mark.asyncio
async def test_repo_update_credential_accepts_save_browser_session_intent() -> None:
mock_credential = MagicMock()
mock_credential.name = "test"
mock_credential.save_browser_session_intent = False
repo = _make_credential_repo(mock_credential)
with patch("skyvern.forge.sdk.schemas.credentials.Credential.model_validate", return_value=MagicMock()):
await repo.update_credential(
credential_id="cred_123",
organization_id="org_123",
save_browser_session_intent=True,
)
assert mock_credential.save_browser_session_intent is True
@pytest.mark.asyncio
async def test_repo_update_credential_unset_params_not_applied() -> None:
mock_credential = MagicMock()
mock_credential.name = "test"
mock_credential.user_context = "existing"
mock_credential.save_browser_session_intent = True
repo = _make_credential_repo(mock_credential)
with patch("skyvern.forge.sdk.schemas.credentials.Credential.model_validate", return_value=MagicMock()):
await repo.update_credential(
credential_id="cred_123",
organization_id="org_123",
)
assert mock_credential.user_context == "existing"
assert mock_credential.save_browser_session_intent is True