Qualify restricted SDK syntax independently of build architecture
This commit is contained in:
@@ -6,10 +6,64 @@ import {
|
||||
compileExecutionPlan,
|
||||
hexDigest,
|
||||
inspectJavaScriptSurface,
|
||||
inspectRestrictedImplementation,
|
||||
restrictedSDKIdentity,
|
||||
restrictedSDKPath,
|
||||
type ArtifactImplementation,
|
||||
reportExecutionPlacement,
|
||||
type ExecutionInstallation,
|
||||
} from "../src/execution-world/index.js";
|
||||
|
||||
test("restricted SDK identity ignores build comments and positions, preserving executable syntax", () => {
|
||||
const source = 'export function value() { return ("hello"); }';
|
||||
const x86 = "// /nix/store/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-core/dist/portable.js\n" + source;
|
||||
const arm = "// /nix/store/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-core/dist/portable.js\n\n" + source;
|
||||
assert.equal(restrictedSDKIdentity(x86), restrictedSDKIdentity(arm));
|
||||
for (const changed of [
|
||||
'export function value() { return ("goodbye"); }',
|
||||
'export function value() { return\n("hello"); }',
|
||||
'export function value() { fetch("hello"); }',
|
||||
'import x from "node:fs"; ' + source,
|
||||
'export function value() { return "/nix/store/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-core"; }',
|
||||
])
|
||||
assert.notEqual(restrictedSDKIdentity(source), restrictedSDKIdentity(changed));
|
||||
assert.notEqual(restrictedSDKIdentity('"use strict";'), restrictedSDKIdentity('"use\\x20strict";'));
|
||||
assert.notEqual(restrictedSDKIdentity('const value="// comment";'), restrictedSDKIdentity('const value="";'));
|
||||
assert.throws(() => restrictedSDKIdentity("const ???"));
|
||||
assert.throws(() => restrictedSDKIdentity(" ".repeat(2 * 1024 * 1024 + 1)), /ANALYSIS_LIMIT/);
|
||||
});
|
||||
|
||||
test("restricted admission accepts the same SDK syntax and rejects changed SDK behavior", async () => {
|
||||
const source = "export const registry = {};";
|
||||
const sdk = 'export const value = "trusted";';
|
||||
const implementation: ArtifactImplementation = {
|
||||
id: "restricted",
|
||||
target: "server",
|
||||
compatibility: "quixos-restricted-module-v1",
|
||||
path: "module.mjs",
|
||||
ports: "quixos-transaction-ports-v1",
|
||||
registryExport: "registry",
|
||||
exports: ["value"],
|
||||
contentDigest: "a".repeat(64),
|
||||
files: [
|
||||
{ path: "module.mjs", digest: "b".repeat(64), bytes: source.length, mediaType: "text/javascript" },
|
||||
{ path: restrictedSDKPath, digest: "c".repeat(64), bytes: sdk.length, mediaType: "text/javascript" },
|
||||
],
|
||||
};
|
||||
const check = (candidateSDK: string) => {
|
||||
implementation.files[1]!.bytes = Buffer.byteLength(candidateSDK);
|
||||
return inspectRestrictedImplementation(
|
||||
"package:test@1",
|
||||
implementation,
|
||||
async (_revision, path) => Buffer.from(path === restrictedSDKPath ? candidateSDK : source),
|
||||
restrictedSDKIdentity(sdk),
|
||||
);
|
||||
};
|
||||
assert.deepEqual(await check("// a different build path\n" + sdk), []);
|
||||
assert.equal((await check('export const value = "untrusted";'))[0]?.code, "RESTRICTED_SDK_UNSUPPORTED");
|
||||
assert.equal((await check("export const ???"))[0]?.code, "RESTRICTED_SDK_UNSUPPORTED");
|
||||
});
|
||||
|
||||
test("compiled-source inspection finds authority imports and ambient facilities without executing code", () => {
|
||||
const surface = inspectJavaScriptSurface(
|
||||
`
|
||||
|
||||
Reference in New Issue
Block a user