mirror of
https://github.com/Mintplex-Labs/langchain-python.git
synced 2026-07-19 21:33:31 -04:00
add async to zapier nla tools (#6791)
Replace this comment with: - Description: Add Async functionality to Zapier NLA Tools - Issue: n/a - Dependencies: n/a - Tag maintainer: Maintainer responsibilities: - Agents / Tools / Toolkits: @vowelparrot - Async: @agola11 If no one reviews your PR within a few days, feel free to @-mention the same people again. See contribution guidelines for more information on how to write/run tests, lint, etc: https://github.com/hwchase17/langchain/blob/master/.github/CONTRIBUTING.md
This commit is contained in:
@@ -55,6 +55,158 @@ def test_custom_base_prompt_fail() -> None:
|
||||
)
|
||||
|
||||
|
||||
def test_format_headers_api_key() -> None:
|
||||
"""Test that the action headers is being created correctly."""
|
||||
tool = ZapierNLARunAction(
|
||||
action_id="test",
|
||||
zapier_description="test",
|
||||
params_schema={"test": "test"},
|
||||
api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"),
|
||||
)
|
||||
headers = tool.api_wrapper._format_headers()
|
||||
assert headers["Content-Type"] == "application/json"
|
||||
assert headers["Accept"] == "application/json"
|
||||
assert headers["X-API-Key"] == "test"
|
||||
|
||||
|
||||
def test_format_headers_access_token() -> None:
|
||||
"""Test that the action headers is being created correctly."""
|
||||
tool = ZapierNLARunAction(
|
||||
action_id="test",
|
||||
zapier_description="test",
|
||||
params_schema={"test": "test"},
|
||||
api_wrapper=ZapierNLAWrapper(zapier_nla_oauth_access_token="test"),
|
||||
)
|
||||
headers = tool.api_wrapper._format_headers()
|
||||
assert headers["Content-Type"] == "application/json"
|
||||
assert headers["Accept"] == "application/json"
|
||||
assert headers["Authorization"] == "Bearer test"
|
||||
|
||||
|
||||
def test_create_action_payload() -> None:
|
||||
"""Test that the action payload is being created correctly."""
|
||||
tool = ZapierNLARunAction(
|
||||
action_id="test",
|
||||
zapier_description="test",
|
||||
params_schema={"test": "test"},
|
||||
api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"),
|
||||
)
|
||||
|
||||
payload = tool.api_wrapper._create_action_payload("some instructions")
|
||||
assert payload["instructions"] == "some instructions"
|
||||
assert payload.get("preview_only") is None
|
||||
|
||||
|
||||
def test_create_action_payload_preview() -> None:
|
||||
"""Test that the action payload with preview is being created correctly."""
|
||||
tool = ZapierNLARunAction(
|
||||
action_id="test",
|
||||
zapier_description="test",
|
||||
params_schema={"test": "test"},
|
||||
api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"),
|
||||
)
|
||||
|
||||
payload = tool.api_wrapper._create_action_payload(
|
||||
"some instructions",
|
||||
preview_only=True,
|
||||
)
|
||||
assert payload["instructions"] == "some instructions"
|
||||
assert payload["preview_only"] is True
|
||||
|
||||
|
||||
def test_create_action_payload_with_params() -> None:
|
||||
"""Test that the action payload with params is being created correctly."""
|
||||
tool = ZapierNLARunAction(
|
||||
action_id="test",
|
||||
zapier_description="test",
|
||||
params_schema={"test": "test"},
|
||||
api_wrapper=ZapierNLAWrapper(zapier_nla_api_key="test"),
|
||||
)
|
||||
|
||||
payload = tool.api_wrapper._create_action_payload(
|
||||
"some instructions",
|
||||
{"test": "test"},
|
||||
preview_only=True,
|
||||
)
|
||||
assert payload["instructions"] == "some instructions"
|
||||
assert payload["preview_only"] is True
|
||||
assert payload["test"] == "test"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_apreview(mocker) -> None: # type: ignore[no-untyped-def]
|
||||
"""Test that the action payload with params is being created correctly."""
|
||||
tool = ZapierNLARunAction(
|
||||
action_id="test",
|
||||
zapier_description="test",
|
||||
params_schema={"test": "test"},
|
||||
api_wrapper=ZapierNLAWrapper(
|
||||
zapier_nla_api_key="test",
|
||||
zapier_nla_api_base="http://localhost:8080/v1/",
|
||||
),
|
||||
)
|
||||
mockObj = mocker.patch.object(ZapierNLAWrapper, "_arequest")
|
||||
await tool.api_wrapper.apreview(
|
||||
"random_action_id",
|
||||
"some instructions",
|
||||
{"test": "test"},
|
||||
)
|
||||
mockObj.assert_called_once_with(
|
||||
"POST",
|
||||
"http://localhost:8080/v1/exposed/random_action_id/execute/",
|
||||
json={
|
||||
"instructions": "some instructions",
|
||||
"preview_only": True,
|
||||
"test": "test",
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_arun(mocker) -> None: # type: ignore[no-untyped-def]
|
||||
"""Test that the action payload with params is being created correctly."""
|
||||
tool = ZapierNLARunAction(
|
||||
action_id="test",
|
||||
zapier_description="test",
|
||||
params_schema={"test": "test"},
|
||||
api_wrapper=ZapierNLAWrapper(
|
||||
zapier_nla_api_key="test",
|
||||
zapier_nla_api_base="http://localhost:8080/v1/",
|
||||
),
|
||||
)
|
||||
mockObj = mocker.patch.object(ZapierNLAWrapper, "_arequest")
|
||||
await tool.api_wrapper.arun(
|
||||
"random_action_id",
|
||||
"some instructions",
|
||||
{"test": "test"},
|
||||
)
|
||||
mockObj.assert_called_once_with(
|
||||
"POST",
|
||||
"http://localhost:8080/v1/exposed/random_action_id/execute/",
|
||||
json={"instructions": "some instructions", "test": "test"},
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_alist(mocker) -> None: # type: ignore[no-untyped-def]
|
||||
"""Test that the action payload with params is being created correctly."""
|
||||
tool = ZapierNLARunAction(
|
||||
action_id="test",
|
||||
zapier_description="test",
|
||||
params_schema={"test": "test"},
|
||||
api_wrapper=ZapierNLAWrapper(
|
||||
zapier_nla_api_key="test",
|
||||
zapier_nla_api_base="http://localhost:8080/v1/",
|
||||
),
|
||||
)
|
||||
mockObj = mocker.patch.object(ZapierNLAWrapper, "_arequest")
|
||||
await tool.api_wrapper.alist()
|
||||
mockObj.assert_called_once_with(
|
||||
"GET",
|
||||
"http://localhost:8080/v1/exposed/",
|
||||
)
|
||||
|
||||
|
||||
def test_wrapper_fails_no_api_key_or_access_token_initialization() -> None:
|
||||
"""Test Wrapper requires either an API Key or OAuth Access Token."""
|
||||
with pytest.raises(ValueError):
|
||||
|
||||
Reference in New Issue
Block a user