diff options
Diffstat (limited to 'cli/tests/testdata')
| -rw-r--r-- | cli/tests/testdata/bench/allow_all.ts | 16 | ||||
| -rw-r--r-- | cli/tests/testdata/test/allow_all.ts | 16 | ||||
| -rw-r--r-- | cli/tests/testdata/workers/permission_echo.js | 19 | ||||
| -rw-r--r-- | cli/tests/testdata/workers/test.ts | 62 |
4 files changed, 105 insertions, 8 deletions
diff --git a/cli/tests/testdata/bench/allow_all.ts b/cli/tests/testdata/bench/allow_all.ts index 110e4621f..d7dde3a85 100644 --- a/cli/tests/testdata/bench/allow_all.ts +++ b/cli/tests/testdata/bench/allow_all.ts @@ -17,8 +17,10 @@ for (const name of permissions) { [name]: false, }, async fn() { - const status = await Deno.permissions.query({ name }); - assertEquals(status.state, "prompt"); + for await (const n of permissions) { + const status = await Deno.permissions.query({ name: n }); + assertEquals(status.state, "prompt"); + } }, }); @@ -28,8 +30,14 @@ for (const name of permissions) { [name]: true, }, async fn() { - const status = await Deno.permissions.query({ name }); - assertEquals(status.state, "granted"); + for await (const n of permissions) { + const status = await Deno.permissions.query({ name: n }); + if (n === name) { + assertEquals(status.state, "granted"); + } else { + assertEquals(status.state, "prompt"); + } + } }, }); } diff --git a/cli/tests/testdata/test/allow_all.ts b/cli/tests/testdata/test/allow_all.ts index e70ac46b0..c7a238130 100644 --- a/cli/tests/testdata/test/allow_all.ts +++ b/cli/tests/testdata/test/allow_all.ts @@ -17,8 +17,10 @@ for (const name of permissions) { [name]: false, }, async fn() { - const status = await Deno.permissions.query({ name }); - assertEquals(status.state, "prompt"); + for await (const n of permissions) { + const status = await Deno.permissions.query({ name: n }); + assertEquals(status.state, "prompt"); + } }, }); @@ -28,8 +30,14 @@ for (const name of permissions) { [name]: true, }, async fn() { - const status = await Deno.permissions.query({ name }); - assertEquals(status.state, "granted"); + for await (const n of permissions) { + const status = await Deno.permissions.query({ name: n }); + if (n === name) { + assertEquals(status.state, "granted"); + } else { + assertEquals(status.state, "prompt"); + } + } }, }); } diff --git a/cli/tests/testdata/workers/permission_echo.js b/cli/tests/testdata/workers/permission_echo.js new file mode 100644 index 000000000..f492a25f2 --- /dev/null +++ b/cli/tests/testdata/workers/permission_echo.js @@ -0,0 +1,19 @@ +self.onmessage = async () => { + const env = await Deno.permissions.query({ name: "env" }); + const ffi = await Deno.permissions.query({ name: "ffi" }); + const hrtime = await Deno.permissions.query({ name: "hrtime" }); + const net = await Deno.permissions.query({ name: "net" }); + const read = await Deno.permissions.query({ name: "read" }); + const run = await Deno.permissions.query({ name: "run" }); + const write = await Deno.permissions.query({ name: "write" }); + self.postMessage({ + env: env.state, + ffi: ffi.state, + hrtime: hrtime.state, + net: net.state, + read: read.state, + run: run.state, + write: write.state, + }); + self.close(); +}; diff --git a/cli/tests/testdata/workers/test.ts b/cli/tests/testdata/workers/test.ts index b9204adee..d75ca499b 100644 --- a/cli/tests/testdata/workers/test.ts +++ b/cli/tests/testdata/workers/test.ts @@ -584,6 +584,68 @@ Deno.test("Worker with disabled permissions", async function () { worker.terminate(); }); +Deno.test("Worker permissions are not inherited with empty permission object", async function () { + const worker = new Worker( + new URL("./permission_echo.js", import.meta.url).href, + { + type: "module", + deno: { + namespace: true, + permissions: {}, + }, + }, + ); + + const promise = deferred(); + worker.onmessage = (e) => { + promise.resolve(e.data); + }; + + worker.postMessage(null); + assertEquals(await promise, { + env: "prompt", + hrtime: "prompt", + net: "prompt", + ffi: "prompt", + read: "prompt", + run: "prompt", + write: "prompt", + }); + worker.terminate(); +}); + +Deno.test("Worker permissions are not inherited with single specified permission", async function () { + const worker = new Worker( + new URL("./permission_echo.js", import.meta.url).href, + { + type: "module", + deno: { + namespace: true, + permissions: { + net: true, + }, + }, + }, + ); + + const promise = deferred(); + worker.onmessage = (e) => { + promise.resolve(e.data); + }; + + worker.postMessage(null); + assertEquals(await promise, { + env: "prompt", + hrtime: "prompt", + net: "granted", + ffi: "prompt", + read: "prompt", + run: "prompt", + write: "prompt", + }); + worker.terminate(); +}); + Deno.test("Worker with invalid permission arg", function () { assertThrows( () => |
