Files
SGF/scripts/settlements-demo-access.mjs
2026-10-30 08:13:34 +02:00

21 lines
1.3 KiB
JavaScript

import fs from 'node:fs/promises';
import assert from 'node:assert/strict';
const source=await fs.readFile('scripts/settlements-http-proof.mjs','utf8');
const definition=source.slice(source.indexOf(' function client()'),source.indexOf(' const p=client()'));
const results=[];
for(const mode of ['compras','sgf']) {
const base=`http://127.0.0.1:${mode==='compras'?8005:8006}`;
const client=eval('('+definition.trim().replace(/^function client/, 'function')+')');
for(const role of ['preparacao','validacao','consulta']) {
const c=client();await c.login(role);
const html=await c.request('/supplier-payments');assert.equal(html.status,200);
const data=await c.list();assert.equal(data.payments.length,0);
const old=await c.request(mode==='compras'?'/obrigacoes-fornecedores':'/supplier-payables');assert.equal(old.status,200);assert.ok(old.text.includes('/supplier-payments'));
results.push({host:mode,role,status:html.status,payments:data.payments.length});
await c.request('/logout','POST',{});
}
}
await fs.writeFile('docs/proofs/supplier-settlements-demo-access.json',JSON.stringify({checked_at:new Date().toISOString(),kind:'HTTP and HTML only; no visual review or monetary commands',results},null,2)+'\n');
console.log('Both existing demonstrations: all three roles, payments page/API and obligation link passed; no monetary commands.');