Skip to content

Commit 39dd77b

Browse files
committed
test item filter
1 parent 71e5ae1 commit 39dd77b

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

tests/test_filters_jinja2.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,37 @@ def test_collections_filter_private_and_public(
7070
assert mock_upstream.call_count == 1
7171
[r] = mock_upstream.call_args[0]
7272
assert parse_qs(r.url.query.decode()) == {"filter": [expected_filter]}
73+
74+
75+
@pytest.mark.parametrize(
76+
"authenticated, expected_filter",
77+
[
78+
(True, "true"),
79+
(False, '("properties.private" = false)'),
80+
],
81+
)
82+
def test_items_filter_private_and_public(
83+
mock_upstream, source_api_server, token_builder, authenticated, expected_filter
84+
):
85+
"""Test that filter can be used for private/public collections."""
86+
app = app_factory(
87+
upstream_url=source_api_server,
88+
items_filter={
89+
"cls": "stac_auth_proxy.filters.Template",
90+
"args": ["{{ '(properties.private = false)' if token is none else true }}"],
91+
},
92+
default_public=True,
93+
)
94+
95+
client = TestClient(
96+
app,
97+
headers=(
98+
{"Authorization": f"Bearer {token_builder({})}"} if authenticated else {}
99+
),
100+
)
101+
response = client.get("/collections/foo/items")
102+
103+
assert response.status_code == 200
104+
assert mock_upstream.call_count == 1
105+
[r] = mock_upstream.call_args[0]
106+
assert parse_qs(r.url.query.decode()) == {"filter": [expected_filter]}

0 commit comments

Comments
 (0)