Skip to content

Commit bae69d4

Browse files
committed
fix(search): preserve search params in ids-based eodag requests
Keep request parameters in ids mode so per-id searches still apply query/filter/sort/provider constraints. Add a regression test for ids plus query.federation:backends forwarding.
1 parent 1db1c5c commit bae69d4

2 files changed

Lines changed: 33 additions & 4 deletions

File tree

‎stac_fastapi/eodag/core.py‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -609,12 +609,13 @@ def prepare_search_base_args(search_request: BaseSearchPostRequest) -> dict[str,
609609
:param model: the model used to validate stac metadata
610610
:returns: a dictionary containing arguments for the eodag search
611611
"""
612-
if search_request.ids is None:
613-
base_args = search_request.model_dump()
612+
base_args = search_request.model_dump()
613+
614+
if search_request.ids:
615+
base_args.pop("limit", None)
616+
else:
614617
base_args["raise_errors"] = False
615618
base_args["count"] = get_settings().count
616-
else:
617-
base_args = {}
618619

619620
# parse "sortby" search request attribute if it exists to make it work for an eodag search
620621
sort_by = {}

‎tests/test_search.py‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,34 @@ async def test_ids_post_search(request_valid, defaults):
544544
)
545545

546546

547+
async def test_ids_post_search_keeps_provider_from_query(request_valid, defaults):
548+
"""POST ids search must keep provider parsed from query federation:backends."""
549+
await request_valid(
550+
"search",
551+
method="POST",
552+
post_data={
553+
"collections": [defaults.collection],
554+
"ids": ["foo", "bar"],
555+
"query": {"federation:backends": {"eq": "cop_dataspace"}},
556+
},
557+
search_call_count=2,
558+
expected_search_kwargs=[
559+
{
560+
"id": "foo",
561+
"collection": defaults.collection,
562+
"provider": "cop_dataspace",
563+
"validate": True,
564+
},
565+
{
566+
"id": "bar",
567+
"collection": defaults.collection,
568+
"provider": "cop_dataspace",
569+
"validate": True,
570+
},
571+
],
572+
)
573+
574+
547575
# TODO: add test_provider_prefix_post_search when feature is ready
548576

549577

0 commit comments

Comments
 (0)