google-adk 0.0.3__py3-none-any.whl → 0.0.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- google/adk/agents/run_config.py +4 -0
- google/adk/auth/auth_preprocessor.py +19 -16
- google/adk/cli/browser/index.html +1 -1
- google/adk/cli/browser/{main-SY2WYYGV.js → main-CU22TRPI.js} +30 -30
- google/adk/cli/cli.py +8 -8
- google/adk/cli/cli_deploy.py +2 -4
- google/adk/cli/cli_tools_click.py +6 -6
- google/adk/flows/llm_flows/contents.py +21 -1
- google/adk/flows/llm_flows/functions.py +3 -1
- google/adk/models/google_llm.py +0 -1
- google/adk/runners.py +13 -2
- google/adk/version.py +1 -1
- {google_adk-0.0.3.dist-info → google_adk-0.0.4.dist-info}/METADATA +4 -2
- google_adk-0.0.4.dist-info/RECORD +175 -0
- {google_adk-0.0.3.dist-info → google_adk-0.0.4.dist-info}/WHEEL +1 -1
- google_adk-0.0.4.dist-info/licenses/LICENSE +202 -0
- google/adk/._version.py +0 -0
- google/adk/docs/Makefile +0 -20
- google/adk/docs/build/doctrees/google-adk.doctree +0 -0
- google/adk/docs/build/html/_sources/google-adk.rst.txt +0 -98
- google/adk/docs/build/html/_sources/index.rst.txt +0 -7
- google/adk/docs/build/html/_static/autodoc_pydantic.css +0 -27
- google/adk/docs/build/html/_static/basic.css +0 -925
- google/adk/docs/build/html/_static/debug.css +0 -85
- google/adk/docs/build/html/_static/doctools.js +0 -156
- google/adk/docs/build/html/_static/documentation_options.js +0 -29
- google/adk/docs/build/html/_static/file.png +0 -0
- google/adk/docs/build/html/_static/language_data.js +0 -199
- google/adk/docs/build/html/_static/minus.png +0 -0
- google/adk/docs/build/html/_static/plus.png +0 -0
- google/adk/docs/build/html/_static/pygments.css +0 -274
- google/adk/docs/build/html/_static/scripts/furo-extensions.js +0 -16
- google/adk/docs/build/html/_static/scripts/furo.js +0 -19
- google/adk/docs/build/html/_static/scripts/furo.js.LICENSE.txt +0 -7
- google/adk/docs/build/html/_static/scripts/furo.js.map +0 -1
- google/adk/docs/build/html/_static/searchtools.js +0 -620
- google/adk/docs/build/html/_static/skeleton.css +0 -312
- google/adk/docs/build/html/_static/sphinx_highlight.js +0 -170
- google/adk/docs/build/html/_static/styles/furo-extensions.css +0 -18
- google/adk/docs/build/html/_static/styles/furo-extensions.css.map +0 -1
- google/adk/docs/build/html/_static/styles/furo.css +0 -18
- google/adk/docs/build/html/_static/styles/furo.css.map +0 -1
- google/adk/docs/build/html/genindex.html +0 -861
- google/adk/docs/build/html/google-adk.html +0 -5461
- google/adk/docs/build/html/index.html +0 -567
- google/adk/docs/build/html/objects.inv +0 -0
- google/adk/docs/build/html/py-modindex.html +0 -373
- google/adk/docs/build/html/search.html +0 -333
- google/adk/docs/build/html/searchindex.js +0 -17
- google/adk/docs/source/conf.py +0 -133
- google/adk/docs/source/google-adk.rst +0 -98
- google/adk/docs/source/index.rst +0 -7
- google/adk/tests/__init__.py +0 -14
- google/adk/tests/integration/.env.example +0 -10
- google/adk/tests/integration/__init__.py +0 -18
- google/adk/tests/integration/conftest.py +0 -119
- google/adk/tests/integration/fixture/__init__.py +0 -14
- google/adk/tests/integration/fixture/agent_with_config/__init__.py +0 -15
- google/adk/tests/integration/fixture/agent_with_config/agent.py +0 -88
- google/adk/tests/integration/fixture/callback_agent/__init__.py +0 -15
- google/adk/tests/integration/fixture/callback_agent/agent.py +0 -105
- google/adk/tests/integration/fixture/context_update_test/OWNERS +0 -1
- google/adk/tests/integration/fixture/context_update_test/__init__.py +0 -15
- google/adk/tests/integration/fixture/context_update_test/agent.py +0 -43
- google/adk/tests/integration/fixture/context_update_test/successful_test.session.json +0 -582
- google/adk/tests/integration/fixture/context_variable_agent/__init__.py +0 -15
- google/adk/tests/integration/fixture/context_variable_agent/agent.py +0 -115
- google/adk/tests/integration/fixture/customer_support_ma/__init__.py +0 -15
- google/adk/tests/integration/fixture/customer_support_ma/agent.py +0 -172
- google/adk/tests/integration/fixture/ecommerce_customer_service_agent/__init__.py +0 -15
- google/adk/tests/integration/fixture/ecommerce_customer_service_agent/agent.py +0 -338
- google/adk/tests/integration/fixture/ecommerce_customer_service_agent/order_query.test.json +0 -69
- google/adk/tests/integration/fixture/ecommerce_customer_service_agent/test_config.json +0 -6
- google/adk/tests/integration/fixture/flow_complex_spark/__init__.py +0 -15
- google/adk/tests/integration/fixture/flow_complex_spark/agent.py +0 -182
- google/adk/tests/integration/fixture/flow_complex_spark/sample.session.json +0 -190
- google/adk/tests/integration/fixture/hello_world_agent/__init__.py +0 -15
- google/adk/tests/integration/fixture/hello_world_agent/agent.py +0 -95
- google/adk/tests/integration/fixture/hello_world_agent/roll_die.test.json +0 -24
- google/adk/tests/integration/fixture/hello_world_agent/test_config.json +0 -6
- google/adk/tests/integration/fixture/home_automation_agent/__init__.py +0 -15
- google/adk/tests/integration/fixture/home_automation_agent/agent.py +0 -304
- google/adk/tests/integration/fixture/home_automation_agent/simple_test.test.json +0 -5
- google/adk/tests/integration/fixture/home_automation_agent/simple_test2.test.json +0 -5
- google/adk/tests/integration/fixture/home_automation_agent/test_config.json +0 -5
- google/adk/tests/integration/fixture/home_automation_agent/test_files/dependent_tool_calls.test.json +0 -18
- google/adk/tests/integration/fixture/home_automation_agent/test_files/memorizing_past_events/eval_data.test.json +0 -17
- google/adk/tests/integration/fixture/home_automation_agent/test_files/memorizing_past_events/test_config.json +0 -6
- google/adk/tests/integration/fixture/home_automation_agent/test_files/simple_multi_turn_conversation.test.json +0 -18
- google/adk/tests/integration/fixture/home_automation_agent/test_files/simple_test.test.json +0 -17
- google/adk/tests/integration/fixture/home_automation_agent/test_files/simple_test2.test.json +0 -5
- google/adk/tests/integration/fixture/home_automation_agent/test_files/test_config.json +0 -5
- google/adk/tests/integration/fixture/tool_agent/__init__.py +0 -15
- google/adk/tests/integration/fixture/tool_agent/agent.py +0 -218
- google/adk/tests/integration/fixture/tool_agent/files/Agent_test_plan.pdf +0 -0
- google/adk/tests/integration/fixture/trip_planner_agent/__init__.py +0 -15
- google/adk/tests/integration/fixture/trip_planner_agent/agent.py +0 -110
- google/adk/tests/integration/fixture/trip_planner_agent/initial.session.json +0 -13
- google/adk/tests/integration/fixture/trip_planner_agent/test_config.json +0 -5
- google/adk/tests/integration/fixture/trip_planner_agent/test_files/initial.session.json +0 -13
- google/adk/tests/integration/fixture/trip_planner_agent/test_files/test_config.json +0 -5
- google/adk/tests/integration/fixture/trip_planner_agent/test_files/trip_inquiry_sub_agent.test.json +0 -7
- google/adk/tests/integration/fixture/trip_planner_agent/trip_inquiry.test.json +0 -19
- google/adk/tests/integration/models/__init__.py +0 -14
- google/adk/tests/integration/models/test_google_llm.py +0 -65
- google/adk/tests/integration/test_callback.py +0 -70
- google/adk/tests/integration/test_context_variable.py +0 -67
- google/adk/tests/integration/test_evalute_agent_in_fixture.py +0 -76
- google/adk/tests/integration/test_multi_agent.py +0 -28
- google/adk/tests/integration/test_multi_turn.py +0 -42
- google/adk/tests/integration/test_single_agent.py +0 -23
- google/adk/tests/integration/test_sub_agent.py +0 -26
- google/adk/tests/integration/test_system_instruction.py +0 -177
- google/adk/tests/integration/test_tools.py +0 -287
- google/adk/tests/integration/test_with_test_file.py +0 -34
- google/adk/tests/integration/tools/__init__.py +0 -14
- google/adk/tests/integration/utils/__init__.py +0 -16
- google/adk/tests/integration/utils/asserts.py +0 -75
- google/adk/tests/integration/utils/test_runner.py +0 -97
- google/adk/tests/unittests/__init__.py +0 -14
- google/adk/tests/unittests/agents/__init__.py +0 -14
- google/adk/tests/unittests/agents/test_base_agent.py +0 -407
- google/adk/tests/unittests/agents/test_langgraph_agent.py +0 -191
- google/adk/tests/unittests/agents/test_llm_agent_callbacks.py +0 -138
- google/adk/tests/unittests/agents/test_llm_agent_fields.py +0 -231
- google/adk/tests/unittests/agents/test_loop_agent.py +0 -136
- google/adk/tests/unittests/agents/test_parallel_agent.py +0 -92
- google/adk/tests/unittests/agents/test_sequential_agent.py +0 -114
- google/adk/tests/unittests/artifacts/__init__.py +0 -14
- google/adk/tests/unittests/artifacts/test_artifact_service.py +0 -276
- google/adk/tests/unittests/auth/test_auth_handler.py +0 -575
- google/adk/tests/unittests/conftest.py +0 -73
- google/adk/tests/unittests/fast_api/__init__.py +0 -14
- google/adk/tests/unittests/fast_api/test_fast_api.py +0 -269
- google/adk/tests/unittests/flows/__init__.py +0 -14
- google/adk/tests/unittests/flows/llm_flows/__init__.py +0 -14
- google/adk/tests/unittests/flows/llm_flows/_test_examples.py +0 -142
- google/adk/tests/unittests/flows/llm_flows/test_agent_transfer.py +0 -311
- google/adk/tests/unittests/flows/llm_flows/test_functions_long_running.py +0 -244
- google/adk/tests/unittests/flows/llm_flows/test_functions_request_euc.py +0 -346
- google/adk/tests/unittests/flows/llm_flows/test_functions_sequential.py +0 -93
- google/adk/tests/unittests/flows/llm_flows/test_functions_simple.py +0 -258
- google/adk/tests/unittests/flows/llm_flows/test_identity.py +0 -66
- google/adk/tests/unittests/flows/llm_flows/test_instructions.py +0 -164
- google/adk/tests/unittests/flows/llm_flows/test_model_callbacks.py +0 -142
- google/adk/tests/unittests/flows/llm_flows/test_other_configs.py +0 -46
- google/adk/tests/unittests/flows/llm_flows/test_tool_callbacks.py +0 -269
- google/adk/tests/unittests/models/__init__.py +0 -14
- google/adk/tests/unittests/models/test_google_llm.py +0 -224
- google/adk/tests/unittests/models/test_litellm.py +0 -804
- google/adk/tests/unittests/models/test_models.py +0 -60
- google/adk/tests/unittests/sessions/__init__.py +0 -14
- google/adk/tests/unittests/sessions/test_session_service.py +0 -227
- google/adk/tests/unittests/sessions/test_vertex_ai_session_service.py +0 -246
- google/adk/tests/unittests/streaming/__init__.py +0 -14
- google/adk/tests/unittests/streaming/test_streaming.py +0 -50
- google/adk/tests/unittests/tools/__init__.py +0 -14
- google/adk/tests/unittests/tools/apihub_tool/clients/test_apihub_client.py +0 -499
- google/adk/tests/unittests/tools/apihub_tool/test_apihub_toolset.py +0 -204
- google/adk/tests/unittests/tools/application_integration_tool/clients/test_connections_client.py +0 -600
- google/adk/tests/unittests/tools/application_integration_tool/clients/test_integration_client.py +0 -630
- google/adk/tests/unittests/tools/application_integration_tool/test_application_integration_toolset.py +0 -345
- google/adk/tests/unittests/tools/google_api_tool/__init__.py +0 -13
- google/adk/tests/unittests/tools/google_api_tool/test_googleapi_to_openapi_converter.py +0 -657
- google/adk/tests/unittests/tools/openapi_tool/auth/credential_exchangers/test_auto_auth_credential_exchanger.py +0 -145
- google/adk/tests/unittests/tools/openapi_tool/auth/credential_exchangers/test_base_auth_credential_exchanger.py +0 -68
- google/adk/tests/unittests/tools/openapi_tool/auth/credential_exchangers/test_oauth2_exchanger.py +0 -153
- google/adk/tests/unittests/tools/openapi_tool/auth/credential_exchangers/test_service_account_exchanger.py +0 -196
- google/adk/tests/unittests/tools/openapi_tool/auth/test_auth_helper.py +0 -573
- google/adk/tests/unittests/tools/openapi_tool/common/test_common.py +0 -436
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test.yaml +0 -1367
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test_openapi_spec_parser.py +0 -628
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test_openapi_toolset.py +0 -139
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test_operation_parser.py +0 -406
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test_rest_api_tool.py +0 -966
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test_tool_auth_handler.py +0 -201
- google/adk/tests/unittests/tools/retrieval/__init__.py +0 -14
- google/adk/tests/unittests/tools/retrieval/test_vertex_ai_rag_retrieval.py +0 -147
- google/adk/tests/unittests/tools/test_agent_tool.py +0 -167
- google/adk/tests/unittests/tools/test_base_tool.py +0 -141
- google/adk/tests/unittests/tools/test_build_function_declaration.py +0 -277
- google/adk/tests/unittests/utils.py +0 -304
- google_adk-0.0.3.dist-info/RECORD +0 -340
- {google_adk-0.0.3.dist-info → google_adk-0.0.4.dist-info}/entry_points.txt +0 -0
@@ -1,345 +0,0 @@
|
|
1
|
-
# Copyright 2025 Google LLC
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
import json
|
16
|
-
from unittest import mock
|
17
|
-
|
18
|
-
from google.adk.auth.auth_credential import AuthCredential
|
19
|
-
from google.adk.tools.application_integration_tool.application_integration_toolset import ApplicationIntegrationToolset
|
20
|
-
from google.adk.tools.openapi_tool.openapi_spec_parser import rest_api_tool
|
21
|
-
import pytest
|
22
|
-
|
23
|
-
|
24
|
-
@pytest.fixture
|
25
|
-
def mock_integration_client():
|
26
|
-
with mock.patch(
|
27
|
-
"google.adk.tools.application_integration_tool.application_integration_toolset.IntegrationClient"
|
28
|
-
) as mock_client:
|
29
|
-
yield mock_client
|
30
|
-
|
31
|
-
|
32
|
-
@pytest.fixture
|
33
|
-
def mock_connections_client():
|
34
|
-
with mock.patch(
|
35
|
-
"google.adk.tools.application_integration_tool.application_integration_toolset.ConnectionsClient"
|
36
|
-
) as mock_client:
|
37
|
-
yield mock_client
|
38
|
-
|
39
|
-
|
40
|
-
@pytest.fixture
|
41
|
-
def mock_openapi_toolset():
|
42
|
-
with mock.patch(
|
43
|
-
"google.adk.tools.application_integration_tool.application_integration_toolset.OpenAPIToolset"
|
44
|
-
) as mock_toolset:
|
45
|
-
mock_toolset_instance = mock.MagicMock()
|
46
|
-
mock_rest_api_tool = mock.MagicMock(spec=rest_api_tool.RestApiTool)
|
47
|
-
mock_rest_api_tool.name = "Test Tool"
|
48
|
-
mock_toolset_instance.get_tools.return_value = [mock_rest_api_tool]
|
49
|
-
mock_toolset.return_value = mock_toolset_instance
|
50
|
-
yield mock_toolset
|
51
|
-
|
52
|
-
|
53
|
-
@pytest.fixture
|
54
|
-
def project():
|
55
|
-
return "test-project"
|
56
|
-
|
57
|
-
|
58
|
-
@pytest.fixture
|
59
|
-
def location():
|
60
|
-
return "us-central1"
|
61
|
-
|
62
|
-
|
63
|
-
@pytest.fixture
|
64
|
-
def integration_spec():
|
65
|
-
return {"openapi": "3.0.0", "info": {"title": "Integration API"}}
|
66
|
-
|
67
|
-
|
68
|
-
@pytest.fixture
|
69
|
-
def connection_spec():
|
70
|
-
return {"openapi": "3.0.0", "info": {"title": "Connection API"}}
|
71
|
-
|
72
|
-
|
73
|
-
@pytest.fixture
|
74
|
-
def connection_details():
|
75
|
-
return {"serviceName": "test-service", "host": "test.host"}
|
76
|
-
|
77
|
-
|
78
|
-
def test_initialization_with_integration_and_trigger(
|
79
|
-
project,
|
80
|
-
location,
|
81
|
-
mock_integration_client,
|
82
|
-
mock_connections_client,
|
83
|
-
mock_openapi_toolset,
|
84
|
-
):
|
85
|
-
integration_name = "test-integration"
|
86
|
-
trigger_name = "test-trigger"
|
87
|
-
toolset = ApplicationIntegrationToolset(
|
88
|
-
project, location, integration=integration_name, trigger=trigger_name
|
89
|
-
)
|
90
|
-
mock_integration_client.assert_called_once_with(
|
91
|
-
project, location, integration_name, trigger_name, None, None, None, None
|
92
|
-
)
|
93
|
-
mock_integration_client.return_value.get_openapi_spec_for_integration.assert_called_once()
|
94
|
-
mock_connections_client.assert_not_called()
|
95
|
-
mock_openapi_toolset.assert_called_once()
|
96
|
-
assert len(toolset.get_tools()) == 1
|
97
|
-
assert toolset.get_tools()[0].name == "Test Tool"
|
98
|
-
|
99
|
-
|
100
|
-
def test_initialization_with_connection_and_entity_operations(
|
101
|
-
project,
|
102
|
-
location,
|
103
|
-
mock_integration_client,
|
104
|
-
mock_connections_client,
|
105
|
-
mock_openapi_toolset,
|
106
|
-
connection_details,
|
107
|
-
):
|
108
|
-
connection_name = "test-connection"
|
109
|
-
entity_operations_list = ["list", "get"]
|
110
|
-
tool_name = "My Connection Tool"
|
111
|
-
tool_instructions = "Use this tool to manage entities."
|
112
|
-
mock_connections_client.return_value.get_connection_details.return_value = (
|
113
|
-
connection_details
|
114
|
-
)
|
115
|
-
toolset = ApplicationIntegrationToolset(
|
116
|
-
project,
|
117
|
-
location,
|
118
|
-
connection=connection_name,
|
119
|
-
entity_operations=entity_operations_list,
|
120
|
-
tool_name=tool_name,
|
121
|
-
tool_instructions=tool_instructions,
|
122
|
-
)
|
123
|
-
mock_integration_client.assert_called_once_with(
|
124
|
-
project,
|
125
|
-
location,
|
126
|
-
None,
|
127
|
-
None,
|
128
|
-
connection_name,
|
129
|
-
entity_operations_list,
|
130
|
-
None,
|
131
|
-
None,
|
132
|
-
)
|
133
|
-
mock_connections_client.assert_called_once_with(
|
134
|
-
project, location, connection_name, None
|
135
|
-
)
|
136
|
-
mock_connections_client.return_value.get_connection_details.assert_called_once()
|
137
|
-
mock_integration_client.return_value.get_openapi_spec_for_connection.assert_called_once_with(
|
138
|
-
tool_name,
|
139
|
-
tool_instructions
|
140
|
-
+ f"ALWAYS use serviceName = {connection_details['serviceName']}, host ="
|
141
|
-
f" {connection_details['host']} and the connection name ="
|
142
|
-
f" projects/{project}/locations/{location}/connections/{connection_name} when"
|
143
|
-
" using this tool. DONOT ask the user for these values as you already"
|
144
|
-
" have those.",
|
145
|
-
)
|
146
|
-
mock_openapi_toolset.assert_called_once()
|
147
|
-
assert len(toolset.get_tools()) == 1
|
148
|
-
assert toolset.get_tools()[0].name == "Test Tool"
|
149
|
-
|
150
|
-
|
151
|
-
def test_initialization_with_connection_and_actions(
|
152
|
-
project,
|
153
|
-
location,
|
154
|
-
mock_integration_client,
|
155
|
-
mock_connections_client,
|
156
|
-
mock_openapi_toolset,
|
157
|
-
connection_details,
|
158
|
-
):
|
159
|
-
connection_name = "test-connection"
|
160
|
-
actions_list = ["create", "delete"]
|
161
|
-
tool_name = "My Actions Tool"
|
162
|
-
tool_instructions = "Perform actions using this tool."
|
163
|
-
mock_connections_client.return_value.get_connection_details.return_value = (
|
164
|
-
connection_details
|
165
|
-
)
|
166
|
-
toolset = ApplicationIntegrationToolset(
|
167
|
-
project,
|
168
|
-
location,
|
169
|
-
connection=connection_name,
|
170
|
-
actions=actions_list,
|
171
|
-
tool_name=tool_name,
|
172
|
-
tool_instructions=tool_instructions,
|
173
|
-
)
|
174
|
-
mock_integration_client.assert_called_once_with(
|
175
|
-
project, location, None, None, connection_name, None, actions_list, None
|
176
|
-
)
|
177
|
-
mock_connections_client.assert_called_once_with(
|
178
|
-
project, location, connection_name, None
|
179
|
-
)
|
180
|
-
mock_connections_client.return_value.get_connection_details.assert_called_once()
|
181
|
-
mock_integration_client.return_value.get_openapi_spec_for_connection.assert_called_once_with(
|
182
|
-
tool_name,
|
183
|
-
tool_instructions
|
184
|
-
+ f"ALWAYS use serviceName = {connection_details['serviceName']}, host ="
|
185
|
-
f" {connection_details['host']} and the connection name ="
|
186
|
-
f" projects/{project}/locations/{location}/connections/{connection_name} when"
|
187
|
-
" using this tool. DONOT ask the user for these values as you already"
|
188
|
-
" have those.",
|
189
|
-
)
|
190
|
-
mock_openapi_toolset.assert_called_once()
|
191
|
-
assert len(toolset.get_tools()) == 1
|
192
|
-
assert toolset.get_tools()[0].name == "Test Tool"
|
193
|
-
|
194
|
-
|
195
|
-
def test_initialization_without_required_params(project, location):
|
196
|
-
with pytest.raises(
|
197
|
-
ValueError,
|
198
|
-
match=(
|
199
|
-
"Either \\(integration and trigger\\) or \\(connection and"
|
200
|
-
" \\(entity_operations or actions\\)\\) should be provided."
|
201
|
-
),
|
202
|
-
):
|
203
|
-
ApplicationIntegrationToolset(project, location)
|
204
|
-
|
205
|
-
with pytest.raises(
|
206
|
-
ValueError,
|
207
|
-
match=(
|
208
|
-
"Either \\(integration and trigger\\) or \\(connection and"
|
209
|
-
" \\(entity_operations or actions\\)\\) should be provided."
|
210
|
-
),
|
211
|
-
):
|
212
|
-
ApplicationIntegrationToolset(project, location, integration="test")
|
213
|
-
|
214
|
-
with pytest.raises(
|
215
|
-
ValueError,
|
216
|
-
match=(
|
217
|
-
"Either \\(integration and trigger\\) or \\(connection and"
|
218
|
-
" \\(entity_operations or actions\\)\\) should be provided."
|
219
|
-
),
|
220
|
-
):
|
221
|
-
ApplicationIntegrationToolset(project, location, trigger="test")
|
222
|
-
|
223
|
-
with pytest.raises(
|
224
|
-
ValueError,
|
225
|
-
match=(
|
226
|
-
"Either \\(integration and trigger\\) or \\(connection and"
|
227
|
-
" \\(entity_operations or actions\\)\\) should be provided."
|
228
|
-
),
|
229
|
-
):
|
230
|
-
ApplicationIntegrationToolset(project, location, connection="test")
|
231
|
-
|
232
|
-
|
233
|
-
def test_initialization_with_service_account_credentials(
|
234
|
-
project, location, mock_integration_client, mock_openapi_toolset
|
235
|
-
):
|
236
|
-
service_account_json = json.dumps({
|
237
|
-
"type": "service_account",
|
238
|
-
"project_id": "dummy",
|
239
|
-
"private_key_id": "dummy",
|
240
|
-
"private_key": "dummy",
|
241
|
-
"client_email": "test@example.com",
|
242
|
-
"client_id": "131331543646416",
|
243
|
-
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
244
|
-
"token_uri": "https://oauth2.googleapis.com/token",
|
245
|
-
"auth_provider_x509_cert_url": (
|
246
|
-
"https://www.googleapis.com/oauth2/v1/certs"
|
247
|
-
),
|
248
|
-
"client_x509_cert_url": (
|
249
|
-
"http://www.googleapis.com/robot/v1/metadata/x509/dummy%40dummy.com"
|
250
|
-
),
|
251
|
-
"universe_domain": "googleapis.com",
|
252
|
-
})
|
253
|
-
integration_name = "test-integration"
|
254
|
-
trigger_name = "test-trigger"
|
255
|
-
toolset = ApplicationIntegrationToolset(
|
256
|
-
project,
|
257
|
-
location,
|
258
|
-
integration=integration_name,
|
259
|
-
trigger=trigger_name,
|
260
|
-
service_account_json=service_account_json,
|
261
|
-
)
|
262
|
-
mock_integration_client.assert_called_once_with(
|
263
|
-
project,
|
264
|
-
location,
|
265
|
-
integration_name,
|
266
|
-
trigger_name,
|
267
|
-
None,
|
268
|
-
None,
|
269
|
-
None,
|
270
|
-
service_account_json,
|
271
|
-
)
|
272
|
-
mock_openapi_toolset.assert_called_once()
|
273
|
-
_, kwargs = mock_openapi_toolset.call_args
|
274
|
-
assert isinstance(kwargs["auth_credential"], AuthCredential)
|
275
|
-
assert (
|
276
|
-
kwargs[
|
277
|
-
"auth_credential"
|
278
|
-
].service_account.service_account_credential.client_email
|
279
|
-
== "test@example.com"
|
280
|
-
)
|
281
|
-
|
282
|
-
|
283
|
-
def test_initialization_without_explicit_service_account_credentials(
|
284
|
-
project, location, mock_integration_client, mock_openapi_toolset
|
285
|
-
):
|
286
|
-
integration_name = "test-integration"
|
287
|
-
trigger_name = "test-trigger"
|
288
|
-
toolset = ApplicationIntegrationToolset(
|
289
|
-
project, location, integration=integration_name, trigger=trigger_name
|
290
|
-
)
|
291
|
-
mock_integration_client.assert_called_once_with(
|
292
|
-
project, location, integration_name, trigger_name, None, None, None, None
|
293
|
-
)
|
294
|
-
mock_openapi_toolset.assert_called_once()
|
295
|
-
_, kwargs = mock_openapi_toolset.call_args
|
296
|
-
assert isinstance(kwargs["auth_credential"], AuthCredential)
|
297
|
-
assert kwargs["auth_credential"].service_account.use_default_credential
|
298
|
-
|
299
|
-
|
300
|
-
def test_get_tools(
|
301
|
-
project, location, mock_integration_client, mock_openapi_toolset
|
302
|
-
):
|
303
|
-
integration_name = "test-integration"
|
304
|
-
trigger_name = "test-trigger"
|
305
|
-
toolset = ApplicationIntegrationToolset(
|
306
|
-
project, location, integration=integration_name, trigger=trigger_name
|
307
|
-
)
|
308
|
-
tools = toolset.get_tools()
|
309
|
-
assert len(tools) == 1
|
310
|
-
assert isinstance(tools[0], rest_api_tool.RestApiTool)
|
311
|
-
assert tools[0].name == "Test Tool"
|
312
|
-
|
313
|
-
|
314
|
-
def test_initialization_with_connection_details(
|
315
|
-
project,
|
316
|
-
location,
|
317
|
-
mock_integration_client,
|
318
|
-
mock_connections_client,
|
319
|
-
mock_openapi_toolset,
|
320
|
-
):
|
321
|
-
connection_name = "test-connection"
|
322
|
-
entity_operations_list = ["list"]
|
323
|
-
tool_name = "My Connection Tool"
|
324
|
-
tool_instructions = "Use this tool."
|
325
|
-
mock_connections_client.return_value.get_connection_details.return_value = {
|
326
|
-
"serviceName": "custom-service",
|
327
|
-
"host": "custom.host",
|
328
|
-
}
|
329
|
-
toolset = ApplicationIntegrationToolset(
|
330
|
-
project,
|
331
|
-
location,
|
332
|
-
connection=connection_name,
|
333
|
-
entity_operations=entity_operations_list,
|
334
|
-
tool_name=tool_name,
|
335
|
-
tool_instructions=tool_instructions,
|
336
|
-
)
|
337
|
-
mock_integration_client.return_value.get_openapi_spec_for_connection.assert_called_once_with(
|
338
|
-
tool_name,
|
339
|
-
tool_instructions
|
340
|
-
+ "ALWAYS use serviceName = custom-service, host = custom.host and the"
|
341
|
-
" connection name ="
|
342
|
-
" projects/test-project/locations/us-central1/connections/test-connection"
|
343
|
-
" when using this tool. DONOT ask the user for these values as you"
|
344
|
-
" already have those.",
|
345
|
-
)
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# Copyright 2025 Google LLC
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|