Files
bun.sh/test/js/sql/bootstrap.js

35 lines
1.6 KiB
JavaScript

import { spawnSync } from "child_process";
exec("dropdb", ["bun_sql_test"]);
// Needs to have a server.crt file https://www.postgresql.org/docs/current/ssl-tcp.html#SSL-CERTIFICATE-CREATION
// exec('psql', ['-c', 'alter system set ssl=on'])
exec("psql", ["-c", "drop user bun_sql_test"]);
exec("psql", ["-c", "create user bun_sql_test"]);
exec("psql", ["-c", "alter system set password_encryption=md5"]);
exec("psql", ["-c", "select pg_reload_conf()"]);
exec("psql", ["-c", "drop user if exists bun_sql_test_md5"]);
exec("psql", ["-c", "create user bun_sql_test_md5 with password 'bun_sql_test_md5'"]);
exec("psql", ["-c", "alter system set password_encryption='scram-sha-256'"]);
exec("psql", ["-c", "select pg_reload_conf()"]);
exec("psql", ["-c", "drop user if exists bun_sql_test_scram"]);
exec("psql", ["-c", "create user bun_sql_test_scram with password 'bun_sql_test_scram'"]);
exec("createdb", ["bun_sql_test"]);
exec("psql", ["-c", "grant all on database bun_sql_test to bun_sql_test"]);
exec("psql", ["-c", "alter database bun_sql_test owner to bun_sql_test"]);
export function exec(cmd, args) {
const { stderr } = spawnSync(cmd, args, { stdio: "pipe", encoding: "utf8" });
if (stderr && !stderr.includes("already exists") && !stderr.includes("does not exist")) throw stderr;
}
async function execAsync(cmd, args) {
// eslint-disable-line
let stderr = "";
const cp = await spawn(cmd, args, { stdio: "pipe", encoding: "utf8" }); // eslint-disable-line
cp.stderr.on("data", x => (stderr += x));
await new Promise(x => cp.on("exit", x));
if (stderr && !stderr.includes("already exists") && !stderr.includes("does not exist")) throw new Error(stderr);
}