51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import { resolveDeviceDatabaseUrl } from "../src/database-config.mjs";
|
|
|
|
test("builds the database URL from a file-backed password", async () => {
|
|
const password = "test-only-database-password-with-32-bytes";
|
|
const url = await resolveDeviceDatabaseUrl(
|
|
{
|
|
DEVICE_DATABASE_HOST: "device-postgres",
|
|
DEVICE_DATABASE_PORT: "5432",
|
|
DEVICE_DATABASE_NAME: "device_plane",
|
|
DEVICE_DATABASE_USER: "device_plane",
|
|
DEVICE_DATABASE_PASSWORD_FILE: "/run/test/postgres-password",
|
|
},
|
|
async (path, encoding) => {
|
|
assert.equal(path, "/run/test/postgres-password");
|
|
assert.equal(encoding, "utf8");
|
|
return `${password}\n`;
|
|
},
|
|
);
|
|
|
|
assert.equal(
|
|
url,
|
|
`postgresql://device_plane:${encodeURIComponent(password)}@device-postgres:5432/device_plane?sslmode=disable`,
|
|
);
|
|
});
|
|
|
|
test("rejects a short file-backed database password", async () => {
|
|
await assert.rejects(
|
|
resolveDeviceDatabaseUrl(
|
|
{
|
|
DEVICE_DATABASE_HOST: "device-postgres",
|
|
DEVICE_DATABASE_NAME: "device_plane",
|
|
DEVICE_DATABASE_USER: "device_plane",
|
|
DEVICE_DATABASE_PASSWORD_FILE: "/run/test/postgres-password",
|
|
},
|
|
async () => "too-short",
|
|
),
|
|
/device_database_password_invalid/,
|
|
);
|
|
});
|
|
|
|
test("keeps an explicit database URL as a compatibility-only boundary", async () => {
|
|
const explicit = "postgresql://local:test@127.0.0.1:5432/device_plane";
|
|
assert.equal(
|
|
await resolveDeviceDatabaseUrl({ DEVICE_DATABASE_URL: explicit }),
|
|
explicit,
|
|
);
|
|
});
|