A Rangos API simula um ambiente de produção com autenticação JWT, múltiplas entidades relacionadas, upload de arquivos, cache Redis e logs estruturados. Esse contexto permitiu exercitar QA em cenários próximos do real — incluindo 11 bugs encontrados durante a análise do código, 3 deles críticos de segurança por ausência de autenticação em módulos inteiros.
O sistema simula uma plataforma de delivery completa, permitindo testar e validar:
- 🔐 Autenticação e autorização (JWT)
- 👤 Gestão de usuários
- 🏪 Cadastro de estabelecimentos e produtos
- 📦 Fluxo completo de pedidos
- 📁 Upload e tratamento de arquivos (Multer)
- 📍 Endereços múltiplos por usuário
⚠️ Validações, erros e cenários de borda
Este projeto foi estruturado para demonstrar práticas reais de QA em uma API REST:
| Prática | Status |
|---|---|
| Testes de integração (Jest + Supertest) | ✅ Auth completo |
| Banco isolado por teste (MongoMemoryServer) | ✅ |
| Factories de dados de teste | ✅ |
| Estratégia de testes documentada | ✅ |
| Casos de teste documentados | ✅ 122 casos · 6 módulos |
| Bug reports documentados | ✅ 11 bugs · 3 críticos |
| Collection Postman | ✅ |
| Testes dos demais módulos | 🔜 Em andamento |
| CI/CD (GitHub Actions) | 🔜 Planejado |
tests/
├── factories/
│ └── UserFactory.ts # Geração de dados de teste
├── helpers/
│ └── app.ts # Configuração compartilhada
├── integration/
│ └── auth/
│ ├── login.test.ts
│ └── signup.test.ts
└── setup.ts
# Rodar todos os testes
npm test
# Modo watch (desenvolvimento)
npm run test:watch
# Com relatório de cobertura
npm run test:covO projeto inclui uma collection completa para validação manual dos endpoints.
postman/rangos_collection.json
A documentação de qualidade está organizada em docs/qa/:
| Documento | Descrição |
|---|---|
| Estratégia de Testes | Abordagem, ferramentas e critérios |
| Casos de Teste — Auth | 22 cenários · 9 bugs encontrados |
| Casos de Teste — Users | 15 cenários |
| Casos de Teste — Addresses | 17 cenários |
| Casos de Teste — Establishments | 20 cenários |
| Casos de Teste — Products | 21 cenários |
| Casos de Teste — Orders | 27 cenários |
| Bug Backlog | Índice de todos os bugs |
| Documento | Descrição |
|---|---|
| Visão Geral | Stack, arquitetura e limitações conhecidas |
| Modelos de Dados | Schemas de todas as entidades |
| Auth | Signup, login e uso do token |
| Users | CRUD de usuários |
| Addresses | Endereços de usuários e estabelecimentos |
| Establishments | CRUD + busca + produtos |
| Products | CRUD + top produtos com cache Redis |
| Orders | Fluxo completo com máquina de estados |
- Testes de integração — Auth
- Estratégia de testes
- Collection do Postman
- Backlog de bugs
- Casos de teste — todos os módulos (122 casos)
- Bug reports documentados (11 bugs)
- Testes de integração dos demais módulos
- Testes automatizados — demais módulos
- Relatórios de cobertura
- Pipeline de CI/CD
- Testes de performance (k6)
- Testes de contrato (OpenAPI)
src/
├── api/ # Ponto de entrada da API
├── config/ # Configurações globais (database, env, logger)
├── controllers/ # Processamento de requisições e respostas
├── errors/ # Classes de erro customizadas
├── middlewares/ # Autenticação, validações e tratamento de erros
├── models/ # Schemas Mongoose
├── routes/ # Definição de rotas e endpoints
└── app.ts # Inicialização da aplicação
- Node.js 18+
- npm 8+
- MongoDB
- Redis
- Git
- Docker
- Docker Compose
Ao utilizar Docker, não é necessário instalar Node.js, MongoDB ou Redis localmente.
git clone https://github.com/Dienay/rangos-api.git
cd rangos-api
npm install
cp .env.example .envNODE_ENV=development
PORT=3000
MONGO_URL=mongodb://rangos-mongo:27017/rangos
REDIS_URL=redis://rangos-redis-server:6379
JWT_SECRET=seu_segredo_aquiO projeto pode ser executado com Docker usando o script run.sh.
# Permissão de execução (apenas na primeira vez)
chmod +x run.sh
# Comandos disponíveis
./run.sh up # Inicia os containers
./run.sh build # Build dos containers
./run.sh rebuild # Build + start
./run.sh rebuild:force # Rebuild forçado
./run.sh down # Remove containers
./run.sh stop # Para containers
./run.sh restart # Reinicia containers
./run.sh logs # Logs em tempo real
./run.sh ps # Lista containersEste projeto está licenciado sob a Licença MIT.