66 lines
2.3 KiB
Markdown
66 lines
2.3 KiB
Markdown
# 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`
|