|
18 | 18 | from a2a.server.agent_execution import RequestContext |
19 | 19 | from google.adk.a2a.converters.request_converter import _get_user_id |
20 | 20 | from google.adk.a2a.converters.request_converter import convert_a2a_request_to_agent_run_request |
| 21 | +from google.adk.a2a.converters.utils import _to_a2a_context_id |
21 | 22 | from google.adk.runners import RunConfig |
22 | 23 | from google.genai import types as genai_types |
23 | 24 | import pytest |
@@ -58,6 +59,16 @@ def test_get_user_id_from_context_when_no_call_context(self): |
58 | 59 | # Assert |
59 | 60 | assert result == "A2A_USER_test_context" |
60 | 61 |
|
| 62 | + def test_get_user_id_from_adk_context_id(self): |
| 63 | + """Test getting user ID from ADK-formatted context id.""" |
| 64 | + request = Mock(spec=RequestContext) |
| 65 | + request.call_context = None |
| 66 | + request.context_id = _to_a2a_context_id("app", "user-123", "session-456") |
| 67 | + |
| 68 | + result = _get_user_id(request) |
| 69 | + |
| 70 | + assert result == "user-123" |
| 71 | + |
61 | 72 | def test_get_user_id_from_context_when_call_context_has_no_user(self): |
62 | 73 | """Test getting user ID from context when call context has no user.""" |
63 | 74 | # Arrange |
@@ -129,6 +140,27 @@ def test_get_user_id_with_none_context_id(self): |
129 | 140 | class TestConvertA2aRequestToAgentRunRequest: |
130 | 141 | """Test cases for convert_a2a_request_to_agent_run_request function.""" |
131 | 142 |
|
| 143 | + def test_convert_a2a_request_with_adk_context_id(self): |
| 144 | + """Test conversion uses ADK context id for user/session.""" |
| 145 | + mock_message = Mock() |
| 146 | + mock_message.parts = [Mock()] |
| 147 | + |
| 148 | + request = Mock(spec=RequestContext) |
| 149 | + request.message = mock_message |
| 150 | + request.context_id = _to_a2a_context_id("app", "user-1", "session-1") |
| 151 | + request.call_context = None |
| 152 | + request.metadata = {} |
| 153 | + |
| 154 | + mock_genai_part = genai_types.Part(text="test part") |
| 155 | + mock_convert_part = Mock(return_value=mock_genai_part) |
| 156 | + |
| 157 | + result = convert_a2a_request_to_agent_run_request( |
| 158 | + request, mock_convert_part |
| 159 | + ) |
| 160 | + |
| 161 | + assert result.user_id == "user-1" |
| 162 | + assert result.session_id == "session-1" |
| 163 | + |
132 | 164 | def test_convert_a2a_request_basic(self): |
133 | 165 | """Test basic conversion of A2A request to ADK AgentRunRequest.""" |
134 | 166 | # Arrange |
@@ -164,7 +196,7 @@ def test_convert_a2a_request_basic(self): |
164 | 196 | # Assert |
165 | 197 | assert result is not None |
166 | 198 | assert result.user_id == "test_user" |
167 | | - assert result.session_id == "test_context_123" |
| 199 | + assert result.session_id is None |
168 | 200 | assert isinstance(result.new_message, genai_types.Content) |
169 | 201 | assert result.new_message.role == "user" |
170 | 202 | assert result.new_message.parts == [mock_genai_part1, mock_genai_part2] |
@@ -213,7 +245,7 @@ def test_convert_a2a_request_multiple_parts(self): |
213 | 245 | # Assert |
214 | 246 | assert result is not None |
215 | 247 | assert result.user_id == "test_user" |
216 | | - assert result.session_id == "test_context_123" |
| 248 | + assert result.session_id is None |
217 | 249 | assert isinstance(result.new_message, genai_types.Content) |
218 | 250 | assert result.new_message.role == "user" |
219 | 251 | assert result.new_message.parts == [ |
@@ -261,7 +293,7 @@ def test_convert_a2a_request_empty_parts(self): |
261 | 293 | # Assert |
262 | 294 | assert result is not None |
263 | 295 | assert result.user_id == "A2A_USER_test_context_123" |
264 | | - assert result.session_id == "test_context_123" |
| 296 | + assert result.session_id is None |
265 | 297 | assert isinstance(result.new_message, genai_types.Content) |
266 | 298 | assert result.new_message.role == "user" |
267 | 299 | assert result.new_message.parts == [] |
@@ -328,7 +360,7 @@ def test_convert_a2a_request_no_auth(self): |
328 | 360 | # Assert |
329 | 361 | assert result is not None |
330 | 362 | assert result.user_id == "A2A_USER_session_123" |
331 | | - assert result.session_id == "session_123" |
| 363 | + assert result.session_id is None |
332 | 364 | assert isinstance(result.new_message, genai_types.Content) |
333 | 365 | assert result.new_message.role == "user" |
334 | 366 | assert result.new_message.parts == [mock_genai_part] |
@@ -370,7 +402,7 @@ def test_end_to_end_conversion_with_auth_user(self): |
370 | 402 | # Assert |
371 | 403 | assert result is not None |
372 | 404 | assert result.user_id == "auth_user" # Should use authenticated user |
373 | | - assert result.session_id == "mysession" |
| 405 | + assert result.session_id is None |
374 | 406 | assert isinstance(result.new_message, genai_types.Content) |
375 | 407 | assert result.new_message.role == "user" |
376 | 408 | assert result.new_message.parts == [mock_genai_part] |
@@ -404,7 +436,7 @@ def test_end_to_end_conversion_with_fallback_user(self): |
404 | 436 | assert ( |
405 | 437 | result.user_id == "A2A_USER_test_session_456" |
406 | 438 | ) # Should fall back to context ID |
407 | | - assert result.session_id == "test_session_456" |
| 439 | + assert result.session_id is None |
408 | 440 | assert isinstance(result.new_message, genai_types.Content) |
409 | 441 | assert result.new_message.role == "user" |
410 | 442 | assert result.new_message.parts == [mock_genai_part] |
|
0 commit comments