feat: monta app final (main.py) e Docker end-to-end

This commit is contained in:
Gustavo
2026-08-13 10:33:29 -03:00
parent 9ebe6b1c68
commit 145f784577
2 changed files with 42 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
"""
Painel de Clientes — monta os routers de CLIENTE, CLIENTE_CONTATO e o
gerador de chave manual. Ver docs/superpowers/specs/2026-08-13-painel-clientes-web-design.md.
"""
from fastapi import Depends, FastAPI
from fastapi.responses import RedirectResponse
from fastapi.staticfiles import StaticFiles
from .auth import exigir_login
from .routers import chave_manual, clientes, contatos
app = FastAPI(title="Painel de Clientes")
app.mount("/static", StaticFiles(directory="app/static"), name="static")
app.include_router(clientes.router)
app.include_router(contatos.router)
app.include_router(chave_manual.router)
@app.get("/")
def raiz(usuario: str = Depends(exigir_login)):
return RedirectResponse(url="/clientes")
+21
View File
@@ -0,0 +1,21 @@
from fastapi.testclient import TestClient
from app.main import app
client = TestClient(app)
def test_raiz_sem_login_pede_credenciais():
resposta = client.get("/", follow_redirects=False)
assert resposta.status_code == 401
def test_raiz_redireciona_para_clientes_com_login(monkeypatch):
from app.routers import clientes as router_clientes
monkeypatch.setattr(router_clientes.db_clientes, "listar_clientes", lambda busca=None, limite=100: [])
import base64
token = base64.b64encode(b"admin:teste123").decode()
resposta = client.get("/", headers={"Authorization": f"Basic {token}"}, follow_redirects=False)
assert resposta.status_code == 307
assert resposta.headers["location"] == "/clientes"