Este documento explica os principais pontos para rodar a aplicação e consumir os recursos disponibilizados por ela
- Docker
- Docker Compose
Após clonar este repositório e entrar no diretório executar o seguinte comando:
$ docker-compose up --build
A aplicação será executada e estará disponível em http://localhost:3000
A API tem um usuário padrão cadastrado para que seja possível criar o primeiro usuário e usar a API. Os dados de acesso são:
Email: root@test.com
Password: root
Recurso para autenticar na API e receber o token de autorização
Endpoint: POST /api/v1/auth
Dados a enviar:
{
"email":"<email-do-usuario>",
"password":"<senha-do-usuario>"
}
Resposta:
{
"token":"..."
}
Todos os próximos recursos necessitam de autorização feita enviando o token de autenticação no header da requisição. Ex.:
{
"Authorization":"Bearer <token>"
}
Endpoint: GET /api/v1/logout
Cadastrar um novo usuário
Endpoint: POST /api/v1/users
Dados a enviar:
{
"name": "Silas",
"email": "silas.ti2010@gmail.com",
"password": "silas",
"role": "OPERATOR" ou "ADMIN"
}
Atualizar um usuário
Endpoint: PUT /api/v1/users/{id}
Dados a enviar:
{
"id": "2f9b2563-2447-4ab0-925a-291f25015f71",
"name": "Silas",
"email": "silas.ti2010@gmail.com",
"password": "silas",
"role": "OPERATOR" ou "ADMIN"
}
Excluir um usuário
Endpoint: DELETE /api/v1/users/{id}
Listar todos os usuários
Endpoint: GET /api/v1/users
Buscar usuário por ID
Endpoint: GET /api/v1/users/{id}
Cadastrar nova entrada de caixa
Endpoint: POST /api/v1/cash-inflows
Dados a enviar:
{
"title": "Manutenção de aplicações",
"description": "Manutenção de aplicações",
"amount": 5000.00,
"datePaid": "2019-04-12"
}
Atualizar um registro de entrada de caixa
Endpoint: PUT /api/v1/cash-inflows/{id}
Dados a enviar:
{
"id": "c995a53e-a44a-4af4-b643-9cb7aaf9364b",
"title": "Manutenção de aplicações",
"description": "Manutenção de aplicações",
"amount": 5000.00,
"datePaid": "2019-04-12"
}
Excluir um registro de entrada de caixa
Endpoint: DELETE /api/v1/cash-inflows/{id}
Listar todos registros de entrada de caixa
Endpoint: GET /api/v1/cash-inflows
Buscar um registro de entrada de caixa por ID
Endpoint: GET /api/v1/cash-inflows/{id}
Cadastrar nova saída de caixa
Endpoint: POST /api/v1/cash-outflows
Dados a enviar:
{
"title": "Conta de internet",
"description": "Conta de internet",
"amount": 300.00,
"datePaid": "2019-04-12"
}
Atualizar um registro de saída de caixa
Endpoint: PUT /api/v1/cash-outflows/{id}
Dados a enviar:
{
"id": "c995a53e-a44a-4af4-b643-9cb7aaf9364b",
"title": "Conta de internet",
"description": "Conta de internet",
"amount": 300.00,
"datePaid": "2019-04-12"
}
Excluir um registro de saída de caixa
Endpoint: DELETE /api/v1/cash-outflows/{id}
Listar todos registros de saída de caixa
Endpoint: GET /api/v1/cash-outflows
Buscar um registro de saída de caixa por ID
Endpoint: GET /api/v1/cash-outflows/{id}
Endpoint: GET /api/v1/report
Estrutura do relatório:
{
"cashInflowAmount": 50000.00, // Total de entrada
"cashOutflowAmount": 20000.00 // Total de saída
}
Endpoint: GET /api/v1/report?from=<data-inicial>&to=<data-final>
Estrutura do relatório:
{
"cashInflowAmount": 50000.00, // Total de entrada
"cashOutflowAmount": 20000.00 // Total de saída
}
Para rodar os testes unitários basta executar o comando:
$ npm run unit-test
Definir as váriáveis de ambiente
NODE_ENV=test //Define o ambiente para executar a API em modo teste
SECRET=mysecret //Define a chave para criptografia da senha e token
DATABASE_TEST=test_cashflow //Nome do banco de dados para teste, deve estar criado antes de executar os testes
DATABASE_USERNAME=postgres //Usuário do postgres
DATABASE_PASSWORD=postgres //Senha do postgres
DATABASE_HOST=localhost //Endereço do postgres
Para rodar os testes de integração basta executar o comando:
$ NODE_ENV=test SECRET=mysecret DATABASE_TEST=test_cashflow DATABASE_USERNAME=postgres DATABASE_PASSWORD=postgres DATABASE_HOST=localhost npm run integration-test