diff --git a/status_model.py b/status_model.py index 089c9ae..6c1fa10 100644 --- a/status_model.py +++ b/status_model.py @@ -38,7 +38,7 @@ def is_status_stale( current_time = now or datetime.now() age_seconds = (current_time - updated_at).total_seconds() - return age_seconds > stale_after_seconds + return age_seconds < 0 or age_seconds > stale_after_seconds def default_status() -> Dict[str, Any]: diff --git a/tests/test_status_model.py b/tests/test_status_model.py index c08ea47..a72feb0 100644 --- a/tests/test_status_model.py +++ b/tests/test_status_model.py @@ -55,6 +55,14 @@ def test_is_status_stale_uses_supplied_threshold(self): self.assertTrue(status_model.is_status_stale(status, 60)) self.assertFalse(status_model.is_status_stale(status, 300)) + def test_is_status_stale_treats_future_time_as_untrusted(self): + now = datetime(2026, 5, 29, 10, 0, 0) + future_status = { + "updated_at": (now + timedelta(minutes=5)).strftime("%Y-%m-%d %H:%M:%S") + } + + self.assertTrue(status_model.is_status_stale(future_status, 900, now=now)) + if __name__ == "__main__": unittest.main()