diff --git a/backend/linkpulse/models.py b/backend/linkpulse/models.py index 17aba77..b461b8d 100644 --- a/backend/linkpulse/models.py +++ b/backend/linkpulse/models.py @@ -60,6 +60,10 @@ class Session(BaseModel): created_at = DateTimeField(default=utc_now) last_used = DateTimeField(null=True) + @property + def expiry_utc(self) -> datetime.datetime: + return self.expiry.replace(tzinfo=datetime.timezone.utc) # type: ignore + def is_expired( self, revoke: bool = True, now: Optional[datetime.datetime] = None ) -> bool: @@ -69,7 +73,7 @@ class Session(BaseModel): if now is None: now = utc_now() - if self.expiry < now: + if self.expiry_utc < now: if revoke: self.delete_instance() return True diff --git a/backend/linkpulse/tests/test_utilities.py b/backend/linkpulse/tests/test_utilities.py new file mode 100644 index 0000000..e6d00c0 --- /dev/null +++ b/backend/linkpulse/tests/test_utilities.py @@ -0,0 +1,6 @@ +from linkpulse.utilities import utc_now + + +def test_utcnow_tz_aware(): + dt = utc_now() + dt.tzinfo is not None and dt.tzinfo.utcoffset(dt) is not None