Skip to content

Commit 29dc4d3

Browse files
Linux2010claude
andcommitted
test: add test for repeated nested message validation in proto_utils
Covers the _recurse_validation path for repeated message fields (e.g. Task.history), which was not previously tested. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 583d60a commit 29dc4d3

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

tests/utils/test_proto_utils.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,25 @@ def test_missing_required_fields(self):
264264

265265
assert {e['field'] for e in errors} == {'message_id', 'role', 'parts'}
266266

267+
def test_repeated_nested_message_validation(self):
268+
"""Test _recurse_validation for repeated message fields (Task.history)."""
269+
task = Task(
270+
id='task-1',
271+
context_id='ctx-1',
272+
status=TaskStatus(state=TaskState.TASK_STATE_WORKING),
273+
history=[Message()], # empty message — missing required fields
274+
)
275+
with pytest.raises(InvalidParamsError) as exc_info:
276+
proto_utils.validate_proto_required_fields(task)
277+
278+
err = exc_info.value
279+
errors = err.data.get('errors', []) if err.data else []
280+
281+
fields = [e['field'] for e in errors]
282+
assert 'history[0].message_id' in fields
283+
assert 'history[0].role' in fields
284+
assert 'history[0].parts' in fields
285+
267286
def test_nested_required_fields(self):
268287
"""Test nested required fields inside TaskStatus."""
269288
# Task Status requires 'state'

0 commit comments

Comments
 (0)