embeddevio
c6150bd5fd
test(contract): align spec test with the verified green run
contract-openapi / openapi-contract (push) Failing after 18m54s
contract-openapi / ts-client-is-current (push) Failing after 18m49s
2026-10-28 21:06:33 +03:00
embeddevio
3dac7e730a
test(api): контрактные тесты «схема ↔ реализация» (Refs #19 )
...
contract-openapi / openapi-contract (push) Has been cancelled
contract-openapi / ts-client-is-current (push) Has been cancelled
- test_openapi_spec: валидность 3.1, полнота операций по ТЗ, writeOnly-секреты,
единый формат Error, соответствие pydantic-моделей схемам.
- test_contract_responses: все эндпоинты против схем, ошибки 401/404/409/422/503,
WS-кадры, отсутствие секретов в ответах.
- test_contract_negative: доказательство AC — подмена реализации на расходящуюся
роняет контрактный тест с указанием пути до поля.
2026-10-22 00:22:46 +03:00
embeddevio
7d9cf8ca5e
feat(api): роутеры API v1 и WebSocket-поток метрик (Refs #19 )
...
contract-openapi / openapi-contract (push) Has been cancelled
contract-openapi / ts-client-is-current (push) Has been cancelled
- ops: health/ready/metrics без аутентификации (503 = схема Error).
- auth: login/logout/session, cookie-сессия + CSRF-токен.
- status/config/routing/devices+logs: все эндпоинты контракта.
- ws/metrics: /api/v1/metrics/stream, токен в заголовке или query.
2026-10-22 00:21:56 +03:00
embeddevio
839f773010
feat(api): контрактный харнесс и in-memory состояние мок-сервера (Refs #19 )
...
contract-openapi / openapi-contract (push) Has been cancelled
contract-openapi / ts-client-is-current (push) Has been cancelled
- contract.py: загрузка docs/openapi.yaml, вырезание writeOnly-секретов из схем
ответов, валидация тела ответа (jsonschema Draft2020-12 + FormatChecker),
двусторонняя сверка маршрутов приложения и контракта.
- state.py: мок-состояние туннеля/правил/устройств/журнала; секреты хранятся
отдельно от словарей-ответов.
2026-10-22 00:21:43 +03:00
embeddevio
83d5a23406
feat(api): мок-контрол-плейн по контракту + единый формат ошибок (Refs #19 )
...
contract-openapi / openapi-contract (push) Has been cancelled
contract-openapi / ts-client-is-current (push) Has been cancelled
- app.py: create_app() собирает мок-сервер и отдаёт /openapi.json из спецификации.
- errors.py: ApiError + хендлеры, приводящие 4xx/5xx/422 к схеме Error.
- deps.py: Bearer-токен и cookie-сессия (ADR-008).
- schemas.py: pydantic-модели запросов, зеркалящие схемы контракта (extra=forbid,
writeOnly для секретов).
2026-10-22 00:21:06 +03:00