diff options
6 files changed, 47 insertions, 1 deletions
diff --git a/runtime/js/10_permissions.js b/runtime/js/10_permissions.js index ef3135868..831b6bf2a 100644 --- a/runtime/js/10_permissions.js +++ b/runtime/js/10_permissions.js @@ -269,7 +269,13 @@ function serializePermissions(permissions) { if (typeof permissions == "object" && permissions != null) { const serializedPermissions = { __proto__: null }; for ( - const key of new SafeArrayIterator(["read", "write", "run", "ffi"]) + const key of new SafeArrayIterator([ + "read", + "write", + "run", + "ffi", + "import", + ]) ) { if (ArrayIsArray(permissions[key])) { serializedPermissions[key] = ArrayPrototypeMap( diff --git a/tests/specs/permission/allow_import_worker/__test__.jsonc b/tests/specs/permission/allow_import_worker/__test__.jsonc new file mode 100644 index 000000000..21ac65303 --- /dev/null +++ b/tests/specs/permission/allow_import_worker/__test__.jsonc @@ -0,0 +1,13 @@ +{ + "tests": { + "allowed": { + "args": "run -A --unstable-worker-options --quiet main.ts", + "output": "1\n" + }, + "denied": { + "args": "run -A --unstable-worker-options --quiet main_denied.ts", + "output": "denied.out", + "exitCode": 1 + } + } +} diff --git a/tests/specs/permission/allow_import_worker/denied.out b/tests/specs/permission/allow_import_worker/denied.out new file mode 100644 index 000000000..6e4dcaee0 --- /dev/null +++ b/tests/specs/permission/allow_import_worker/denied.out @@ -0,0 +1,7 @@ +error: Uncaught (in worker "") (in promise) TypeError: JSR package manifest for '@std/assert' failed to load. Requires import access to "127.0.0.1:4250", run again with the --allow-import flag +await import(specifier); +^ + at async file:///[WILDLINE] +error: Uncaught (in promise) Error: Unhandled error in child worker. + at [WILDLINE] + at [WILDLINE]
\ No newline at end of file diff --git a/tests/specs/permission/allow_import_worker/main.ts b/tests/specs/permission/allow_import_worker/main.ts new file mode 100644 index 000000000..af65c4065 --- /dev/null +++ b/tests/specs/permission/allow_import_worker/main.ts @@ -0,0 +1,8 @@ +new Worker(import.meta.resolve("./worker.ts"), { + type: "module", + deno: { + permissions: { + import: ["127.0.0.1:4250"], + }, + }, +}); diff --git a/tests/specs/permission/allow_import_worker/main_denied.ts b/tests/specs/permission/allow_import_worker/main_denied.ts new file mode 100644 index 000000000..e0d5a1d45 --- /dev/null +++ b/tests/specs/permission/allow_import_worker/main_denied.ts @@ -0,0 +1,8 @@ +new Worker(import.meta.resolve("./worker.ts"), { + type: "module", + deno: { + permissions: { + import: [], + }, + }, +}); diff --git a/tests/specs/permission/allow_import_worker/worker.ts b/tests/specs/permission/allow_import_worker/worker.ts new file mode 100644 index 000000000..fd5757ba8 --- /dev/null +++ b/tests/specs/permission/allow_import_worker/worker.ts @@ -0,0 +1,4 @@ +const specifier = "jsr:@std/assert/assert"; +await import(specifier); +console.log(1); +close(); |