Add 'gerenciador/' from commit '34cc9c75a57dedbf61a6e6a1ba1f35f76e72434b'
git-subtree-dir: gerenciador git-subtree-mainline:f4f546c928git-subtree-split:34cc9c75a5
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from app import rate_limit
|
||||
|
||||
|
||||
def _origem_unica() -> str:
|
||||
"""Cada teste usa uma chave própria — evita que o dict em memória do
|
||||
módulo (compartilhado entre testes) vaze estado de um teste pro outro."""
|
||||
import uuid
|
||||
|
||||
return f"teste-{uuid.uuid4()}"
|
||||
|
||||
|
||||
def test_nao_bloqueado_sem_nenhuma_falha():
|
||||
assert rate_limit.bloqueado(_origem_unica()) is False
|
||||
|
||||
|
||||
def test_nao_bloqueado_abaixo_do_limite():
|
||||
origem = _origem_unica()
|
||||
agora = 1_000_000.0
|
||||
for _ in range(rate_limit.MAX_TENTATIVAS - 1):
|
||||
rate_limit.registrar_falha(origem, agora=agora)
|
||||
assert rate_limit.bloqueado(origem, agora=agora) is False
|
||||
|
||||
|
||||
def test_bloqueado_ao_atingir_o_limite():
|
||||
origem = _origem_unica()
|
||||
agora = 1_000_000.0
|
||||
for _ in range(rate_limit.MAX_TENTATIVAS):
|
||||
rate_limit.registrar_falha(origem, agora=agora)
|
||||
assert rate_limit.bloqueado(origem, agora=agora) is True
|
||||
|
||||
|
||||
def test_falhas_fora_da_janela_nao_contam():
|
||||
origem = _origem_unica()
|
||||
agora = 1_000_000.0
|
||||
fora_da_janela = agora - rate_limit.JANELA_SEGUNDOS - 1
|
||||
for _ in range(rate_limit.MAX_TENTATIVAS):
|
||||
rate_limit.registrar_falha(origem, agora=fora_da_janela)
|
||||
assert rate_limit.bloqueado(origem, agora=agora) is False
|
||||
|
||||
|
||||
def test_limpar_reseta_o_historico():
|
||||
origem = _origem_unica()
|
||||
agora = 1_000_000.0
|
||||
for _ in range(rate_limit.MAX_TENTATIVAS):
|
||||
rate_limit.registrar_falha(origem, agora=agora)
|
||||
assert rate_limit.bloqueado(origem, agora=agora) is True
|
||||
|
||||
rate_limit.limpar(origem)
|
||||
assert rate_limit.bloqueado(origem, agora=agora) is False
|
||||
|
||||
|
||||
def test_origens_diferentes_nao_se_afetam():
|
||||
origem_a, origem_b = _origem_unica(), _origem_unica()
|
||||
agora = 1_000_000.0
|
||||
for _ in range(rate_limit.MAX_TENTATIVAS):
|
||||
rate_limit.registrar_falha(origem_a, agora=agora)
|
||||
assert rate_limit.bloqueado(origem_a, agora=agora) is True
|
||||
assert rate_limit.bloqueado(origem_b, agora=agora) is False
|
||||
Reference in New Issue
Block a user