Remove setup.sh in favor of skyvern CLI (#4737)
This commit is contained in:
75
tests/unit/test_custom_credential_client.py
Normal file
75
tests/unit/test_custom_credential_client.py
Normal file
@@ -0,0 +1,75 @@
|
||||
import pytest
|
||||
|
||||
from skyvern.forge.sdk.api.custom_credential_client import CustomCredentialAPIClient
|
||||
from skyvern.forge.sdk.schemas.credentials import CredentialType, SecretCredential
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def client() -> CustomCredentialAPIClient:
|
||||
return CustomCredentialAPIClient(api_base_url="https://custom.example.com", api_token="token-123")
|
||||
|
||||
|
||||
def test_credential_to_api_payload_with_label(client: CustomCredentialAPIClient) -> None:
|
||||
credential = SecretCredential(secret_value="sk-secret", secret_label="api-key")
|
||||
|
||||
payload = client._credential_to_api_payload(credential)
|
||||
|
||||
assert payload == {
|
||||
"type": "secret",
|
||||
"secret_value": "sk-secret",
|
||||
"secret_label": "api-key",
|
||||
}
|
||||
|
||||
|
||||
def test_credential_to_api_payload_without_label(client: CustomCredentialAPIClient) -> None:
|
||||
credential = SecretCredential(secret_value="sk-secret-no-label")
|
||||
|
||||
payload = client._credential_to_api_payload(credential)
|
||||
|
||||
assert payload == {
|
||||
"type": "secret",
|
||||
"secret_value": "sk-secret-no-label",
|
||||
}
|
||||
|
||||
|
||||
def test_api_response_to_credential_secret_with_label(client: CustomCredentialAPIClient) -> None:
|
||||
response = {
|
||||
"type": "secret",
|
||||
"secret_value": "shhh",
|
||||
"secret_label": "prod-api",
|
||||
}
|
||||
|
||||
credential_item = client._api_response_to_credential(response, name="Prod API", item_id="cred_123")
|
||||
|
||||
assert credential_item.item_id == "cred_123"
|
||||
assert credential_item.name == "Prod API"
|
||||
assert credential_item.credential_type == CredentialType.SECRET
|
||||
assert isinstance(credential_item.credential, SecretCredential)
|
||||
assert credential_item.credential.secret_value == "shhh"
|
||||
assert credential_item.credential.secret_label == "prod-api"
|
||||
|
||||
|
||||
def test_api_response_to_credential_secret_without_label(client: CustomCredentialAPIClient) -> None:
|
||||
response = {
|
||||
"type": "secret",
|
||||
"secret_value": "token-only",
|
||||
}
|
||||
|
||||
credential_item = client._api_response_to_credential(response, name="Token", item_id="cred_456")
|
||||
|
||||
assert credential_item.item_id == "cred_456"
|
||||
assert credential_item.name == "Token"
|
||||
assert credential_item.credential_type == CredentialType.SECRET
|
||||
assert isinstance(credential_item.credential, SecretCredential)
|
||||
assert credential_item.credential.secret_value == "token-only"
|
||||
assert credential_item.credential.secret_label is None
|
||||
|
||||
|
||||
def test_api_response_to_credential_secret_missing_required_field(client: CustomCredentialAPIClient) -> None:
|
||||
response = {
|
||||
"type": "secret",
|
||||
"secret_label": "no-secret-value",
|
||||
}
|
||||
|
||||
with pytest.raises(ValueError, match="Missing required secret fields from API"):
|
||||
client._api_response_to_credential(response, name="Broken Secret", item_id="cred_789")
|
||||
Reference in New Issue
Block a user