Skip to content
Snippets Groups Projects
Verified Commit fb293ad0 authored by David Hoese's avatar David Hoese
Browse files

Add error message specific to begin/end in the future

parent 20453e08
No related branches found
No related tags found
No related merge requests found
......@@ -36,11 +36,16 @@ ROUNDING = {
def handle_date(date: str) -> datetime:
datetime_fmt = "%Y-%m-%d" if len(date) == LENGTH_DATE_STR else "%Y-%m-%dT%H:%M:%S"
try:
return datetime.strptime(date, datetime_fmt)
dt = datetime.strptime(date, datetime_fmt)
except ValueError as e:
msg = f"Malformed date string '{date}'"
LOG.warning(msg)
raise ValueError(msg) from e
if dt > (datetime.utcnow() + timedelta(minutes=1)):
msg = f"Date/time is in the future: {date}"
LOG.warning(msg)
raise ValueError(msg)
return dt
def handle_time_string(date_string):
......@@ -392,7 +397,8 @@ def _convert_begin_and_end(begin, end) -> tuple[datetime | timedelta, datetime |
begin = handle_time_string(begin)
end = handle_time_string(end)
except (TypeError, ValueError) as e:
raise ValueError("malformed_timestamp") from e
msg = f"malformed_timestamp: {str(e)}"
raise ValueError(msg) from e
return begin, end
......
......@@ -198,13 +198,23 @@ def test_bad_format(client):
def test_bad_begin_json(client):
res = client.get("/api/data.json?symbols=air_temp&begin=blah")
res = client.get("/api/data.json?symbols=aoss.tower.air_temp&begin=blah")
res = json.loads(res.data.decode())
assert res["code"] == 400
assert res["status"] == "error"
assert "timestamp" in res["message"]
def test_future_begin_json(client):
now = datetime.utcnow()
future_begin = now + timedelta(days=1)
res = client.get(f"/api/data.json?symbols=aoss.tower.air_temp&begin={future_begin:%Y-%m-%dT%H:%M:%S}")
res = json.loads(res.data.decode())
assert res["code"] == 400
assert res["status"] == "error"
assert "is in the future" in res["message"]
def test_bad_order(client):
res = client.get("/api/data.json?order=blah&symbols=air_temp")
res = json.loads(res.data.decode())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment