Skip to content

Repository files navigation

Versículo chave: "Consagre ao Senhor tudo o que você faz, e os seus planos serão bem-sucedidos." - Provérbios 16:3

🧪↔️ mocks-api-integrations

Esse é um repositório de Mocks e testes de integração para integrações de API (Stripe, Stone, Oracle NetSuite, Pipefy, Jira, HubSpot, Totvs, Salesforce, SAP, etc). Muito útil para criar integrações e automações de testes, principalmente em cenários do mundo real e críticos de API, no caso de transações entre CRM/ERP.

Muitos exemplos oficiais mostram apenas o "happy path", enquanto projetos reais precisam lidar com autenticação, idempotência, retries, webhooks, rate limits e cenários de erro.

O que tornaria esse repositório realmente valioso não seriam apenas os mocks, mas o conjunto de práticas para testar integrações de ponta a ponta. Ele não é apenas um conjunto de mocks, mas um laboratório de integrações corporativas. Isso é algo que chama atenção de empresas que trabalham com ERP, CRM, fintechs e plataformas SaaS.

Dito isso, eu faria algumas alterações para deixá-lo mais próximo de um projeto usado em empresas.

Primeiro, eu separei o conceito de Mock Server, Fixtures, Testes e Contratos. Hoje tudo está relativamente organizado, mas conforme o projeto crescer (10, 20 ou 30 integrações) ele pode ficar difícil de manter.

fcd2005f8cb56414bdd4eaf571b2d42a

Note

Atualmente, nosso backend está escrito em TypeScript, com mocks e testes de integração para as integrações de APIs externas: Stripe, Stone, Oracle NetSuite, Pipefy, Jira, HubSpot, Totvs, Salesforce, SAP, etc. No entanto, propondo sugestões de melhorias, seria ideal escrever em outras linguagens de programação para dar o devido suporte nessas integrações, como no cenário do mundo real. Cada integração é um servidor Express independente que reproduz o comportamento essencial da API real (rotas, formato de payload, estratégia de autenticação e principais códigos de erro), permitindo testar clients de integração sem depender do ambiente real do fornecedor.

Warning

TDD, BDD, DDD: Essa arquitetura NÃO possui DDD, mas caso queira implementar, esse processo manualmente é mais lento, portanto, automatizar essa parte facilita no desenvolvimento e testes dessas aplicações de integrações de APIs. Seja adaptativo conforme o cenário e a arquitetura utilizada.

Arquiteturas utilizadas nesse projeto:

Arquitetura em camadas (Arquitetura do sistema) Modelo conceitual (Modelagem de dados)
camadas modelo-conceitual

Faz sentido/é útil um repositório dedicado para somente: mocks-api-integrations? Sim, faz sentido, mas depende do objetivo. Para demonstrar conhecimento em integrações, ele pode ser bastante útil para portfólio.

Por exemplo:

mocks-api-integrations
├── github-api
├── netsuite-api
├── hubspot-api
├── totvs-api
├── pipefy-api
├── stripe-api
├── salesforce-api
├── jira-api
├── swagger-mocks
├── postman-collections
└── docker-compose

Isso mostra que você sabe trabalhar com:

  • REST APIs;
  • autenticação OAuth/JWT;
  • consumo de APIs externas;
  • serialização JSON;
  • tratamento de erros;
  • mocks para testes;
  • integração entre sistemas.

Como recrutador, eu acharia interessante porque consigo abrir um único repositório e ver vários exemplos de integração.

Por outro lado, se o repositório for apenas:

mock-api-1
mock-api-2
mock-api-3

sem contexto de negócio, ele pode parecer um conjunto de exercícios isolados.

Uma abordagem que costuma gerar mais valor é transformar os mocks em cenários reais:

netsuite-pipefy-integration
salesforce-customer-sync
github-repository-analyzer
jira-ticket-automation
stripe-payment-webhook

Isso demonstra não apenas consumo de API, mas também resolução de problemas. Pois une todos os conceitos de:

  • Pipefy;
  • Oracle NetSuite;
  • RabbitMQ;
  • ASP.NET Core;
  • Java/Kotlin;
  • Observability.

Então eu provavelmente criaria algo como:

integration-playground

ou

enterprise-api-integrations

contendo:

├── netsuite-pipefy-sync
├── github-api-client
├── rabbitmq-event-consumer
├── stripe-webhooks
├── mock-server-wiremock
├── postman
└── docs

Isso parece mais próximo de um ambiente corporativo real.

Agora, se o objetivo for exclusivamente demonstrar mocks para testes automatizados, aí um repositório dedicado chamado:

mocks-api-integrations

faz bastante sentido, especialmente se você usar ferramentas como:

  • WireMock;
  • MockServer;
  • JSON Server;
  • Prism;
  • OpenAPI Mocking.

Nesse caso ele se torna um repositório de referência para testes e desenvolvimento de integrações.

Note

Então minha resposta seria: sim, é útil, mas ganha muito mais valor quando os mocks representam integrações reais e casos de negócio concretos, em vez de apenas endpoints fictícios isolados. Para o seu perfil de engenheiro de software focado em integrações, eu consideraria uma boa adição ao portfólio.

Estrutura:

mocks-api-integrations/
├── src/
│   ├── shared/            # store em memória, auth, simulação de erro/latência
│   ├── stripe-api/
│   ├── stone-api/
│   ├── netsuite-api/
│   ├── pipefy-api/
│   ├── jira-api/
│   ├── hubspot-api/
│   ├── totvs-api/
│   ├── salesforce-api/
│   ├── sap-api/
│   └── index.ts           # sobe todos os mocks juntos (dev local)
├── tests/                  # testes de integração (Jest + supertest) — pasta separada dos mocks
├── swagger-mocks/          # um stub OpenAPI por integração
├── postman-collections/    # coleção Postman com todas as APIs
├── docker-compose/         # um container por mock
└── Dockerfile

🦺 Portas padrão (configuráveis via .env):

Serviço Porta Autenticação
Stripe 4001 Authorization: Bearer <token>
Stone 4002 x-api-key: <token>
NetSuite 4003 Authorization: Bearer <token>
Pipefy 4004 Authorization: Bearer <token> (GraphQL)
Jira 4005 Authorization: Bearer <token>
HubSpot 4006 Authorization: Bearer <token>
Totvs 4007 OAuth2 client-credentials → Bearer
Salesforce 4008 OAuth2 → Bearer
SAP 4009 apikey: <token> + CSRF token (fluxo OData)

Como rodar

cp .env.example .env
npm install

Rodar um mock específico

npm run start:stripe     # ou start:stone, start:netsuite, start:pipefy,
                          # start:jira, start:hubspot, start:totvs,
                          # start:salesforce, start:sap

Rodar todos os mocks juntos (dev local)

npm run dev

Rodar via Docker Compose (um container por API)

docker compose -f docker-compose/docker-compose.yml up --build

Testes de integração

Os testes ficam em uma pasta separada (tests/), um arquivo por integração, e usam supertest diretamente sobre o app Express exportado por cada mock — não é necessário subir os containers para rodar os testes.

npm test

Cada suíte cobre: fluxo de sucesso (criação/consulta/atualização), autenticação ausente/inválida (401) e regras de negócio (400/404).

Simulando falhas do provedor

Todos os mocks aceitam dois headers para forçar cenários de erro sem precisar de lógica extra no client:

  • x-mock-status: 503 → força o status de resposta desejado
  • x-mock-delay-ms: 2000 → atraso artificial, útil para testar timeout

Exemplo:

curl -X POST http://localhost:4001/v1/customers \
  -H "Authorization: Bearer sk_test_mock_123" \
  -H "x-mock-status: 500" \
  -H "Content-Type: application/json" \
  -d '{"email":"teste@empresa.com"}'

Swagger / OpenAPI

Cada integração tem um stub OpenAPI em swagger-mocks/, útil para gerar documentação ou clients automaticamente (ex: openapi-generator).

Postman

Importe postman-collections/mocks-api-integrations.postman_collection.json no Postman — a coleção já vem organizada em uma pasta por integração, com variáveis pré-configuradas para cada base URL e credencial.

Observações

  • Toda a persistência é em memória (reinicia a cada restart do processo) — o objetivo é mockar contrato/comportamento, não simular um banco de dados.
  • As credenciais em .env.example são fake e servem apenas para os mocks locais.

About

🧪↔️ It's a repository of Mocks and Integration testing for API integrations (Stripe, Stone, Oracle NetSuite, Pipefy, Jira, HubSpot, Totvs, Salesforce, SAP).

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages