chore: migrate Node.js implementation for js-sandbox to isolated-vm (#3973)

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
This commit is contained in:
James George
2024-04-19 08:38:46 -07:00
committed by GitHub
parent a079e0f04b
commit 22c6eabd13
52 changed files with 1028 additions and 285 deletions

View File

@@ -0,0 +1,93 @@
import { describe, expect, test } from "vitest"
import { runPreRequestScript } from "~/node"
describe("runPreRequestScript", () => {
test("returns the updated environment properly", () => {
return expect(
runPreRequestScript(
`
pw.env.set("bob", "newbob")
`,
{
global: [],
selected: [
{ key: "bob", value: "oldbob", secret: false },
{ key: "foo", value: "bar", secret: false },
],
}
)()
).resolves.toEqualRight({
global: [],
selected: [
{ key: "bob", value: "newbob", secret: false },
{ key: "foo", value: "bar", secret: false },
],
})
})
test("fails if the key is not a string", () => {
return expect(
runPreRequestScript(
`
pw.env.set(10, "newbob")
`,
{
global: [],
selected: [
{ key: "bob", value: "oldbob", secret: false },
{ key: "foo", value: "bar", secret: false },
],
}
)()
).resolves.toBeLeft()
})
test("fails if the value is not a string", () => {
return expect(
runPreRequestScript(
`
pw.env.set("bob", 10)
`,
{
global: [],
selected: [
{ key: "bob", value: "oldbob", secret: false },
{ key: "foo", value: "bar", secret: false },
],
}
)()
).resolves.toBeLeft()
})
test("fails for invalid syntax", () => {
return expect(
runPreRequestScript(
`
pw.env.set("bob",
`,
{
global: [],
selected: [
{ key: "bob", value: "oldbob", secret: false },
{ key: "foo", value: "bar", secret: false },
],
}
)()
).resolves.toBeLeft()
})
test("creates new env variable if doesn't exist", () => {
return expect(
runPreRequestScript(
`
pw.env.set("foo", "bar")
`,
{ selected: [], global: [] }
)()
).resolves.toEqualRight({
global: [],
selected: [{ key: "foo", value: "bar", secret: false }],
})
})
})