29 lines
1.0 KiB
TypeScript
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);
|
|
});
|
|
});
|