← back to Tk11438 Postgres Migration
socket-proof.cjs
30 lines
// Load only each service's installed pg driver, never its application entrypoint.
const fs = require('node:fs');
const path = require('node:path');
const assert = require('node:assert/strict');
const roots = '/Users/macstudio3/Projects';
const checks = [];
async function probe(project, database, connectionString) {
const {Client} = require(path.join(roots,project,'node_modules/pg'));
const c = new Client({...(connectionString ? {connectionString} : {host:'/tmp',database}), application_name:'TK-11438-readonly-proof', connectionTimeoutMillis:3000, options:'-c default_transaction_read_only=on -c statement_timeout=3000'});
try {
await c.connect();
const {rows:[r]} = await c.query("SELECT current_database() AS database, current_user AS username, inet_client_addr() IS NULL AS socket, current_setting('transaction_read_only') AS read_only");
assert.equal(r.database,database); assert.equal(r.socket,true); assert.equal(r.read_only,'on');
checks.push({project,database,test:connectionString?'socket-url':'socket-object',verdict:'PASS',result:r});
} catch(e) {checks.push({project,database,verdict:'FAIL',code:e.code||e.name});}
finally {await c.end().catch(()=>{});}
const bad = new Client({host:'/tmp/TK-11438-nonexistent-socket',database,connectionTimeoutMillis:1000});
try {await bad.connect(); checks.push({project,test:'no-TCP-fallback',verdict:'FAIL'});}
catch(e) {checks.push({project,test:'no-TCP-fallback',verdict:e.code==='ENOENT'?'PASS':'FAIL',code:e.code});}
finally {await bad.end().catch(()=>{});}
}
(async()=>{
await probe('interiordesignershowroom','idshowroom','postgresql:///idshowroom?host=/tmp');
await probe('patterndesignlab','patterndesignlab');
await probe('Norma-platform','sdcc');
fs.writeFileSync(path.join(__dirname,'verification/socket-proof.json'),JSON.stringify({timestamp:new Date().toISOString(),checks},null,2)+'\n');
console.log(JSON.stringify(checks,null,2));
if(checks.some(c=>c.verdict!=='PASS'))process.exitCode=1;
})();