Skip to content

Commit d768319

Browse files
Merge pull request #215 from StijnCaerts/#213-urlencode-next-href
URL encode next href
2 parents 1f2700d + 6fdf201 commit d768319

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
1616

1717
### Fixed
1818

19+
- URL encode next href: [#215](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/issues/215)
1920
- Do not overwrite links in Item and Collection objects before persisting in database [#210](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/issues/210)
2021

21-
2222
## [v2.1.0]
2323

2424
### Added

stac_fastapi/core/stac_fastapi/core/models/links.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""link helpers."""
22

33
from typing import Any, Dict, List, Optional
4-
from urllib.parse import ParseResult, parse_qs, unquote, urlencode, urljoin, urlparse
4+
from urllib.parse import ParseResult, parse_qs, urlencode, urljoin, urlparse
55

66
import attr
77
from stac_pydantic.links import Relations
@@ -20,7 +20,7 @@ def merge_params(url: str, newparams: Dict) -> str:
2020
u = urlparse(url)
2121
params = parse_qs(u.query)
2222
params.update(newparams)
23-
param_string = unquote(urlencode(params, True))
23+
param_string = urlencode(params, True)
2424

2525
href = ParseResult(
2626
scheme=u.scheme,

stac_fastapi/tests/resources/test_item.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import os
33
import uuid
44
from copy import deepcopy
5-
from datetime import datetime, timedelta
5+
from datetime import datetime, timedelta, timezone
66
from random import randint
77
from urllib.parse import parse_qs, urlparse, urlsplit
88

@@ -475,6 +475,31 @@ async def test_item_search_temporal_window_get(app_client, ctx):
475475
assert resp_json["features"][0]["id"] == test_item["id"]
476476

477477

478+
@pytest.mark.asyncio
479+
async def test_item_search_temporal_window_timezone_get(app_client, ctx):
480+
"""Test GET search with spatio-temporal query ending with Zulu and pagination(core)"""
481+
tzinfo = timezone(timedelta(hours=1))
482+
test_item = ctx.item
483+
item_date = rfc3339_str_to_datetime(test_item["properties"]["datetime"])
484+
item_date_before = item_date - timedelta(seconds=1)
485+
item_date_before = item_date_before.replace(tzinfo=tzinfo)
486+
item_date_after = item_date + timedelta(seconds=1)
487+
item_date_after = item_date_after.replace(tzinfo=tzinfo)
488+
489+
params = {
490+
"collections": test_item["collection"],
491+
"bbox": ",".join([str(coord) for coord in test_item["bbox"]]),
492+
"datetime": f"{datetime_to_str(item_date_before)}/{datetime_to_str(item_date_after)}",
493+
}
494+
resp = await app_client.get("/search", params=params)
495+
resp_json = resp.json()
496+
next_link = next(link for link in resp_json["links"] if link["rel"] == "next")[
497+
"href"
498+
]
499+
resp = await app_client.get(next_link)
500+
assert resp.status_code == 200
501+
502+
478503
@pytest.mark.asyncio
479504
async def test_item_search_post_without_collection(app_client, ctx):
480505
"""Test POST search without specifying a collection"""

0 commit comments

Comments
 (0)