Files
whatsapp-inbox-platform/scripts/ops-smoke.mjs
Wira Basalamah adde003fba
Some checks failed
CI - Production Readiness / Verify (push) Has been cancelled
chore: initial project import
2026-04-21 09:29:29 +07:00

46 lines
1.7 KiB
JavaScript
Executable File

#!/usr/bin/env node
import { execSync } from "node:child_process";
const baseUrl = (process.env.OPS_BASE_URL || process.env.APP_URL || process.env.NEXT_PUBLIC_APP_URL || "").replace(/\/+$/, "");
function fail(message) {
console.error(`[ERROR] ${message}`);
process.exit(1);
}
if (!baseUrl) {
fail("Missing OPS_BASE_URL / APP_URL / NEXT_PUBLIC_APP_URL");
}
function run(command, description) {
try {
execSync(command, { stdio: "inherit", env: process.env, timeout: 120000 });
console.log(`[OK] ${description}`);
} catch (error) {
throw new Error(`${description} failed`);
}
}
const jobToken = process.env.CAMPAIGN_RETRY_JOB_TOKEN?.trim() || "";
const healthToken = process.env.HEALTHCHECK_TOKEN?.trim() || "";
const webhookVerifyToken = process.env.WHATSAPP_WEBHOOK_VERIFY_TOKEN?.trim() || "";
const healthHeaders = healthToken ? ` -H "Authorization: Bearer ${healthToken}"` : "";
const jobHeaders = jobToken ? ` -H "Authorization: Bearer ${jobToken}"` : "";
try {
run("npm run -s ops:readiness", "Ops readiness");
run(`curl -fsS ${healthHeaders} ${baseUrl}/api/health`, "Health endpoint");
run(`curl -fsS ${jobHeaders} "${baseUrl}/api/jobs/campaign-retry?token=${encodeURIComponent(jobToken)}"`, "Campaign retry endpoint");
if (webhookVerifyToken) {
run(
`curl -fsS "${baseUrl}/api/webhooks/whatsapp?hub.mode=subscribe&hub.verify_token=${encodeURIComponent(webhookVerifyToken)}&hub.challenge=ok"`,
"Webhook verify probe"
);
} else {
console.log("[SKIP] Webhook verify probe (WHATSAPP_WEBHOOK_VERIFY_TOKEN not set)");
}
console.log("\nSmoke checks passed");
} catch (error) {
fail(error instanceof Error ? error.message : "Smoke checks failed");
}