|
| 1 | +"""Tests for a2a.client.service_parameters module.""" |
| 2 | + |
| 3 | +from a2a.client.service_parameters import ( |
| 4 | + ServiceParametersFactory, |
| 5 | + with_a2a_extensions, |
| 6 | +) |
| 7 | +from a2a.extensions.common import HTTP_EXTENSION_HEADER |
| 8 | + |
| 9 | + |
| 10 | +def test_with_a2a_extensions_merges_dedupes_and_sorts(): |
| 11 | + """Repeated calls accumulate; duplicates collapse; output is sorted.""" |
| 12 | + parameters = ServiceParametersFactory.create( |
| 13 | + [ |
| 14 | + with_a2a_extensions(['ext-c', 'ext-a']), |
| 15 | + with_a2a_extensions(['ext-b', 'ext-a']), |
| 16 | + ] |
| 17 | + ) |
| 18 | + |
| 19 | + assert parameters[HTTP_EXTENSION_HEADER] == 'ext-a,ext-b,ext-c' |
| 20 | + |
| 21 | + |
| 22 | +def test_with_a2a_extensions_merges_existing_header_value(): |
| 23 | + """Pre-existing comma-separated header values are parsed and merged.""" |
| 24 | + parameters = ServiceParametersFactory.create_from( |
| 25 | + {HTTP_EXTENSION_HEADER: 'ext-a, ext-b'}, |
| 26 | + [with_a2a_extensions(['ext-c'])], |
| 27 | + ) |
| 28 | + |
| 29 | + assert parameters[HTTP_EXTENSION_HEADER] == 'ext-a,ext-b,ext-c' |
| 30 | + |
| 31 | + |
| 32 | +def test_with_a2a_extensions_empty_is_noop(): |
| 33 | + """An empty extensions list leaves the header untouched / absent.""" |
| 34 | + parameters = ServiceParametersFactory.create( |
| 35 | + [ |
| 36 | + with_a2a_extensions(['ext-a']), |
| 37 | + with_a2a_extensions([]), |
| 38 | + ] |
| 39 | + ) |
| 40 | + |
| 41 | + assert parameters[HTTP_EXTENSION_HEADER] == 'ext-a' |
| 42 | + assert HTTP_EXTENSION_HEADER not in ServiceParametersFactory.create( |
| 43 | + [with_a2a_extensions([])] |
| 44 | + ) |
| 45 | + |
| 46 | + |
| 47 | +def test_with_a2a_extensions_normalizes_input_strings(): |
| 48 | + """Input strings are split on commas and stripped, like header values.""" |
| 49 | + parameters = ServiceParametersFactory.create( |
| 50 | + [with_a2a_extensions(['ext-a, ext-b', ' ext-c '])] |
| 51 | + ) |
| 52 | + |
| 53 | + assert parameters[HTTP_EXTENSION_HEADER] == 'ext-a,ext-b,ext-c' |
0 commit comments