77from a2a .extensions .common import HTTP_EXTENSION_HEADER
88
99
10- def test_with_a2a_extensions_sets_header_when_empty ():
11- """First call on empty parameters sets the joined URIs."""
12- parameters = ServiceParametersFactory .create (
13- [with_a2a_extensions (['ext-b' , 'ext-a' ])]
14- )
15-
16- assert parameters [HTTP_EXTENSION_HEADER ] == 'ext-a,ext-b'
17-
18-
19- def test_with_a2a_extensions_merges_disjoint_calls ():
20- """A second call with disjoint URIs unions both sets."""
10+ def test_with_a2a_extensions_merges_dedupes_and_sorts ():
11+ """Repeated calls accumulate; duplicates collapse; output is sorted."""
2112 parameters = ServiceParametersFactory .create (
2213 [
23- with_a2a_extensions (['ext-a' ]),
24- with_a2a_extensions (['ext-b' ]),
14+ with_a2a_extensions (['ext-c' , 'ext- a' ]),
15+ with_a2a_extensions (['ext-b' , 'ext-a' ]),
2516 ]
2617 )
2718
28- assert parameters [HTTP_EXTENSION_HEADER ] == 'ext-a,ext-b'
19+ assert parameters [HTTP_EXTENSION_HEADER ] == 'ext-a,ext-b,ext-c '
2920
3021
31- def test_with_a2a_extensions_deduplicates_overlapping ():
32- """Overlapping URIs do not produce duplicates."""
33- parameters = ServiceParametersFactory .create (
34- [
35- with_a2a_extensions (['ext-a' , 'ext-b' ]),
36- with_a2a_extensions (['ext-b' , 'ext-c' ]),
37- ]
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' ])],
3827 )
3928
4029 assert parameters [HTTP_EXTENSION_HEADER ] == 'ext-a,ext-b,ext-c'
4130
4231
4332def test_with_a2a_extensions_empty_is_noop ():
44- """Calling with an empty list leaves any existing header untouched."""
33+ """An empty extensions list leaves the header untouched / absent ."""
4534 parameters = ServiceParametersFactory .create (
4635 [
4736 with_a2a_extensions (['ext-a' ]),
@@ -50,29 +39,15 @@ def test_with_a2a_extensions_empty_is_noop():
5039 )
5140
5241 assert parameters [HTTP_EXTENSION_HEADER ] == 'ext-a'
53-
54-
55- def test_with_a2a_extensions_empty_does_not_create_header ():
56- """Calling with an empty list on empty parameters adds nothing."""
57- parameters = ServiceParametersFactory .create ([with_a2a_extensions ([])])
58-
59- assert HTTP_EXTENSION_HEADER not in parameters
60-
61-
62- def test_with_a2a_extensions_output_is_sorted ():
63- """Output ordering is deterministic (sorted) regardless of input order."""
64- parameters = ServiceParametersFactory .create (
65- [with_a2a_extensions (['c' , 'a' , 'b' ])]
42+ assert HTTP_EXTENSION_HEADER not in ServiceParametersFactory .create (
43+ [with_a2a_extensions ([])]
6644 )
6745
68- assert parameters [HTTP_EXTENSION_HEADER ] == 'a,b,c'
6946
70-
71- def test_with_a2a_extensions_merges_existing_header_value ():
72- """Existing comma-separated header values are parsed and merged."""
73- base = ServiceParametersFactory .create_from (
74- {HTTP_EXTENSION_HEADER : 'ext-a, ext-b' },
75- [with_a2a_extensions (['ext-c' ])],
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 ' ])]
7651 )
7752
78- assert base [HTTP_EXTENSION_HEADER ] == 'ext-a,ext-b,ext-c'
53+ assert parameters [HTTP_EXTENSION_HEADER ] == 'ext-a,ext-b,ext-c'
0 commit comments