# FakeMessagePlatform A programmable fake message platform for GoChat automated integration testing. ## What it does FakeMessagePlatform simulates an external messaging channel. It: 1. Sends messages to GoChat's `/webhooks/fake/:identifier` webhook endpoint (simulating customer-initiated messages) 2. Receives GoChat's outbound messages at `/receive` (messages sent by agents via FakeProvider.SendMessage) 3. Tracks all sent/received messages and agent states in memory for test assertions 4. Provides REST API for test scripts to orchestrate message flows ## Quick start ```bash # From repo root pnpm install pnpm fake:start # Health check curl http://127.0.0.1:9100/health # → {"status":"ok","service":"fake-message-platform"} ``` ## Configuration Environment variables: | Variable | Default | Description | |----------|---------|-------------| | `PORT` | `9100` | HTTP listen port | | `GOCHAT_WEBHOOK_URL` | `http://127.0.0.1:3000/webhooks/fake/fake_inbox_1` | GoChat webhook URL | | `GOCHAT_FAKE_TOKEN` | `(empty)` | X-Fake-Token shared secret | ## REST API | Method | Path | Description | |--------|------|-------------| | `POST` | `/api/send` | Send a message to GoChat (simulate customer) | | `POST` | `/api/reply` | Reply to a message (simulate customer reply) | | `POST` | `/api/close` | Close a chat session (session.end event) | | `POST` | `/api/typing` | Toggle typing indicator | | `POST` | `/api/agent/online` | Mark an agent as online | | `POST` | `/api/agent/offline` | Mark an agent as offline | | `GET` | `/api/messages` | Query outbound messages received from GoChat | | `GET` | `/api/messages/:id` | Query a single message | | `GET` | `/api/status` | Platform status (agents, counts) | | `POST` | `/api/reset` | Reset all in-memory state | | `POST` | `/receive` | Receive GoChat outbound message | | `GET` | `/health` | Health check | ## Message flow ``` Test script → FakeMessagePlatform → GoChat webhook → Broker → Pipeline → DB → WS push ↑ Agent reply → FakeProvider.SendMessage → POST /receive → FakeMessagePlatform store ``` ## Related - GoChat FakeProvider: `backend/internal/channel/provider/fake.go` - GoChat FakeWebhookHandler: `backend/internal/handler/webhook/fake_webhook.go` - Test plan: `docs/qa/2026-07-09-test-plan-round5.md`