Skip to content

Commit 5b4d584

Browse files
fix: ignore unknown activity params instead of throwing (#1483)
1 parent bac371a commit 5b4d584

File tree

6 files changed

+64
-21
lines changed

6 files changed

+64
-21
lines changed

packages/uipath-platform/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "uipath-platform"
3-
version = "0.1.7"
3+
version = "0.1.8"
44
description = "HTTP client library for programmatic access to UiPath Platform"
55
readme = { file = "README.md", content-type = "text/markdown" }
66
requires-python = ">=3.11"

packages/uipath-platform/src/uipath/platform/connections/_connections_service.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -761,10 +761,6 @@ def _build_activity_request_spec(
761761
multipart_params[param_name] = value
762762
elif param_name in activity_metadata.parameter_location_info.body_fields:
763763
body_fields[param_name] = value
764-
else:
765-
raise ValueError(
766-
f"Parameter {param_name} does not exist in activity metadata."
767-
)
768764

769765
# path parameter handling
770766
for key, value in path_params.items():

packages/uipath-platform/tests/services/test_connections_service.py

Lines changed: 58 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,13 +1617,13 @@ def test_invoke_activity_with_none_values_filtered(
16171617
request_json = json.loads(sent_request.content.decode())
16181618
assert request_json == {"body_field1": "value1"}
16191619

1620-
def test_invoke_activity_unknown_parameter_raises_error(
1620+
def test_invoke_activity_unknown_parameter_is_ignored(
16211621
self,
16221622
httpx_mock: HTTPXMock,
16231623
service: ConnectionsService,
16241624
simple_activity_metadata: ActivityMetadata,
16251625
) -> None:
1626-
"""Test that unknown parameters raise a ValueError."""
1626+
"""Test that unknown parameters are ignored."""
16271627
connection_id = "test-connection-123"
16281628
activity_input = {
16291629
"unknown_param": "value", # This parameter doesn't exist in metadata
@@ -1634,16 +1634,63 @@ def test_invoke_activity_unknown_parameter_raises_error(
16341634
status_code=200,
16351635
json={"id": connection_id, "name": "Test", "elementInstanceId": 1},
16361636
)
1637+
httpx_mock.add_response(
1638+
method="POST",
1639+
status_code=200,
1640+
json={},
1641+
)
16371642

1638-
with pytest.raises(
1639-
ValueError,
1640-
match="Parameter unknown_param does not exist in activity metadata",
1641-
):
1642-
service.invoke_activity(
1643-
activity_metadata=simple_activity_metadata,
1644-
connection_id=connection_id,
1645-
activity_input=activity_input,
1646-
)
1643+
service.invoke_activity(
1644+
activity_metadata=simple_activity_metadata,
1645+
connection_id=connection_id,
1646+
activity_input=activity_input,
1647+
)
1648+
1649+
requests = httpx_mock.get_requests()
1650+
sent_request = requests[1]
1651+
assert "unknown_param" not in sent_request.url.params
1652+
assert "unknown_param" not in str(sent_request.url.path)
1653+
assert "unknown_param" not in sent_request.headers
1654+
request_json = json.loads(sent_request.content.decode())
1655+
assert "unknown_param" not in request_json
1656+
1657+
def test_invoke_activity_unknown_parameter_is_ignored_multipart(
1658+
self,
1659+
httpx_mock: HTTPXMock,
1660+
service: ConnectionsService,
1661+
multipart_activity_metadata: ActivityMetadata,
1662+
) -> None:
1663+
"""Test that unknown parameters are ignored in multipart requests."""
1664+
connection_id = "test-connection-123"
1665+
activity_input = {
1666+
"unknown_param": "value", # This parameter doesn't exist in metadata
1667+
}
1668+
1669+
httpx_mock.add_response(
1670+
method="GET",
1671+
status_code=200,
1672+
json={"id": connection_id, "name": "Test", "elementInstanceId": 1},
1673+
)
1674+
httpx_mock.add_response(
1675+
method="POST",
1676+
status_code=200,
1677+
json={},
1678+
)
1679+
1680+
service.invoke_activity(
1681+
activity_metadata=multipart_activity_metadata,
1682+
connection_id=connection_id,
1683+
activity_input=activity_input,
1684+
)
1685+
1686+
requests = httpx_mock.get_requests()
1687+
sent_request = requests[1]
1688+
1689+
assert "unknown_param" not in sent_request.url.params
1690+
assert "unknown_param" not in str(sent_request.url.path)
1691+
assert "unknown_param" not in sent_request.headers
1692+
body = sent_request.content.decode("utf-8", errors="replace")
1693+
assert "unknown_param" not in body
16471694

16481695
def test_invoke_activity_unsupported_content_type_raises_error(
16491696
self,

packages/uipath-platform/uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/uipath/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
[project]
22
name = "uipath"
3-
version = "2.10.27"
3+
version = "2.10.28"
44
description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
55
readme = { file = "README.md", content-type = "text/markdown" }
66
requires-python = ">=3.11"
77
dependencies = [
88
"uipath-core>=0.5.2, <0.6.0",
99
"uipath-runtime>=0.9.1, <0.10.0",
10-
"uipath-platform>=0.1.4, <0.2.0",
10+
"uipath-platform>=0.1.8, <0.2.0",
1111
"click>=8.3.1",
1212
"httpx>=0.28.1",
1313
"pyjwt>=2.10.1",

packages/uipath/uv.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)