58 lines
1.9 KiB
TypeScript
58 lines
1.9 KiB
TypeScript
/**
|
|
* Local integration smoke checks: Postgres via Prisma adapter + optional Stripe API ping.
|
|
* Does not hit Next.js HTTP routes (use npm run test:http after starting the server).
|
|
*/
|
|
import "dotenv/config";
|
|
import { PrismaPg } from "@prisma/adapter-pg";
|
|
import { PrismaClient } from "@prisma/client";
|
|
import { Pool } from "pg";
|
|
import Stripe from "stripe";
|
|
|
|
async function main() {
|
|
const connectionString = process.env.DATABASE_URL;
|
|
if (!connectionString) {
|
|
throw new Error("DATABASE_URL is not set");
|
|
}
|
|
|
|
const pool = new Pool({ connectionString });
|
|
const prisma = new PrismaClient({ adapter: new PrismaPg(pool) });
|
|
|
|
await prisma.$queryRaw`SELECT 1`;
|
|
|
|
const counts = await prisma.$transaction([
|
|
prisma.user.count(),
|
|
prisma.wallet.count(),
|
|
prisma.donation.count(),
|
|
prisma.ledgerEntry.count(),
|
|
]);
|
|
|
|
console.log("[db] connected OK");
|
|
console.log("[db] counts — users:", counts[0], "wallets:", counts[1], "donations:", counts[2], "ledger:", counts[3]);
|
|
|
|
const admins = await prisma.user.count({ where: { role: "ADMIN" } });
|
|
console.log("[db] admin users:", admins);
|
|
|
|
await prisma.$disconnect();
|
|
await pool.end();
|
|
|
|
const sk = process.env.STRIPE_SECRET_KEY?.trim();
|
|
if (!sk || sk.includes("disabled_configure")) {
|
|
console.log("[stripe] skipped — set STRIPE_SECRET_KEY to call the Stripe API");
|
|
return;
|
|
}
|
|
|
|
const stripe = new Stripe(sk, { typescript: true });
|
|
try {
|
|
const balance = await stripe.balance.retrieve();
|
|
const cur = new Set([...balance.available, ...balance.pending].map((b) => b.currency));
|
|
console.log("[stripe] balance.retrieve OK — currencies:", [...cur].join(", ") || "(none)");
|
|
} catch (e) {
|
|
console.log("[stripe] balance.retrieve failed — check key mode (test/live) and permissions:", (e as Error).message);
|
|
}
|
|
}
|
|
|
|
main().catch((e) => {
|
|
console.error("[smoke] failed:", e);
|
|
process.exit(1);
|
|
});
|