fix: atualiza tests/test_main.py para login por sessao
tests/test_main.py nao fazia parte do mapa de arquivos do plano de permissoes/sessao e ficou quebrado (HTTP Basic Auth) apos a troca pra login por sessao nas tasks anteriores. Atualiza os 6 testes pra usar cookie de sessao (app.session.criar_token) em vez de header Basic, e ajusta a expectativa de GET / sem login (agora redireciona 303 pra /login em vez de pedir credenciais 401). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
81f730df9e
commit
64990b6db2
+12
-8
@@ -1,16 +1,19 @@
|
|||||||
import base64
|
|
||||||
|
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
|
from app import session
|
||||||
from app.main import app
|
from app.main import app
|
||||||
|
|
||||||
client = TestClient(app)
|
client = TestClient(app)
|
||||||
_AUTH_HEADERS = {"Authorization": f"Basic {base64.b64encode(b'admin:teste123').decode()}"}
|
|
||||||
|
|
||||||
|
|
||||||
def test_raiz_sem_login_pede_credenciais():
|
def _cookie_sessao_admin() -> dict:
|
||||||
|
return {session.SESSION_COOKIE_NAME: session.criar_token("admin", "admin", "ADMIN")}
|
||||||
|
|
||||||
|
|
||||||
|
def test_raiz_sem_login_redireciona_para_login():
|
||||||
resposta = client.get("/", follow_redirects=False)
|
resposta = client.get("/", follow_redirects=False)
|
||||||
assert resposta.status_code == 401
|
assert resposta.status_code == 303
|
||||||
|
assert resposta.headers["location"] == "/login?next=/"
|
||||||
|
|
||||||
|
|
||||||
def test_docs_desabilitado_retorna_404():
|
def test_docs_desabilitado_retorna_404():
|
||||||
@@ -24,7 +27,7 @@ def test_raiz_redireciona_para_clientes_com_login(monkeypatch):
|
|||||||
|
|
||||||
monkeypatch.setattr(router_clientes.db_clientes, "listar_clientes", lambda busca=None, limite=100, offset=0, ordenar_por="razao", direcao="asc": [])
|
monkeypatch.setattr(router_clientes.db_clientes, "listar_clientes", lambda busca=None, limite=100, offset=0, ordenar_por="razao", direcao="asc": [])
|
||||||
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None, ordenar_por="razao": 0)
|
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None, ordenar_por="razao": 0)
|
||||||
resposta = client.get("/", headers=_AUTH_HEADERS, follow_redirects=False)
|
resposta = client.get("/", cookies=_cookie_sessao_admin(), follow_redirects=False)
|
||||||
assert resposta.status_code == 307
|
assert resposta.status_code == 307
|
||||||
assert resposta.headers["location"] == "/clientes"
|
assert resposta.headers["location"] == "/clientes"
|
||||||
|
|
||||||
@@ -39,7 +42,7 @@ def test_csrf_middleware_define_cookie_em_qualquer_resposta():
|
|||||||
def test_csrf_bloqueia_post_com_token_que_nao_bate_com_cookie():
|
def test_csrf_bloqueia_post_com_token_que_nao_bate_com_cookie():
|
||||||
client.cookies.clear()
|
client.cookies.clear()
|
||||||
resposta = client.post(
|
resposta = client.post(
|
||||||
"/clientes/1/excluir", headers=_AUTH_HEADERS, data={"csrf_token": "token-forjado-sem-cookie"}
|
"/clientes/1/excluir", cookies=_cookie_sessao_admin(), data={"csrf_token": "token-forjado-sem-cookie"}
|
||||||
)
|
)
|
||||||
assert resposta.status_code == 403
|
assert resposta.status_code == 403
|
||||||
|
|
||||||
@@ -54,7 +57,8 @@ def test_csrf_libera_post_quando_token_bate_com_cookie(monkeypatch):
|
|||||||
token_cookie = client.cookies.get("csrf_token")
|
token_cookie = client.cookies.get("csrf_token")
|
||||||
assert token_cookie
|
assert token_cookie
|
||||||
|
|
||||||
|
cookies = {**_cookie_sessao_admin(), "csrf_token": token_cookie}
|
||||||
resposta = client.post(
|
resposta = client.post(
|
||||||
"/clientes/1/excluir", headers=_AUTH_HEADERS, data={"csrf_token": token_cookie}, follow_redirects=False
|
"/clientes/1/excluir", cookies=cookies, data={"csrf_token": token_cookie}, follow_redirects=False
|
||||||
)
|
)
|
||||||
assert resposta.status_code == 303
|
assert resposta.status_code == 303
|
||||||
|
|||||||
Reference in New Issue
Block a user