Phase 2c — testing infrastructure (43 tests, CI gating, docker-compose)
Some checks failed
Docker Build / build-and-push-image (push) Has been cancelled

Brings the project to a TDD/BDD-friendly state — apologies for shipping
Phase 1.5 + Phase 2 code-first, that violated feedback_tdd_first_bdd_required.

What's added :

- helpers_test.go : FakeTelegram (httptest server that records sendMessage /
  deleteMessage / setWebhook / etc.), miniredis bootstrap, MakeUpdate /
  PostWebhook helpers. The same harness simulates 'a user DMing the bot'
  end-to-end without hitting Telegram cloud — answer to the user question.
- 43 tests covering : allowlist parsing, telegram type helpers (UserID /
  ChatID / Text / messageID), secret_token constant-time compare, Backoff
  schedule, Auth (login wrong/right/logout/TTL/nil-receiver), EchoHandler,
  HTTPHandler (forward / timeout / non-2xx / empty body), AuthHandler
  (start / auth / whoami / logout / replay defense delete), Server (bad
  secret 401, unknown bot 404, allowlist drop, gated bot prompt,
  full /auth → echo → /logout flow, healthz/readyz).
- All tests pass with -race in 1.6s, no external deps (miniredis +
  httptest in-process).

Infra :

- Updated .gitea/workflows/dockerimage.yaml : new 'test' job
  (go vet + go test -race) gates the build-and-push-image job. CI now
  also runs on pull_request.
- docker-compose.yml : redis + postgres for full local stack.
- Makefile : test-race, compose-up/down targets.
- README updated with test + local-dev sections.

Refs ~/.claude/plans/pour-les-notifications-on-inherited-seal.md § Phase 2.
This commit is contained in:
2026-05-09 15:18:29 +02:00
parent 4f246ccc1d
commit d63f195b3d
16 changed files with 1100 additions and 9 deletions

View File

@@ -3,7 +3,7 @@ APP := telegram-gateway
IMAGE := gitea.arcodange.lab/arcodange/$(APP)
TAG ?= dev
.PHONY: build test vet tidy run docker push setwebhook deletewebhook
.PHONY: build test test-race vet tidy run docker push setwebhook deletewebhook compose-up compose-down
build:
go build -o bin/gateway .
@@ -11,12 +11,22 @@ build:
test:
go test ./...
test-race:
go test -race -count=1 -timeout 120s ./...
vet:
go vet ./...
tidy:
go mod tidy
# Local dev stack — Redis (auth) + Postgres (Phase 2b queue) on localhost.
compose-up:
docker compose up -d --wait
compose-down:
docker compose down -v
run: build
CONFIG_PATH=./bots.example.yaml ./bin/gateway serve