Skip to content

Commit 3415894

Browse files
author
Harmanpreet Kaur
committed
updated test utils file
1 parent e34ecfc commit 3415894

File tree

1 file changed

+43
-84
lines changed

1 file changed

+43
-84
lines changed

src/backend/tests/test_utils.py

Lines changed: 43 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,65 @@
11
import pytest
22
import os
33
from unittest.mock import MagicMock, patch, AsyncMock
4-
from src.backend.utils import retrieve_all_agent_tools
5-
6-
# Mock all required environment variables globally before importing utils
7-
with patch.dict(os.environ, {
8-
"COSMOSDB_ENDPOINT": "https://mock-cosmosdb.documents.azure.com:443/",
9-
"COSMOSDB_KEY": "mock_key",
10-
"AZURE_OPENAI_ENDPOINT": "https://mock-openai-endpoint.azure.com/",
11-
"AZURE_OPENAI_API_VERSION": "2024-05-01-preview",
12-
"AZURE_OPENAI_DEPLOYMENT_NAME": "mock-deployment",
13-
"COSMOSDB_DATABASE": "mock_database",
14-
"COSMOSDB_CONTAINER": "mock_container"
15-
}):
16-
from src.backend.utils import (
17-
initialize_runtime_and_context,
18-
runtime_dict,
19-
rai_success, # Ensure rai_success is imported
20-
)
21-
4+
from src.backend.utils import initialize_runtime_and_context, runtime_dict, rai_success
225
from uuid import uuid4
23-
24-
6+
7+
# Mock environment variables
8+
os.environ["COSMOSDB_ENDPOINT"] = "https://mock-cosmosdb.documents.azure.com:443/"
9+
os.environ["COSMOSDB_KEY"] = "mock_key"
10+
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://mock-openai-endpoint.azure.com/"
11+
os.environ["AZURE_OPENAI_API_VERSION"] = "2024-05-01-preview"
12+
os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"] = "mock-deployment"
13+
os.environ["COSMOSDB_DATABASE"] = "mock_database"
14+
os.environ["COSMOSDB_CONTAINER"] = "mock_container"
15+
16+
2517
@pytest.mark.asyncio
26-
@patch("utils.SingleThreadedAgentRuntime")
27-
@patch("utils.CosmosBufferedChatCompletionContext")
28-
@patch("utils.ToolAgent.register")
18+
@patch("src.backend.utils.SingleThreadedAgentRuntime")
19+
@patch("src.backend.utils.CosmosBufferedChatCompletionContext")
20+
@patch("src.backend.utils.ToolAgent.register")
2921
async def test_initialize_runtime_and_context_new_session(
30-
mock_tool_agent_register, mock_context, mock_runtime
22+
_mock_tool_agent_register, _mock_context, _mock_runtime
3123
):
32-
session_id = None # Test session creation
24+
session_id = None
3325
user_id = "test-user-id"
34-
35-
# Use AsyncMock for asynchronous methods
36-
mock_runtime.return_value = AsyncMock()
37-
mock_context.return_value = AsyncMock()
38-
39-
runtime, context = await initialize_runtime_and_context(
40-
session_id=session_id, user_id=user_id
41-
)
42-
26+
27+
_mock_runtime.return_value = AsyncMock()
28+
_mock_context.return_value = AsyncMock()
29+
30+
runtime, context = await initialize_runtime_and_context(session_id, user_id)
31+
4332
assert runtime is not None
4433
assert context is not None
4534
assert len(runtime_dict) > 0
46-
47-
35+
36+
4837
@pytest.mark.asyncio
49-
@patch("utils.SingleThreadedAgentRuntime")
50-
@patch("utils.CosmosBufferedChatCompletionContext")
51-
@patch("utils.ToolAgent.register")
38+
@patch("src.backend.utils.SingleThreadedAgentRuntime")
39+
@patch("src.backend.utils.CosmosBufferedChatCompletionContext")
40+
@patch("src.backend.utils.ToolAgent.register")
5241
async def test_initialize_runtime_and_context_reuse_existing_session(
53-
mock_tool_agent_register, mock_context, mock_runtime
42+
_mock_tool_agent_register, _mock_context, _mock_runtime
5443
):
5544
session_id = str(uuid4())
5645
user_id = "test-user-id"
57-
58-
# Mock existing runtime and context in global runtime_dict
46+
5947
mock_runtime_instance = AsyncMock()
6048
mock_context_instance = AsyncMock()
6149
runtime_dict[session_id] = (mock_runtime_instance, mock_context_instance)
62-
63-
runtime, context = await initialize_runtime_and_context(
64-
session_id=session_id, user_id=user_id
65-
)
66-
67-
assert runtime is mock_runtime_instance
68-
assert context is mock_context_instance
69-
70-
71-
@pytest.mark.asyncio
72-
async def test_initialize_runtime_and_context_user_id_none():
73-
# Assert ValueError is raised when user_id is None
74-
with pytest.raises(ValueError, match="The 'user_id' parameter cannot be None. Please provide a valid user ID."):
75-
await initialize_runtime_and_context(session_id="test-session-id", user_id=None)
76-
77-
78-
@patch("utils.requests.post")
79-
@patch("utils.DefaultAzureCredential")
50+
51+
runtime, context = await initialize_runtime_and_context(session_id, user_id)
52+
53+
assert runtime == mock_runtime_instance
54+
assert context == mock_context_instance
55+
56+
57+
@patch("src.backend.utils.requests.post")
58+
@patch("src.backend.utils.DefaultAzureCredential")
8059
def test_rai_success_true(mock_credential, mock_post):
81-
# Mock Azure token
8260
mock_credential.return_value.get_token.return_value.token = "mock_token"
83-
84-
# Mock API response
85-
mock_post.return_value.json.return_value = {
86-
"choices": [{"message": {"content": "FALSE"}}]
87-
}
88-
61+
mock_post.return_value.json.return_value = {"choices": [{"message": {"content": "FALSE"}}]}
62+
mock_post.return_value.status_code = 200
63+
8964
result = rai_success("This is a valid description.")
90-
assert result is True
91-
92-
93-
@patch("utils.requests.post")
94-
@patch("utils.DefaultAzureCredential")
95-
def test_rai_success_false(mock_credential, mock_post):
96-
# Mock Azure token
97-
mock_credential.return_value.get_token.return_value.token = "mock_token"
98-
99-
# Mock API response for content filter
100-
mock_post.return_value.json.return_value = {
101-
"error": {"code": "content_filter"}
102-
}
103-
104-
result = rai_success("Invalid description with rule violation.")
105-
assert result is False
106-
65+
assert result is True

0 commit comments

Comments
 (0)