Skip to content

Commit 0c50fef

Browse files
committed
fix: map rejected task state in proto converters
1 parent a802500 commit 0c50fef

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed

src/a2a/utils/proto_utils.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,8 @@ def task_state(cls, state: types.TaskState) -> a2a_pb2.TaskState:
230230
return a2a_pb2.TaskState.TASK_STATE_INPUT_REQUIRED
231231
case types.TaskState.auth_required:
232232
return a2a_pb2.TaskState.TASK_STATE_AUTH_REQUIRED
233+
case types.TaskState.rejected:
234+
return a2a_pb2.TaskState.TASK_STATE_REJECTED
233235
case _:
234236
return a2a_pb2.TaskState.TASK_STATE_UNSPECIFIED
235237

@@ -703,6 +705,8 @@ def task_state(cls, state: a2a_pb2.TaskState) -> types.TaskState:
703705
return types.TaskState.input_required
704706
case a2a_pb2.TaskState.TASK_STATE_AUTH_REQUIRED:
705707
return types.TaskState.auth_required
708+
case a2a_pb2.TaskState.TASK_STATE_REJECTED:
709+
return types.TaskState.rejected
706710
case _:
707711
return types.TaskState.unknown
708712

tests/server/apps/rest/test_rest_fastapi_app.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,5 +352,44 @@ async def mock_stream_response():
352352
assert response.status_code == 200
353353

354354

355+
@pytest.mark.anyio
356+
async def test_get_task_status_rejected(
357+
client: AsyncClient, request_handler: MagicMock
358+
) -> None:
359+
expected_response = a2a_pb2.Task(
360+
id='test_task_id',
361+
context_id='test_context_id',
362+
status=a2a_pb2.TaskStatus(
363+
state=a2a_pb2.TaskState.TASK_STATE_REJECTED,
364+
update=a2a_pb2.Message(
365+
message_id='test',
366+
role=a2a_pb2.ROLE_AGENT,
367+
content=[
368+
a2a_pb2.Part(text="I don't want to work"),
369+
],
370+
),
371+
),
372+
)
373+
request_handler.on_get_task.return_value = Task(
374+
id='test_task_id',
375+
context_id='test_context_id',
376+
status=TaskStatus(
377+
state=TaskState.rejected,
378+
message=Message(
379+
message_id='test',
380+
role=Role.agent,
381+
parts=[Part(TextPart(text="I don't want to work"))],
382+
),
383+
),
384+
)
385+
386+
response = await client.get('/v1/tasks/test_task_id')
387+
388+
response.raise_for_status()
389+
actual_response = a2a_pb2.Task()
390+
json_format.Parse(response.text, actual_response)
391+
assert expected_response == actual_response
392+
393+
355394
if __name__ == '__main__':
356395
pytest.main([__file__])

tests/utils/test_proto_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def test_enum_conversions(self):
183183
)
184184

185185
for state in types.TaskState:
186-
if state not in (types.TaskState.unknown, types.TaskState.rejected):
186+
if state not in (types.TaskState.unknown,):
187187
proto_state = proto_utils.ToProto.task_state(state)
188188
assert proto_utils.FromProto.task_state(proto_state) == state
189189

0 commit comments

Comments
 (0)