johnandersen777.bsky.social/atlibs-socialweb-computer-requester
socialweb.computer market requester and policy modules for atlibs, with its web pages and lexicons
0
0
// kcp parity for under-4-cpus: internal/policyengine/spec/engine_test.go TestWorkPolicies
// (matrix/under-4-cpus/...) and under-4-cpus.ts.
import assert from "node:assert/strict";
import { test } from "node:test";
import { abiSuite, Bidder, loadPolicy, NSID, Requester, World } from "../../crates/policy/vectors.mjs";
const mod = await loadPolicy("policy-under-4-cpus");
abiSuite(mod);
const allow = { allow: true, violations: [] };
const base = { selfDid: Bidder, counterpartyDid: Requester, mode: "full" };
function rfpFor(world, cpus) {
const vm = world.put(Requester, NSID.vm, `vm-${cpus}`, { $type: NSID.vm, cpus });
return world.put(Requester, NSID.rfp, `rfp-${cpus}`, { $type: NSID.rfp, payload: vm });
}
test("scope without demand allows; an rfp without payload allows (matrix no-demand, rfp-without-payload)", async () => {
assert.deepEqual((await mod.evaluate({ ...base, mode: "scope" })).verdict, allow);
const world = new World();
const rfp = world.put(Requester, NSID.rfp, "rfp-plain", { $type: NSID.rfp, policies: [] });
assert.deepEqual((await mod.evaluate({ ...base, rfp }, world)).verdict, allow);
});
test("an unreadable payload denies (matrix payload-unreadable-denies)", async () => {
const world = new World();
const vm = `at://${Requester}/computer.socialweb.temp.compute.vm/vm-8`;
const rfp = world.put(Requester, NSID.rfp, "rfp-cpus", { $type: NSID.rfp, payload: { uri: vm, cid: "bafyreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy" } });
const { verdict } = await mod.evaluate({ ...base, rfp }, world);
assert.equal(verdict.allow, false);
assert.match(verdict.violations[0].msg, /^failed to resolve demand payload/);
assert.equal(verdict.violations[0].policyId, "under-4-cpus");
});
test("cpus over the cap deny, at or under allow; args.maxCpus only counts as a number", async () => {
const world = new World();
assert.deepEqual((await mod.evaluate({ ...base, rfp: rfpFor(world, 4) }, world)).verdict, allow);
assert.deepEqual((await mod.evaluate({ ...base, rfp: rfpFor(world, 8) }, world)).verdict, {
allow: false, violations: [{ msg: "VM needs 8 cpus; this bidder's cap is 4", policyId: "under-4-cpus" }],
});
assert.deepEqual((await mod.evaluate({ ...base, rfp: rfpFor(world, 8), args: { maxCpus: 8 } }, world)).verdict, allow);
assert.equal((await mod.evaluate({ ...base, rfp: rfpFor(world, 8), args: { maxCpus: "8" } }, world)).verdict.allow, false);
assert.deepEqual((await mod.evaluate({ ...base, rfp: rfpFor(world, 2.5), args: { maxCpus: 2 } }, world)).verdict.violations[0].msg, "VM needs 2.5 cpus; this bidder's cap is 2");
assert.deepEqual((await mod.evaluate({ ...base, rfp: rfpFor(world, "16") }, world)).verdict, allow, "non-number cpus allow");
});
test("rfp.payload inline is used without reading the payload record", async () => {
const world = new World();
const rfp = { ...rfpFor(world, 2), payload: { cpus: 6 } };
const { verdict, reads } = await mod.evaluate({ ...base, rfp }, world);
assert.equal(verdict.allow, false);
assert.deepEqual(reads, [rfp.uri]);
});