Skip to main content

Обзор

Тестирование L402 API включает два уровня:
  1. Юнит / интеграционные тесты — проверка логики middleware без реальных Lightning-платежей
  2. Сквозные тесты — проверка полного потока с реальным кошельком и реальными sats

Юнит-тесты — заглушка провайдера

Передайте заглушку LightningProvider, чтобы полностью обойти Lightning:

Генерация валидного preimage для тестов


Python — pytest с заглушкой провайдера


Тестирование защиты от повторного использования

Убедитесь, что preimage не может быть использован повторно:

CI-пайплайн

Используйте заглушку провайдера в CI — Lightning-нода и API-ключи не нужны:
Управляйте выбором провайдера в зависимости от окружения:

Сквозное тестирование с реальными sats

Для полного тестирования платёжного потока (staging/перед запуском):
  1. Установите priceSats: 1 — стоимость ~$0.0008 за запуск теста
  2. Используйте OpenNode sandbox (testMode: true) для оплаты без реальных денег:
  3. Или используйте ваш Blink-кошелёк — платежи в 1 sat практически бесплатны

Автоматизированное E2E с тестовым кошельком


Чеклист перед запуском в продакшн

1

Юнит-тесты проходят с заглушкой провайдера

Поток 402 → оплата → 200 проверен. Защита от повторного использования проверена (второй запрос возвращает 401).
2

Протестировано истечение срока действия токена

Установите exp: Date.now() - 1 в вашем тестовом macaroon — убедитесь, что middleware возвращает 401.
3

Полное E2E с реальным платежом при priceSats: 1

Реальный кошелёк, реальный платёж, реальный ответ 200 OK. Используйте Wallet of Satoshi или Blink на вашем телефоне.
4

Защита от повторного использования настроена корректно для вашего деплоя

Один процесс: стандартный in-memory адаптер подойдёт. Несколько процессов (Kubernetes, PM2 cluster): используйте адаптер Supabase или Redis. См. Руководство по продакшну.