diff --git a/artifacts/api-server/src/routes/index.ts b/artifacts/api-server/src/routes/index.ts index ed68a82..34e15ab 100644 --- a/artifacts/api-server/src/routes/index.ts +++ b/artifacts/api-server/src/routes/index.ts @@ -6,6 +6,7 @@ import sessionsRouter from "./sessions.js"; import demoRouter from "./demo.js"; import devRouter from "./dev.js"; import testkitRouter from "./testkit.js"; +import { lnbitsService } from "../lib/lnbits.js"; import uiRouter from "./ui.js"; import nodeDiagnosticsRouter from "./node-diagnostics.js"; import metricsRouter from "./metrics.js"; @@ -34,7 +35,13 @@ router.use(uiRouter); router.use(nodeDiagnosticsRouter); router.use(worldRouter); -if (process.env.NODE_ENV !== "production") { +// Mount dev routes when NOT in production OR when LNbits is in stub mode. +// Stub mode means there is no real Lightning backend — payments are simulated +// in-memory. The testkit relies on POST /dev/stub/pay/:hash to simulate payment +// confirmation, so we expose it whenever stub mode is active regardless of NODE_ENV. +// In real production with a live LNbits backend, stubMode is false, so these +// routes remain unexposed. +if (process.env.NODE_ENV !== "production" || lnbitsService.stubMode) { router.use(devRouter); }