41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
from app.core.constants import TokenType
|
|
from app.core.security import (
|
|
create_access_token,
|
|
create_refresh_token,
|
|
decode_token,
|
|
hash_password,
|
|
verify_password,
|
|
)
|
|
|
|
|
|
def test_password_hash_and_verify() -> None:
|
|
password = "securepassword123"
|
|
hashed = hash_password(password)
|
|
assert hashed != password
|
|
assert verify_password(password, hashed)
|
|
assert not verify_password("wrongpassword", hashed)
|
|
|
|
|
|
def test_create_access_token() -> None:
|
|
token = create_access_token(subject=1, role="admin")
|
|
payload = decode_token(token)
|
|
assert payload is not None
|
|
assert payload["sub"] == "1"
|
|
assert payload["role"] == "admin"
|
|
assert payload["type"] == TokenType.ACCESS
|
|
|
|
|
|
def test_create_refresh_token() -> None:
|
|
token = create_refresh_token(subject=1)
|
|
payload = decode_token(token)
|
|
assert payload is not None
|
|
assert payload["sub"] == "1"
|
|
assert payload["type"] == TokenType.REFRESH
|
|
|
|
|
|
def test_decode_invalid_token() -> None:
|
|
result = decode_token("invalid.token.string")
|
|
assert result is None
|