diff --git a/aixplain/modules/agent/__init__.py b/aixplain/modules/agent/__init__.py index 41bb0a2e..3f892723 100644 --- a/aixplain/modules/agent/__init__.py +++ b/aixplain/modules/agent/__init__.py @@ -249,13 +249,14 @@ def delete(self) -> None: headers = {"x-api-key": config.TEAM_API_KEY, "Content-Type": "application/json"} logging.debug(f"Start service for DELETE Agent - {url} - {headers}") r = _request_with_retry("delete", url, headers=headers) + logging.debug(f"Result of request for DELETE Agent - {r.status_code}") if r.status_code != 200: raise Exception() except Exception: try: response_json = r.json() - message = f"Agent Deletion Error (HTTP {r.status_code}): {response_json.get('message')}." + message = f"Agent Deletion Error (HTTP {r.status_code}): {response_json.get('message', '').strip('{{}}')}." except ValueError: message = f"Agent Deletion Error (HTTP {r.status_code}): There was an error in deleting the agent." logging.error(message) - raise Exception(message) \ No newline at end of file + raise Exception(message) diff --git a/tests/functional/agent/agent_functional_test.py b/tests/functional/agent/agent_functional_test.py index 648f4f28..478b23f3 100644 --- a/tests/functional/agent/agent_functional_test.py +++ b/tests/functional/agent/agent_functional_test.py @@ -19,7 +19,7 @@ from dotenv import load_dotenv load_dotenv() -from aixplain.factories import AgentFactory +from aixplain.factories import AgentFactory, TeamAgentFactory from aixplain.enums.function import Function from aixplain.enums.supplier import Supplier @@ -36,11 +36,23 @@ def read_data(data_path): def run_input_map(request): return request.param +@pytest.fixture(scope="function") +def delete_agents_and_team_agents(): + for team_agent in TeamAgentFactory.list()["results"]: + team_agent.delete() + for agent in AgentFactory.list()["results"]: + agent.delete() + + yield True -def test_end2end(run_input_map): + for team_agent in TeamAgentFactory.list()["results"]: + team_agent.delete() for agent in AgentFactory.list()["results"]: agent.delete() + +def test_end2end(run_input_map, delete_agents_and_team_agents): + assert delete_agents_and_team_agents tools = [] if "model_tools" in run_input_map: for tool in run_input_map["model_tools"]: @@ -88,3 +100,21 @@ def test_fail_non_existent_llm(): tools=[AgentFactory.create_model_tool(function=Function.TRANSLATION)], ) assert str(exc_info.value) == "Large Language Model with ID 'non_existent_llm' not found." + +def test_delete_agent_in_use(delete_agents_and_team_agents): + assert delete_agents_and_team_agents + agent = AgentFactory.create( + name="Test Agent", + description="Test description", + tools=[AgentFactory.create_model_tool(function=Function.TRANSLATION)], + ) + TeamAgentFactory.create( + name="Test Team Agent", + agents=[agent], + description="Test description", + use_mentalist_and_inspector=True, + ) + + with pytest.raises(Exception) as exc_info: + agent.delete() + assert str(exc_info.value) == "Agent Deletion Error (HTTP 403): err.agent_is_in_use." \ No newline at end of file diff --git a/tests/functional/team_agent/team_agent_functional_test.py b/tests/functional/team_agent/team_agent_functional_test.py index c7e50b68..c28b01da 100644 --- a/tests/functional/team_agent/team_agent_functional_test.py +++ b/tests/functional/team_agent/team_agent_functional_test.py @@ -31,15 +31,28 @@ def read_data(data_path): return json.load(open(data_path, "r")) +@pytest.fixture(scope="function") +def delete_agents_and_team_agents(): + for team_agent in TeamAgentFactory.list()["results"]: + team_agent.delete() + for agent in AgentFactory.list()["results"]: + agent.delete() + + yield True + + for team_agent in TeamAgentFactory.list()["results"]: + team_agent.delete() + for agent in AgentFactory.list()["results"]: + agent.delete() + @pytest.fixture(scope="module", params=read_data(RUN_FILE)) def run_input_map(request): return request.param -def test_end2end(run_input_map): - for agent in AgentFactory.list()["results"]: - agent.delete() +def test_end2end(run_input_map, delete_agents_and_team_agents): + assert delete_agents_and_team_agents agents = [] for agent in run_input_map["agents"]: