Files
xarticleaudio/test/deployment.test.js

33 lines
1.3 KiB
JavaScript

"use strict";
const test = require("node:test");
const assert = require("node:assert/strict");
const fs = require("node:fs");
test("Dockerfile contains production container essentials", () => {
const dockerfile = fs.readFileSync("Dockerfile", "utf8");
assert.match(dockerfile, /FROM oven\/bun:1\.3\.5-alpine/);
assert.match(dockerfile, /EXPOSE 3000/);
assert.match(dockerfile, /STATE_FILE_PATH=\/data\/state\.json/);
assert.match(dockerfile, /bun install --frozen-lockfile/);
assert.match(dockerfile, /bun run build:css/);
assert.match(dockerfile, /HEALTHCHECK/);
assert.match(dockerfile, /CMD \["bun", "src\/server\.js"\]/);
});
test("env example includes required webhook and credit settings", () => {
const envFile = fs.readFileSync(".env.example", "utf8");
assert.match(envFile, /LOG_LEVEL=/);
assert.match(envFile, /APP_BASE_URL=/);
assert.match(envFile, /X_WEBHOOK_SECRET=/);
assert.match(envFile, /X_BEARER_TOKEN=/);
assert.match(envFile, /X_BOT_USER_ID=/);
assert.match(envFile, /POLAR_WEBHOOK_SECRET=/);
assert.match(envFile, /POLAR_ACCESS_TOKEN=/);
assert.match(envFile, /POLAR_PRODUCT_IDS=/);
assert.match(envFile, /TTS_API_KEY=/);
assert.match(envFile, /S3_BUCKET=/);
assert.match(envFile, /INCLUDED_CHARS=/);
assert.match(envFile, /WEBHOOK_RPM=/);
});