mirror of
https://github.com/Skyvern-AI/skyvern.git
synced 2026-04-26 10:41:14 +00:00
69 lines
2.4 KiB
Python
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
|