Skip to content

Commit 5c18cc5

Browse files
author
Vianney Veremme
committed
Refactor datetime usage in token generation and logging setup; improve consistency and readability.
1 parent cd26564 commit 5c18cc5

File tree

6 files changed

+23
-19
lines changed

6 files changed

+23
-19
lines changed

config/logging.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ def setup_logging():
1212
logger.setLevel(logging.DEBUG)
1313

1414
# Create a file handler that rotates logs daily
15-
timestamp = datetime.datetime.now().strftime("%Y-%m-%d")
15+
current_time = datetime.datetime.now().strftime("%Y-%m-%d")
1616

1717
# Create a directory for logs if it doesn't exist
1818
if not os.path.exists(LOGS_DIRECTORY):
1919
os.makedirs(LOGS_DIRECTORY)
20-
log_filename = f"{LOGS_DIRECTORY}/{timestamp}.log"
20+
log_filename = f"{LOGS_DIRECTORY}/{current_time}.log"
2121

2222
# Set up timed rotating file handler
2323
file_handler = TimedRotatingFileHandler(

jwtoken/tokens.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@ def generate_refresh_token(person_id: int) -> str:
3030
kid = get_active_kid()
3131
private_key = load_private_key(kid)
3232

33+
current_time = datetime.now(timezone.utc)
3334
payload = {
3435
"person_id": person_id,
35-
"exp": datetime.now(timezone.utc) + JWT_REFRESH_TOKEN_EXPIRY, # Expiration
36-
"iat": datetime.now(timezone.utc), # Issued at
36+
"exp": current_time + JWT_REFRESH_TOKEN_EXPIRY, # Expiration
37+
"iat": current_time, # Issued at
3738
"token_type": "refresh",
3839
}
3940
headers = {"kid": kid}

tests/test_jwtoken/test_invalid_token.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,22 @@ def public_key(active_kid):
3434

3535
@pytest.fixture
3636
def sample_payload(sample_person_id):
37+
current_time = datetime.now(timezone.utc)
3738
return {
3839
"person_id": sample_person_id,
39-
"exp": datetime.now(timezone.utc) + timedelta(minutes=10),
40-
"iat": datetime.now(timezone.utc),
40+
"exp": current_time + timedelta(minutes=10),
41+
"iat": current_time,
4142
"token_type": "access",
4243
}
4344

4445

4546
def test_hs256_forged_token_rejected(sample_person_id, public_key, active_kid):
4647
headers = {"kid": active_kid, "alg": "HS256"}
48+
current_time = datetime.now(timezone.utc)
4749
payload = {
4850
"person_id": sample_person_id,
49-
"exp": datetime.now(timezone.utc) + timedelta(minutes=10),
50-
"iat": datetime.now(timezone.utc),
51+
"exp": current_time + timedelta(minutes=10),
52+
"iat": current_time,
5153
"token_type": "access",
5254
}
5355

tests/test_jwtoken/test_verify_token.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,13 @@ def test_verify_token_invalid_type(sample_person_id):
3838
private_key = load_private_key(kid)
3939

4040
# Create a token with token_type = "invalid"
41+
current_time = datetime.now(timezone.utc)
4142
token = jwt.encode(
4243
{
4344
"person_id": sample_person_id,
4445
"token_type": "invalid",
45-
"exp": datetime.now(timezone.utc) + timedelta(minutes=5),
46-
"iat": datetime.now(timezone.utc),
46+
"exp": current_time + timedelta(minutes=5),
47+
"iat": current_time,
4748
},
4849
private_key,
4950
algorithm="RS256",
@@ -60,12 +61,13 @@ def test_verify_expired_token(sample_person_id):
6061
kid = get_active_kid()
6162
private_key = load_private_key(kid)
6263

64+
current_time = datetime.now(timezone.utc)
6365
expired_token = jwt.encode(
6466
{
6567
"person_id": sample_person_id,
6668
"token_type": "access",
67-
"exp": datetime.now(timezone.utc) - timedelta(seconds=1),
68-
"iat": datetime.now(timezone.utc) - timedelta(hours=1),
69+
"exp": current_time - timedelta(seconds=1),
70+
"iat": current_time - timedelta(hours=1),
6971
},
7072
private_key,
7173
algorithm="RS256",

tests/test_routes/test_authentication/test_refresh.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import datetime
1+
from datetime import datetime, timedelta, timezone
22

33
import jwt
44
import pytest
@@ -20,12 +20,11 @@ def sample_expired_token(sample_person_id) -> str:
2020
kid = get_active_kid()
2121
private_key = load_private_key(kid)
2222

23+
current_time = datetime.now(timezone.utc)
2324
payload = {
2425
"person_id": sample_person_id,
25-
"exp": datetime.datetime.now(datetime.timezone.utc)
26-
- datetime.timedelta(seconds=1), # Already expired
27-
"iat": datetime.datetime.now(datetime.timezone.utc)
28-
- datetime.timedelta(hours=1),
26+
"exp": current_time - timedelta(seconds=1), # Already expired
27+
"iat": current_time - timedelta(hours=1),
2928
"token_type": "refresh",
3029
}
3130

utility/jwtoken/keys_cleanup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414

1515
def cleanup_old_keys():
16-
now = datetime.now(timezone.utc)
16+
current_time = datetime.now(timezone.utc)
1717
active_kid = get_active_kid()
1818

1919
for kid_dir in KEYS_DIR.iterdir():
@@ -28,7 +28,7 @@ def cleanup_old_keys():
2828
with open(created_at_file, "r") as f:
2929
created_at = datetime.fromisoformat(f.read().strip())
3030

31-
if (now - created_at) > timedelta(days=EXPIRY_DAYS):
31+
if (current_time - created_at) > timedelta(days=EXPIRY_DAYS):
3232
print(f"Deleting expired key: {kid_dir.name}")
3333
for item in kid_dir.iterdir():
3434
item.unlink()

0 commit comments

Comments
 (0)