diff options
Diffstat (limited to 'cli/tests')
29 files changed, 209 insertions, 15 deletions
diff --git a/cli/tests/dynamic_import/permissions_blob_local.ts b/cli/tests/dynamic_import/permissions_blob_local.ts new file mode 100644 index 000000000..571c72ca3 --- /dev/null +++ b/cli/tests/dynamic_import/permissions_blob_local.ts @@ -0,0 +1,4 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +const code = `import "file:///local_file.ts";`; +const blob = new Blob([code]); +await import(URL.createObjectURL(blob)); diff --git a/cli/tests/dynamic_import/permissions_blob_local.ts.out b/cli/tests/dynamic_import/permissions_blob_local.ts.out new file mode 100644 index 000000000..d533d4903 --- /dev/null +++ b/cli/tests/dynamic_import/permissions_blob_local.ts.out @@ -0,0 +1,5 @@ +error: Uncaught (in promise) TypeError: Requires read access to "/local_file.ts", run again with the --allow-read flag + at blob:null/[WILDCARD]:1:0 +await import(URL.createObjectURL(blob)); +^ + at async file:///[WILDCARD]/cli/tests/dynamic_import/permissions_blob_local.ts:4:1 diff --git a/cli/tests/dynamic_import/permissions_blob_remote.ts b/cli/tests/dynamic_import/permissions_blob_remote.ts new file mode 100644 index 000000000..1e2c8c21a --- /dev/null +++ b/cli/tests/dynamic_import/permissions_blob_remote.ts @@ -0,0 +1,4 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +const code = `import "https://example.com/some/file.ts";`; +const blob = new Blob([code]); +await import(URL.createObjectURL(blob)); diff --git a/cli/tests/dynamic_import/permissions_blob_remote.ts.out b/cli/tests/dynamic_import/permissions_blob_remote.ts.out new file mode 100644 index 000000000..7992e0855 --- /dev/null +++ b/cli/tests/dynamic_import/permissions_blob_remote.ts.out @@ -0,0 +1,5 @@ +error: Uncaught (in promise) TypeError: Requires net access to "example.com", run again with the --allow-net flag + at blob:null/[WILDCARD]:1:0 +await import(URL.createObjectURL(blob)); +^ + at async file:///[WILDCARD]/cli/tests/dynamic_import/permissions_blob_remote.ts:4:1 diff --git a/cli/tests/dynamic_import/permissions_data_local.ts b/cli/tests/dynamic_import/permissions_data_local.ts new file mode 100644 index 000000000..04b3432eb --- /dev/null +++ b/cli/tests/dynamic_import/permissions_data_local.ts @@ -0,0 +1,3 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +const code = `import "file:///local_file.ts";`; +await import(`data:application/javascript;base64,${btoa(code)}`); diff --git a/cli/tests/dynamic_import/permissions_data_local.ts.out b/cli/tests/dynamic_import/permissions_data_local.ts.out new file mode 100644 index 000000000..0b3ac7779 --- /dev/null +++ b/cli/tests/dynamic_import/permissions_data_local.ts.out @@ -0,0 +1,5 @@ +error: Uncaught (in promise) TypeError: Requires read access to "/local_file.ts", run again with the --allow-read flag + at data:application/javascript;base64,aW1wb3J0ICJmaWxlOi8vL2xvY2FsX2ZpbGUudHMiOw==:1:0 +await import(`data:application/javascript;base64,${btoa(code)}`); +^ + at async file:///[WILDCARD]/cli/tests/dynamic_import/permissions_data_local.ts:3:1 diff --git a/cli/tests/dynamic_import/permissions_data_remote.ts b/cli/tests/dynamic_import/permissions_data_remote.ts new file mode 100644 index 000000000..b0a9540c3 --- /dev/null +++ b/cli/tests/dynamic_import/permissions_data_remote.ts @@ -0,0 +1,3 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +const code = `import "https://example.com/some/file.ts";`; +await import(`data:application/javascript;base64,${btoa(code)}`); diff --git a/cli/tests/dynamic_import/permissions_data_remote.ts.out b/cli/tests/dynamic_import/permissions_data_remote.ts.out new file mode 100644 index 000000000..6bb137091 --- /dev/null +++ b/cli/tests/dynamic_import/permissions_data_remote.ts.out @@ -0,0 +1,5 @@ +error: Uncaught (in promise) TypeError: Requires net access to "example.com", run again with the --allow-net flag + at data:application/javascript;base64,aW1wb3J0ICJodHRwczovL2V4YW1wbGUuY29tL3NvbWUvZmlsZS50cyI7:1:0 +await import(`data:application/javascript;base64,${btoa(code)}`); +^ + at async file:///[WILDCARD]/cli/tests/dynamic_import/permissions_data_remote.ts:3:1 diff --git a/cli/tests/dynamic_import/permissions_remote_remote.ts b/cli/tests/dynamic_import/permissions_remote_remote.ts new file mode 100644 index 000000000..99de3f46f --- /dev/null +++ b/cli/tests/dynamic_import/permissions_remote_remote.ts @@ -0,0 +1,3 @@ +await import( + "http://localhost:4545/cli/tests/dynamic_import/static_remote.ts" +); diff --git a/cli/tests/dynamic_import/permissions_remote_remote.ts.out b/cli/tests/dynamic_import/permissions_remote_remote.ts.out new file mode 100644 index 000000000..ae8113899 --- /dev/null +++ b/cli/tests/dynamic_import/permissions_remote_remote.ts.out @@ -0,0 +1,5 @@ +error: Uncaught (in promise) TypeError: Requires net access to "example.com", run again with the --allow-net flag + at http://localhost:4545/cli/tests/dynamic_import/static_remote.ts:2:0 +await import( +^ + at async file:///[WILDCARD]/cli/tests/dynamic_import/permissions_remote_remote.ts:1:1 diff --git a/cli/tests/dynamic_import/static_remote.ts b/cli/tests/dynamic_import/static_remote.ts new file mode 100644 index 000000000..2d6e820fd --- /dev/null +++ b/cli/tests/dynamic_import/static_remote.ts @@ -0,0 +1,2 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +import "https://example.com/some/file.ts"; diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index fe40e243b..19a1a8952 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -3096,6 +3096,41 @@ console.log("finish"); exit_code: 1, }); + itest!(dynamic_import_permissions_remote_remote { + args: "run --quiet --reload --allow-net=localhost:4545 dynamic_import/permissions_remote_remote.ts", + output: "dynamic_import/permissions_remote_remote.ts.out", + http_server: true, + exit_code: 1, + }); + + itest!(dynamic_import_permissions_data_remote { + args: "run --quiet --reload --allow-net=localhost:4545 dynamic_import/permissions_data_remote.ts", + output: "dynamic_import/permissions_data_remote.ts.out", + http_server: true, + exit_code: 1, + }); + + itest!(dynamic_import_permissions_blob_remote { + args: "run --quiet --reload --allow-net=localhost:4545 dynamic_import/permissions_blob_remote.ts", + output: "dynamic_import/permissions_blob_remote.ts.out", + http_server: true, + exit_code: 1, + }); + + itest!(dynamic_import_permissions_data_local { + args: "run --quiet --reload --allow-net=localhost:4545 dynamic_import/permissions_data_local.ts", + output: "dynamic_import/permissions_data_local.ts.out", + http_server: true, + exit_code: 1, + }); + + itest!(dynamic_import_permissions_blob_local { + args: "run --quiet --reload --allow-net=localhost:4545 dynamic_import/permissions_blob_local.ts", + output: "dynamic_import/permissions_blob_local.ts.out", + http_server: true, + exit_code: 1, + }); + itest!(js_import_detect { args: "run --quiet --reload js_import_detect.ts", output: "js_import_detect.ts.out", @@ -3466,6 +3501,48 @@ console.log("finish"); exit_code: 1, }); + itest!(worker_permissions_remote_remote { + args: "run --quiet --reload --allow-net=localhost:4545 workers/permissions_remote_remote.ts", + output: "workers/permissions_remote_remote.ts.out", + http_server: true, + exit_code: 1, + }); + + itest!(worker_permissions_dynamic_remote { + args: "run --quiet --reload --allow-net --unstable workers/permissions_dynamic_remote.ts", + output: "workers/permissions_dynamic_remote.ts.out", + http_server: true, + exit_code: 1, + }); + + itest!(worker_permissions_data_remote { + args: "run --quiet --reload --allow-net=localhost:4545 workers/permissions_data_remote.ts", + output: "workers/permissions_data_remote.ts.out", + http_server: true, + exit_code: 1, + }); + + itest!(worker_permissions_blob_remote { + args: "run --quiet --reload --allow-net=localhost:4545 workers/permissions_blob_remote.ts", + output: "workers/permissions_blob_remote.ts.out", + http_server: true, + exit_code: 1, + }); + + itest!(worker_permissions_data_local { + args: "run --quiet --reload --allow-net=localhost:4545 workers/permissions_data_local.ts", + output: "workers/permissions_data_local.ts.out", + http_server: true, + exit_code: 1, + }); + + itest!(worker_permissions_blob_local { + args: "run --quiet --reload --allow-net=localhost:4545 workers/permissions_blob_local.ts", + output: "workers/permissions_blob_local.ts.out", + http_server: true, + exit_code: 1, + }); + itest!(exit_error42 { exit_code: 42, args: "run --quiet --reload exit_error42.ts", @@ -3946,7 +4023,7 @@ console.log("finish"); }); itest!(import_blob_url_imports { - args: "run --quiet --reload import_blob_url_imports.ts", + args: "run --quiet --reload --allow-net=localhost:4545 import_blob_url_imports.ts", output: "import_blob_url_imports.ts.out", http_server: true, }); diff --git a/cli/tests/workers/dynamic_remote.ts b/cli/tests/workers/dynamic_remote.ts new file mode 100644 index 000000000..381c7f374 --- /dev/null +++ b/cli/tests/workers/dynamic_remote.ts @@ -0,0 +1,2 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +await import("https://example.com/some/file.ts"); diff --git a/cli/tests/workers/parent_read_check_granular_worker.js b/cli/tests/workers/parent_read_check_granular_worker.js index 474b8a61b..1391190cd 100644 --- a/cli/tests/workers/parent_read_check_granular_worker.js +++ b/cli/tests/workers/parent_read_check_granular_worker.js @@ -1,5 +1,3 @@ -import { fromFileUrl } from "../../../test_util/std/path/mod.ts"; - const worker = new Worker( new URL("./read_check_granular_worker.js", import.meta.url).href, { @@ -31,7 +29,7 @@ worker.onmessage = ({ data: childResponse }) => { onmessage = async ({ data }) => { const { state } = await Deno.permissions.query({ name: "read", - path: fromFileUrl(new URL(data.route, import.meta.url)), + path: data.path, }); messages[data.index] = state === "granted"; diff --git a/cli/tests/workers/permissions_blob_local.ts b/cli/tests/workers/permissions_blob_local.ts new file mode 100644 index 000000000..e75557912 --- /dev/null +++ b/cli/tests/workers/permissions_blob_local.ts @@ -0,0 +1,4 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +const code = `import "file:///local_file.ts";`; +const blob = new Blob([code]); +new Worker(URL.createObjectURL(blob), { type: "module" }); diff --git a/cli/tests/workers/permissions_blob_local.ts.out b/cli/tests/workers/permissions_blob_local.ts.out new file mode 100644 index 000000000..7ccb56e1d --- /dev/null +++ b/cli/tests/workers/permissions_blob_local.ts.out @@ -0,0 +1,4 @@ +error: Uncaught (in worker "") Requires read access to "/local_file.ts", run again with the --allow-read flag + at blob:null/[WILDCARD]:1:0 +error: Uncaught (in promise) Error: Unhandled error event reached main worker. + at Worker.#poll (deno:runtime/js/11_workers.js:246:23) diff --git a/cli/tests/workers/permissions_blob_remote.ts b/cli/tests/workers/permissions_blob_remote.ts new file mode 100644 index 000000000..4808bc57b --- /dev/null +++ b/cli/tests/workers/permissions_blob_remote.ts @@ -0,0 +1,4 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +const code = `import "https://example.com/some/file.ts";`; +const blob = new Blob([code]); +new Worker(URL.createObjectURL(blob), { type: "module" }); diff --git a/cli/tests/workers/permissions_blob_remote.ts.out b/cli/tests/workers/permissions_blob_remote.ts.out new file mode 100644 index 000000000..c89f7b41c --- /dev/null +++ b/cli/tests/workers/permissions_blob_remote.ts.out @@ -0,0 +1,4 @@ +error: Uncaught (in worker "") Requires net access to "example.com", run again with the --allow-net flag + at blob:null/[WILDCARD]:1:0 +error: Uncaught (in promise) Error: Unhandled error event reached main worker. + at Worker.#poll (deno:runtime/js/11_workers.js:246:23) diff --git a/cli/tests/workers/permissions_data_local.ts b/cli/tests/workers/permissions_data_local.ts new file mode 100644 index 000000000..938a76add --- /dev/null +++ b/cli/tests/workers/permissions_data_local.ts @@ -0,0 +1,5 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +const code = `import "file:///local_file.ts";`; +new Worker(`data:application/javascript;base64,${btoa(code)}`, { + type: "module", +}); diff --git a/cli/tests/workers/permissions_data_local.ts.out b/cli/tests/workers/permissions_data_local.ts.out new file mode 100644 index 000000000..e282bb5aa --- /dev/null +++ b/cli/tests/workers/permissions_data_local.ts.out @@ -0,0 +1,4 @@ +error: Uncaught (in worker "") Requires read access to "/local_file.ts", run again with the --allow-read flag + at data:application/javascript;base64,aW1wb3J0ICJmaWxlOi8vL2xvY2FsX2ZpbGUudHMiOw==:1:0 +error: Uncaught (in promise) Error: Unhandled error event reached main worker. + at Worker.#poll (deno:runtime/js/11_workers.js:246:23) diff --git a/cli/tests/workers/permissions_data_remote.ts b/cli/tests/workers/permissions_data_remote.ts new file mode 100644 index 000000000..b37bd661d --- /dev/null +++ b/cli/tests/workers/permissions_data_remote.ts @@ -0,0 +1,5 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +const code = `import "https://example.com/some/file.ts";`; +new Worker(`data:application/javascript;base64,${btoa(code)}`, { + type: "module", +}); diff --git a/cli/tests/workers/permissions_data_remote.ts.out b/cli/tests/workers/permissions_data_remote.ts.out new file mode 100644 index 000000000..2c4080672 --- /dev/null +++ b/cli/tests/workers/permissions_data_remote.ts.out @@ -0,0 +1,4 @@ +error: Uncaught (in worker "") Requires net access to "example.com", run again with the --allow-net flag + at data:application/javascript;base64,aW1wb3J0ICJodHRwczovL2V4YW1wbGUuY29tL3NvbWUvZmlsZS50cyI7:1:0 +error: Uncaught (in promise) Error: Unhandled error event reached main worker. + at Worker.#poll (deno:runtime/js/11_workers.js:246:23) diff --git a/cli/tests/workers/permissions_dynamic_remote.ts b/cli/tests/workers/permissions_dynamic_remote.ts new file mode 100644 index 000000000..a5d293e16 --- /dev/null +++ b/cli/tests/workers/permissions_dynamic_remote.ts @@ -0,0 +1,11 @@ +new Worker( + "http://localhost:4545/cli/tests/workers/dynamic_remote.ts", + { + type: "module", + deno: { + permissions: { + net: false, + }, + }, + }, +); diff --git a/cli/tests/workers/permissions_dynamic_remote.ts.out b/cli/tests/workers/permissions_dynamic_remote.ts.out new file mode 100644 index 000000000..3bfb16205 --- /dev/null +++ b/cli/tests/workers/permissions_dynamic_remote.ts.out @@ -0,0 +1,10 @@ +error: Uncaught (in worker "") (in promise) TypeError: Requires net access to "example.com", run again with the --allow-net flag +await import("https://example.com/some/file.ts"); +^ + at async http://localhost:4545/cli/tests/workers/dynamic_remote.ts:2:1 +error: Uncaught (in worker "") TypeError: Requires net access to "example.com", run again with the --allow-net flag +await import("https://example.com/some/file.ts"); +^ + at async http://localhost:4545/cli/tests/workers/dynamic_remote.ts:2:1 +error: Uncaught (in promise) Error: Unhandled error event reached main worker. + at Worker.#poll (deno:runtime/js/11_workers.js:246:23) diff --git a/cli/tests/workers/permissions_remote_remote.ts b/cli/tests/workers/permissions_remote_remote.ts new file mode 100644 index 000000000..b1f954a31 --- /dev/null +++ b/cli/tests/workers/permissions_remote_remote.ts @@ -0,0 +1,3 @@ +new Worker("http://localhost:4545/cli/tests/workers/static_remote.ts", { + type: "module", +}); diff --git a/cli/tests/workers/permissions_remote_remote.ts.out b/cli/tests/workers/permissions_remote_remote.ts.out new file mode 100644 index 000000000..714150a3a --- /dev/null +++ b/cli/tests/workers/permissions_remote_remote.ts.out @@ -0,0 +1,4 @@ +error: Uncaught (in worker "") Requires net access to "example.com", run again with the --allow-net flag + at http://localhost:4545/cli/tests/workers/static_remote.ts:2:0 +error: Uncaught (in promise) Error: Unhandled error event reached main worker. + at Worker.#poll (deno:runtime/js/11_workers.js:246:23) diff --git a/cli/tests/workers/read_check_granular_worker.js b/cli/tests/workers/read_check_granular_worker.js index d1a205391..25f2058b3 100644 --- a/cli/tests/workers/read_check_granular_worker.js +++ b/cli/tests/workers/read_check_granular_worker.js @@ -1,9 +1,7 @@ -import { fromFileUrl } from "../../../test_util/std/path/mod.ts"; - onmessage = async ({ data }) => { const { state } = await Deno.permissions.query({ name: "read", - path: fromFileUrl(new URL(data.route, import.meta.url)), + path: data.path, }); postMessage({ diff --git a/cli/tests/workers/static_remote.ts b/cli/tests/workers/static_remote.ts new file mode 100644 index 000000000..2d6e820fd --- /dev/null +++ b/cli/tests/workers/static_remote.ts @@ -0,0 +1,2 @@ +// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown. +import "https://example.com/some/file.ts"; diff --git a/cli/tests/workers/test.ts b/cli/tests/workers/test.ts index 41988d204..954737b3a 100644 --- a/cli/tests/workers/test.ts +++ b/cli/tests/workers/test.ts @@ -8,6 +8,7 @@ import { assertThrows, } from "../../../test_util/std/testing/asserts.ts"; import { deferred } from "../../../test_util/std/async/deferred.ts"; +import { fromFileUrl } from "../../../test_util/std/path/mod.ts"; Deno.test({ name: "worker terminate", @@ -476,8 +477,16 @@ Deno.test("Worker limit children permissions granularly", async function () { //Routes are relative to the spawned worker location const routes = [ - { permission: false, route: "read_check_granular_worker.js" }, - { permission: true, route: "read_check_worker.js" }, + { + permission: false, + path: fromFileUrl( + new URL("read_check_granular_worker.js", import.meta.url), + ), + }, + { + permission: true, + path: fromFileUrl(new URL("read_check_worker.js", import.meta.url)), + }, ]; let checked = 0; @@ -490,10 +499,10 @@ Deno.test("Worker limit children permissions granularly", async function () { } }; - routes.forEach(({ route }, index) => + routes.forEach(({ path }, index) => worker.postMessage({ index, - route, + path, }) ); @@ -553,12 +562,14 @@ Deno.test("Nested worker limit children permissions granularly", async function { childHasPermission: false, parentHasPermission: true, - route: "read_check_granular_worker.js", + path: fromFileUrl( + new URL("read_check_granular_worker.js", import.meta.url), + ), }, { childHasPermission: false, parentHasPermission: false, - route: "read_check_worker.js", + path: fromFileUrl(new URL("read_check_worker.js", import.meta.url)), }, ]; @@ -579,10 +590,10 @@ Deno.test("Nested worker limit children permissions granularly", async function }; // Index needed cause requests will be handled asynchronously - routes.forEach(({ route }, index) => + routes.forEach(({ path }, index) => worker.postMessage({ index, - route, + path, }) ); |