diff --git a/tests/test_main.py b/tests/test_main.py index 09fa8fc..1e8f53a 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,16 +1,19 @@ -import base64 - from fastapi.testclient import TestClient +from app import session from app.main import 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) - assert resposta.status_code == 401 + assert resposta.status_code == 303 + assert resposta.headers["location"] == "/login?next=/" 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, "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.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(): client.cookies.clear() 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 @@ -54,7 +57,8 @@ def test_csrf_libera_post_quando_token_bate_com_cookie(monkeypatch): token_cookie = client.cookies.get("csrf_token") assert token_cookie + cookies = {**_cookie_sessao_admin(), "csrf_token": token_cookie} 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