Обзор
Тестирование L402 API включает два уровня:- Юнит / интеграционные тесты — проверка логики middleware без реальных Lightning-платежей
- Сквозные тесты — проверка полного потока с реальным кошельком и реальными sats
Юнит-тесты — заглушка провайдера
Передайте заглушкуLightningProvider, чтобы полностью обойти Lightning:
Генерация валидного preimage для тестов
Python — pytest с заглушкой провайдера
Тестирование защиты от повторного использования
Убедитесь, что preimage не может быть использован повторно:CI-пайплайн
Используйте заглушку провайдера в CI — Lightning-нода и API-ключи не нужны:Сквозное тестирование с реальными sats
Для полного тестирования платёжного потока (staging/перед запуском):- Установите
priceSats: 1— стоимость ~$0.0008 за запуск теста - Используйте OpenNode sandbox (
testMode: true) для оплаты без реальных денег: - Или используйте ваш Blink-кошелёк — платежи в 1 sat практически бесплатны
Автоматизированное E2E с тестовым кошельком
Чеклист перед запуском в продакшн
Юнит-тесты проходят с заглушкой провайдера
Поток 402 → оплата → 200 проверен. Защита от повторного использования проверена (второй запрос возвращает 401).
Протестировано истечение срока действия токена
Установите
exp: Date.now() - 1 в вашем тестовом macaroon — убедитесь, что middleware возвращает 401.Полное E2E с реальным платежом при priceSats: 1
Реальный кошелёк, реальный платёж, реальный ответ 200 OK. Используйте Wallet of Satoshi или Blink на вашем телефоне.
Защита от повторного использования настроена корректно для вашего деплоя
Один процесс: стандартный in-memory адаптер подойдёт. Несколько процессов (Kubernetes, PM2 cluster): используйте адаптер Supabase или Redis. См. Руководство по продакшну.