mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-20 22:44:25 +00:00
67 lines
2.3 KiB
JavaScript
67 lines
2.3 KiB
JavaScript
/**
|
|
* Mock Zitadel server for testing ZITADEL_API_AWAITINITIALCONN.
|
|
*
|
|
* Returns 503 on /debug/ready until READY_AFTER_MS milliseconds have elapsed,
|
|
* then switches to 200. All other endpoints return minimal ConnectRPC-compatible
|
|
* responses so the login app can start normally once the readiness gate passes.
|
|
*/
|
|
const http = require("http");
|
|
|
|
const PORT = process.env.PORT || 8080;
|
|
const READY_AFTER_MS = parseInt(process.env.READY_AFTER_MS || "5000", 10);
|
|
|
|
const startTime = Date.now();
|
|
|
|
const sendResponse = (res, statusCode, body) => {
|
|
res.writeHead(statusCode, { "Content-Type": "application/json" });
|
|
res.end(JSON.stringify(body));
|
|
};
|
|
|
|
const server = http.createServer((req, res) => {
|
|
const { method, url } = req;
|
|
console.log(`[${new Date().toISOString()}] ${method} ${url}`);
|
|
|
|
if (url === "/debug/ready") {
|
|
const elapsed = Date.now() - startTime;
|
|
if (elapsed < READY_AFTER_MS) {
|
|
console.log(` -> 503 (not ready, ${elapsed}ms / ${READY_AFTER_MS}ms)`);
|
|
sendResponse(res, 503, { status: "not ready" });
|
|
} else {
|
|
console.log(` -> 200 (ready after ${elapsed}ms)`);
|
|
sendResponse(res, 200, { status: "ok" });
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (url.includes("GetLoginSettings") || url.includes("SettingsService")) {
|
|
sendResponse(res, 200, { settings: {} });
|
|
} else if (url.includes("GetBrandingSettings")) {
|
|
sendResponse(res, 200, { settings: {} });
|
|
} else if (url.includes("SessionService") || url.includes("Session")) {
|
|
sendResponse(res, 200, { session: {} });
|
|
} else if (url.includes("UserService") || url.includes("User")) {
|
|
sendResponse(res, 200, { user: {} });
|
|
} else if (url.includes("OrganizationService") || url.includes("Organization")) {
|
|
sendResponse(res, 200, { result: [] });
|
|
} else if (url.includes("IdentityProviderService") || url.includes("IdentityProvider")) {
|
|
sendResponse(res, 200, { identityProviders: [] });
|
|
} else {
|
|
sendResponse(res, 200, {});
|
|
}
|
|
});
|
|
|
|
server.on("error", (err) => console.error("Server error:", err));
|
|
|
|
server.listen(PORT, "0.0.0.0", () => {
|
|
console.log(`Mock Zitadel server listening on port ${PORT}`);
|
|
console.log(`Will become ready after ${READY_AFTER_MS}ms`);
|
|
});
|
|
|
|
process.on("SIGTERM", () => {
|
|
console.log("Shutting down mock server...");
|
|
server.close(() => {
|
|
console.log("Mock server stopped");
|
|
process.exit(0);
|
|
});
|
|
});
|