brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
api-test-suite-builderUse quando o usuário pede para gerar testes de API, criar suites de testes de integração, testar endpoints REST ou construir testes de contrato.
Independent GitHub snapshot · Automated classification · Original documentation governs
name: "api-test-suite-builder" description: "Use quando o usuário pede para gerar testes de API, criar suites de testes de integração, testar endpoints REST ou construir testes de contrato." agents:
Nível: POWERFUL Categoria: Engineering Domínio: Testing / Qualidade de API
Escaneia definições de rotas de API em diferentes frameworks (Next.js App Router, Express, FastAPI, Django REST) e auto-gera suites de testes abrangentes cobrindo autenticação, validação de entrada, códigos de erro, paginação, uploads de arquivo e limitação de taxa. Produz arquivos de teste prontos para execução com Vitest+Supertest (Node) ou Pytest+httpx (Python).
# Encontrar todos os handlers de rota
find ./app/api -name "route.ts" -o -name "route.js" | sort
# Extrair métodos HTTP de cada arquivo de rota
grep -rn "export async function\|export function" app/api/**/route.ts | \
grep -oE "(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS)" | sort -u
# Mapa completo de rotas
find ./app/api -name "route.ts" | while read f; do
route=$(echo $f | sed 's|./app||' | sed 's|/route.ts||')
methods=$(grep -oE "export (async )?function (GET|POST|PUT|PATCH|DELETE)" "$f" | \
grep -oE "(GET|POST|PUT|PATCH|DELETE)")
echo "$methods $route"
done
# Encontrar todos os arquivos de router
find ./src -name "*.ts" -o -name "*.js" | xargs grep -l "router\.\(get\|post\|put\|delete\|patch\)" 2>/dev/null
# Extrair rotas com números de linha
grep -rn "router\.\(get\|post\|put\|delete\|patch\)\|app\.\(get\|post\|put\|delete\|patch\)" \
src/ --include="*.ts" | grep -oE "(get|post|put|delete|patch)\(['\"][^'\"]*['\"]"
# Gerar mapa de rotas
grep -rn "router\.\|app\." src/ --include="*.ts" | \
grep -oE "\.(get|post|put|delete|patch)\(['\"][^'\"]+['\"]" | \
sed "s/\.\(.*\)('\(.*\)'/\U\1 \2/"
# Encontrar todos os decoradores de rota
grep -rn "@app\.\|@router\." . --include="*.py" | \
grep -E "@(app|router)\.(get|post|put|delete|patch)"
# Extrair com path e nome da função
grep -rn "@\(app\|router\)\.\(get\|post\|put\|delete\|patch\)" . --include="*.py" | \
grep -oE "@(app|router)\.(get|post|put|delete|patch)\(['\"][^'\"]*['\"]"
# Extração de urlpatterns
grep -rn "path\|re_path\|url(" . --include="*.py" | grep "urlpatterns" -A 50 | \
grep -E "path\(['\"]" | grep -oE "['\"][^'\"]+['\"]" | head -40
# Registro de router ViewSet
grep -rn "router\.register\|DefaultRouter\|SimpleRouter" . --include="*.py"
Para cada endpoint autenticado, gerar:
| Caso de Teste | Status Esperado |
|---|---|
| Sem header Authorization | 401 |
| Formato de token inválido | 401 |
| Token válido, papel de usuário errado | 403 |
| Token JWT expirado | 401 |
| Token válido, papel correto | 2xx |
| Token de usuário excluído | 401 |
Para cada endpoint POST/PUT/PATCH com corpo de requisição:
| Caso de Teste | Status Esperado |
|---|---|
Corpo vazio {} | 400 ou 422 |
| Campos obrigatórios ausentes (um por vez) | 400 ou 422 |
| Tipo errado (string onde int é esperado) | 400 ou 422 |
| Limite: valor em min-1 | 400 ou 422 |
| Limite: valor em min | 2xx |
| Limite: valor em max | 2xx |
| Limite: valor em max+1 | 400 ou 422 |
| Injeção SQL em campo string | 400 ou 200 (sanitizado) |
| Payload XSS em campo string | 400 ou 200 (sanitizado) |
| Valores null para campos obrigatórios | 400 ou 422 |
→ Ver references/example-test-files.md para detalhes
Quando dado uma base de código, siga este processo:
"retorna 401 quando o token está expirado" não "teste de auth 3"beforeAll para configuração compartilhada, afterAll para limpeza — não beforeEach para operações caras