feat: token de sessao assinado (app/session.py)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
361c2ca770
commit
95b1da7c10
@@ -0,0 +1,47 @@
|
||||
import time
|
||||
|
||||
from app import session
|
||||
|
||||
|
||||
def test_criar_e_ler_token_valido():
|
||||
token = session.criar_token("fulano", "Fulano da Silva", "ADMIN")
|
||||
dados = session.ler_token(token)
|
||||
assert dados == {"login": "fulano", "nome": "Fulano da Silva", "perfil": "ADMIN"}
|
||||
|
||||
|
||||
def test_ler_token_none_retorna_none():
|
||||
assert session.ler_token(None) is None
|
||||
|
||||
|
||||
def test_ler_token_vazio_retorna_none():
|
||||
assert session.ler_token("") is None
|
||||
|
||||
|
||||
def test_ler_token_sem_ponto_retorna_none():
|
||||
assert session.ler_token("lixo-sem-formato") is None
|
||||
|
||||
|
||||
def test_ler_token_assinatura_adulterada_retorna_none():
|
||||
token = session.criar_token("fulano", "Fulano", "PADRAO")
|
||||
payload, assinatura = token.rsplit(".", 1)
|
||||
token_adulterado = payload + "." + ("0" if assinatura[0] != "0" else "1") + assinatura[1:]
|
||||
assert session.ler_token(token_adulterado) is None
|
||||
|
||||
|
||||
def test_ler_token_payload_adulterado_retorna_none():
|
||||
token = session.criar_token("fulano", "Fulano", "PADRAO")
|
||||
payload, assinatura = token.rsplit(".", 1)
|
||||
token_adulterado = payload + "X." + assinatura
|
||||
assert session.ler_token(token_adulterado) is None
|
||||
|
||||
|
||||
def test_ler_token_expirado_retorna_none():
|
||||
agora = time.time()
|
||||
token = session.criar_token("fulano", "Fulano", "PADRAO", agora=agora - session.VALIDADE_SEGUNDOS - 1)
|
||||
assert session.ler_token(token, agora=agora) is None
|
||||
|
||||
|
||||
def test_ler_token_no_limite_da_validade_ainda_e_valido():
|
||||
agora = time.time()
|
||||
token = session.criar_token("fulano", "Fulano", "PADRAO", agora=agora - session.VALIDADE_SEGUNDOS + 5)
|
||||
assert session.ler_token(token, agora=agora) is not None
|
||||
Reference in New Issue
Block a user