Skip to content

Commit 1e49346

Browse files
authored
Fixed RegisterToken wrong expires_at default (#4)
* Fixed RegisterToken wrong expires_at default * Fixed confusing ci job name
1 parent d39227e commit 1e49346

File tree

8 files changed

+265
-218
lines changed

8 files changed

+265
-218
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
- main
1010

1111
jobs:
12-
build-maven:
12+
build:
1313
runs-on: ubuntu-latest
1414
permissions:
1515
contents: read

examples/flask/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "passwordless-example"
3-
version = "0.1.0"
3+
version = "0.1.1"
44
description = "Passwordless.dev Python SDK usage Example"
55
authors = [
66
"Bitwarden <[email protected]>"

poetry.lock

Lines changed: 210 additions & 213 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "passwordless"
3-
version = "0.1.0"
3+
version = "0.1.1"
44
description = "Passwordless.dev Python SDK"
55
authors = [
66
"Bitwarden <[email protected]>"

src/passwordless/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""The official Bitwarden Passwordless.dev Python library for Python
22
3+."""
33

4-
__version__ = "0.0.1"
4+
__version__ = "0.1.1"
55

66
from .client import PasswordlessClient, PasswordlessClientBuilder
77
from .config import PasswordlessOptions

src/passwordless/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ class RegisterToken:
7474
user_verification: str = "preferred"
7575
aliases: List[str] = field(default_factory=list)
7676
alias_hashing: bool = True
77-
expires_at: datetime = datetime.utcnow() + timedelta(minutes=2)
77+
expires_at: datetime = field(
78+
default_factory=lambda: datetime.utcnow() + timedelta(minutes=2)
79+
)
7880

7981

8082
@dataclass

tests/data_factory.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,19 @@ def build_register_token():
123123
)
124124

125125

126+
def build_register_token_without_expires_at():
127+
return RegisterToken(
128+
user_id=USER_ID,
129+
username="TestUser",
130+
attestation="none",
131+
authenticator_type="any",
132+
discoverable=True,
133+
user_verification="preferred",
134+
aliases=[],
135+
alias_hashing=True,
136+
)
137+
138+
126139
def build_registered_token():
127140
return RegisteredToken(
128141
"register_k8QgFOUhu_arMUbfi_93OZFdc6M39tPdmmNbx5xF"

tests/test_models.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import time
2+
from datetime import datetime, timedelta, timezone
3+
4+
from dateutil import parser
5+
6+
from tests.data_factory import (
7+
build_register_token,
8+
build_register_token_without_expires_at,
9+
)
10+
11+
12+
def test_new_register_token_expires_at_provided() -> None:
13+
register_token = build_register_token()
14+
assert register_token.expires_at == parser.parse(
15+
"2023-09-09T20:07:02.365573Z"
16+
)
17+
18+
19+
def test_new_register_token_expires_at_default() -> None:
20+
time_now = datetime.now(timezone.utc).replace(tzinfo=None)
21+
register_token = build_register_token_without_expires_at()
22+
diff = register_token.expires_at - time_now
23+
assert diff.total_seconds() > 0
24+
assert diff < timedelta(minutes=3)
25+
assert diff >= timedelta(minutes=2)
26+
27+
28+
def test_new_register_token_expires_at_default_sleep() -> None:
29+
register_token_1 = build_register_token_without_expires_at()
30+
time.sleep(0.1)
31+
register_token_2 = build_register_token_without_expires_at()
32+
assert register_token_1.expires_at != register_token_2.expires_at
33+
diff = register_token_2.expires_at - register_token_1.expires_at
34+
assert diff.total_seconds() > 0
35+
assert diff < timedelta(seconds=10)

0 commit comments

Comments
 (0)