Skip to content

Commit 74b5106

Browse files
committed
Add tests for list items view
1 parent 8780152 commit 74b5106

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

tests/test_filters_jinja2.py

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,96 @@ def test_search_get(
371371
), "Query should be combined with the filter expression."
372372

373373

374+
@pytest.mark.parametrize(
375+
"filter_template_expr, auth_filter, anon_filter",
376+
[
377+
# Simple filter, not templated
378+
[
379+
"(properties.private = false)",
380+
"(properties.private = false)",
381+
"(properties.private = false)",
382+
],
383+
# Simple filter, templated
384+
[
385+
"{{ '(properties.private = false)' if token is none else true }}",
386+
"true",
387+
"(properties.private = false)",
388+
],
389+
# Complex filter, not templated
390+
[
391+
"""{
392+
"op": "=",
393+
"args": [{"property": "private"}, true]
394+
}""",
395+
"""{
396+
"op": "=",
397+
"args": [{"property": "private"}, true]
398+
}""",
399+
"""{
400+
"op": "=",
401+
"args": [{"property": "private"}, true]
402+
}""",
403+
],
404+
# Complex filter, templated
405+
[
406+
"""{{ '{"op": "=", "args": [{"property": "private"}, true]}' if token is none else true }}""",
407+
"true",
408+
"""{"op": "=", "args": [{"property": "private"}, true]}""",
409+
],
410+
],
411+
)
412+
@pytest.mark.parametrize("is_authenticated", [True, False])
413+
@pytest.mark.parametrize(
414+
"input_query",
415+
[
416+
# Not using filter
417+
{
418+
"collections": "example-collection",
419+
"bbox": "160.6,-55.95,-170,-25.89",
420+
"datetime": "2021-06-01T00:00:00Z/2021-06-30T23:59:59Z",
421+
},
422+
# Using filter
423+
# {
424+
# "filter-lang": "cql2-json",
425+
# "filter": {
426+
# "op": "and",
427+
# "args": [
428+
# {"op": "=", "args": [{"property": "collection"}, "landsat-8-l1"]},
429+
# {"op": "<=", "args": [{"property": "eo:cloud_cover"}, 20]},
430+
# {"op": "=", "args": [{"property": "platform"}, "landsat-8"]},
431+
# ],
432+
# },
433+
# "limit": 5,
434+
# },
435+
],
436+
)
437+
def test_items_list(
438+
mock_upstream,
439+
source_api_server,
440+
filter_template_expr,
441+
auth_filter,
442+
anon_filter,
443+
is_authenticated,
444+
input_query,
445+
token_builder,
446+
):
447+
"""Append query params with generated CQL2 query."""
448+
response = _build_client(
449+
src_api_server=source_api_server,
450+
template_expr=filter_template_expr,
451+
is_authenticated=is_authenticated,
452+
token_builder=token_builder,
453+
).get("/collections/foo/items")
454+
response.raise_for_status()
455+
456+
body, query = _get_upstream_request(mock_upstream)
457+
458+
assert body == ""
459+
assert query == {
460+
"filter": cql2.Expr(auth_filter if is_authenticated else anon_filter).to_text()
461+
}
462+
463+
374464
def _build_client(
375465
*,
376466
src_api_server: str,

0 commit comments

Comments
 (0)