Remove setup.sh in favor of skyvern CLI (#4737)
This commit is contained in:
71
tests/unit/test_totp_identifier_fallback.py
Normal file
71
tests/unit/test_totp_identifier_fallback.py
Normal file
@@ -0,0 +1,71 @@
|
||||
from types import SimpleNamespace
|
||||
|
||||
import pytest
|
||||
|
||||
from skyvern.forge.sdk.schemas.credentials import CredentialVaultType
|
||||
from skyvern.forge.sdk.workflow import context_manager as cm
|
||||
from skyvern.forge.sdk.workflow.context_manager import WorkflowRunContext
|
||||
from skyvern.forge.sdk.workflow.models.block import TaskV2Block
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_register_credential_parameter_uses_db_totp_identifier(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
db_credential = SimpleNamespace(
|
||||
credential_id="cred-1",
|
||||
organization_id="org-1",
|
||||
vault_type=CredentialVaultType.BITWARDEN,
|
||||
totp_identifier="user@example.com",
|
||||
)
|
||||
|
||||
class FakeCredential:
|
||||
def __init__(self) -> None:
|
||||
self.totp_identifier = None
|
||||
self.totp = None
|
||||
|
||||
def model_dump(self) -> dict:
|
||||
return {}
|
||||
|
||||
class FakeCredentialItem:
|
||||
def __init__(self) -> None:
|
||||
self.credential = FakeCredential()
|
||||
|
||||
class FakeCredentialService:
|
||||
async def get_credential_item(self, _db_credential: object) -> FakeCredentialItem:
|
||||
return FakeCredentialItem()
|
||||
|
||||
class FakeDatabase:
|
||||
async def get_credential(self, credential_id: str, organization_id: str) -> object:
|
||||
assert credential_id == "cred-1"
|
||||
assert organization_id == "org-1"
|
||||
return db_credential
|
||||
|
||||
fake_app = SimpleNamespace(
|
||||
DATABASE=FakeDatabase(),
|
||||
CREDENTIAL_VAULT_SERVICES={CredentialVaultType.BITWARDEN: FakeCredentialService()},
|
||||
)
|
||||
monkeypatch.setattr(cm, "app", fake_app)
|
||||
|
||||
context = WorkflowRunContext(
|
||||
workflow_title="title",
|
||||
workflow_id="wf-1",
|
||||
workflow_permanent_id="wfp-1",
|
||||
workflow_run_id="wr-1",
|
||||
aws_client=SimpleNamespace(),
|
||||
)
|
||||
|
||||
parameter = SimpleNamespace(key="credential_param")
|
||||
organization = SimpleNamespace(organization_id="org-1")
|
||||
|
||||
await context._register_credential_parameter_value("cred-1", parameter, organization)
|
||||
|
||||
assert context.get_credential_totp_identifier("credential_param") == "user@example.com"
|
||||
|
||||
|
||||
def test_task_v2_block_resolves_totp_identifier_from_context() -> None:
|
||||
block = TaskV2Block.model_construct(totp_identifier=None)
|
||||
workflow_run_context = SimpleNamespace(credential_totp_identifiers={"credential_param": "user@example.com"})
|
||||
|
||||
assert block._resolve_totp_identifier(workflow_run_context) == "user@example.com"
|
||||
|
||||
block_with_explicit_totp = TaskV2Block.model_construct(totp_identifier="provided@example.com")
|
||||
assert block_with_explicit_totp._resolve_totp_identifier(workflow_run_context) == "provided@example.com"
|
||||
Reference in New Issue
Block a user