diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2021-09-30 15:50:59 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-30 15:50:59 -0400 |
commit | c3e441c5b54de09ca3af3e1fd0098e8d307c18d7 (patch) | |
tree | df7a71df21e94df22af9615829f2003f904d2e69 /cli/tests | |
parent | cdac1905831df1b2f6fbf863bfd6d884dbe2c0e3 (diff) |
fix: worker environment permissions should accept an array (#12250)
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/testdata/workers/env_read_check_worker.js | 14 | ||||
-rw-r--r-- | cli/tests/unit/worker_permissions_test.ts | 43 | ||||
-rw-r--r-- | cli/tests/unit/worker_types.ts | 2 |
3 files changed, 58 insertions, 1 deletions
diff --git a/cli/tests/testdata/workers/env_read_check_worker.js b/cli/tests/testdata/workers/env_read_check_worker.js new file mode 100644 index 000000000..72ad31df2 --- /dev/null +++ b/cli/tests/testdata/workers/env_read_check_worker.js @@ -0,0 +1,14 @@ +onmessage = async ({ data }) => { + const permissions = []; + for (const name of data.names) { + const { state } = await Deno.permissions.query({ + name: "env", + variable: name, + }); + permissions.push(state === "granted"); + } + + postMessage({ + permissions, + }); +}; diff --git a/cli/tests/unit/worker_permissions_test.ts b/cli/tests/unit/worker_permissions_test.ts new file mode 100644 index 000000000..35cb2d04d --- /dev/null +++ b/cli/tests/unit/worker_permissions_test.ts @@ -0,0 +1,43 @@ +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { assertEquals, deferred, unitTest } from "./test_util.ts"; + +unitTest( + { permissions: { env: true, read: true } }, + async function workerEnvArrayPermissions() { + const promise = deferred<boolean[]>(); + + const worker = new Worker( + new URL( + "../testdata/workers/env_read_check_worker.js", + import.meta.url, + ).href, + { + type: "module", + deno: { + namespace: true, + permissions: { + env: ["test", "OTHER"], + }, + }, + }, + ); + + worker.onmessage = ({ data }) => { + promise.resolve(data.permissions); + }; + + worker.postMessage({ + names: ["test", "TEST", "asdf", "OTHER"], + }); + + const permissions = await promise; + worker.terminate(); + + if (Deno.build.os === "windows") { + // windows ignores case + assertEquals(permissions, [true, true, false, true]); + } else { + assertEquals(permissions, [true, false, false, true]); + } + }, +); diff --git a/cli/tests/unit/worker_types.ts b/cli/tests/unit/worker_types.ts index 0fd2c3248..0f99e15df 100644 --- a/cli/tests/unit/worker_types.ts +++ b/cli/tests/unit/worker_types.ts @@ -5,7 +5,7 @@ unitTest( { permissions: { read: true } }, function utimeSyncFileSuccess() { const w = new Worker( - new URL("../workers/worker_types.ts", import.meta.url).href, + new URL("../testdata/workers/worker_types.ts", import.meta.url).href, { type: "module" }, ); assert(w); |