概要
L402 APIのテストには2つの層があります:- ユニット/インテグレーションテスト — 実際のLightning支払いなしでミドルウェアロジックを検証する
- エンドツーエンドテスト — 実際のウォレットと実際のsatsで完全なフローを検証する
ユニットテスト — プロバイダーをモックする
モックのLightningProviderを渡してLightningを完全にバイパスする:
テスト用の有効なpreimageを生成する
Python — モックプロバイダーでpytest
リプレイ保護のテスト
preimageが再利用できないことを検証する:CIパイプライン
CIではモックプロバイダーを使用する — Lightning ノードやAPIキーは不要:実際のsatsでのエンドツーエンドテスト
完全な支払いフローのテスト(ステージング/リリース前):priceSats: 1を設定する — テスト実行あたり約$0.0008のコスト- OpenNode sandbox(
testMode: true)を使用して実際のお金なしで支払う: - またはBlinkウォレットを使用する — 1 sat支払いは実質的に無料
テストウォレットを使った自動E2E
本番前チェックリスト
1
モックプロバイダーでユニットテストが通過する
402 → 支払い → 200のフローを検証済み。リプレイ保護を検証済み(2回目の使用で401が返る)。
2
トークンの有効期限をテスト済み
モックのmacaroonで
exp: Date.now() - 1を設定する — ミドルウェアが401を返すことを検証する。3
priceSats: 1で実際の支払いによる完全なE2Eを実施
実際のウォレット、実際の支払い、実際の200 OK。スマートフォンでWallet of SatoshiまたはBlinkを使用する。
4
デプロイ環境に適したリプレイ保護が設定されている
シングルプロセス:デフォルトのインメモリアダプターで問題なし。マルチプロセス(Kubernetes、PM2クラスター):SupabaseまたはRedisアダプターを使用する。本番ガイドを参照。