mono/packages/xblox/tests/unit/run-script-vm.test.ts
2026-04-07 19:28:35 +02:00

29 lines
1.0 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { RunScriptBlock } from '../../src/blocks/run-script-block.js';
import { runRunScriptBlock, runScriptLegacyVm } from '../../src/runtime/run-script-vm.js';
describe('runScriptLegacyVm', () => {
it('matches legacy Function("{" + script + "}").apply(ctx, args)', () => {
const ctx = { x: 2 };
const out = runScriptLegacyVm('return this.x * arguments[0];', ctx as object, [21]);
expect(out).toBe(42);
});
it('does not let scripts reach real require (sandbox)', () => {
expect(() =>
runScriptLegacyVm('return typeof require;', {}, [], {
vm: { require: false },
}),
).not.toThrow();
const t = runScriptLegacyVm('return typeof require;', {}, [], { vm: { require: false } });
expect(t).toBe('undefined');
});
});
describe('RunScriptBlock + runRunScriptBlock', () => {
it('runs block.method', () => {
const b = new RunScriptBlock({ method: 'return 1 + 1;' });
expect(runRunScriptBlock(b, {})).toBe(2);
});
});