feat: implement T22, T18, T23 — dev stack, profile tests, server binary

- T22: docker-compose.dev.yml dev stack, Dockerfile, root Makefile
- T18: Profile test suite (Scenario A) — 8 integration tests with real handlers
- T23: Server binary wiring all components, config validation, /healthz
- Config: ValidateConfig with startup validation

14 test packages pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-13 02:18:36 +01:00
parent fa27adbc77
commit c18adb6441
9 changed files with 1345 additions and 2 deletions

48
docker-compose.dev.yml Normal file
View File

@@ -0,0 +1,48 @@
version: "3.8"
services:
keycape:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080"
volumes:
- ./config/dev-config.yaml:/etc/keycape/config.yaml:ro
- ./config/dev-key.pem:/etc/keycape/key.pem:ro
environment:
- KEYCAPE_CONFIG=/etc/keycape/config.yaml
depends_on:
- lldap
- authelia
lldap:
image: lldap/lldap:stable
ports:
- "17170:17170"
- "3890:3890"
environment:
- LLDAP_JWT_SECRET=devjwtsecret
- LLDAP_LDAP_USER_PASS=adminpassword
- LLDAP_LDAP_BASE_DN=dc=netkingdom,dc=local
volumes:
- lldap_data:/data
authelia:
image: authelia/authelia:latest
ports:
- "9091:9091"
volumes:
- ./config/authelia:/config:ro
environment:
- AUTHELIA_JWT_SECRET=devsecret
privacyidea:
image: khalibre/privacyidea:latest
ports:
- "5000:80"
environment:
- PI_ADMIN_PASSWORD=adminpassword
volumes:
lldap_data: