summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/js/10_permissions.js8
-rw-r--r--tests/specs/permission/allow_import_worker/__test__.jsonc13
-rw-r--r--tests/specs/permission/allow_import_worker/denied.out7
-rw-r--r--tests/specs/permission/allow_import_worker/main.ts8
-rw-r--r--tests/specs/permission/allow_import_worker/main_denied.ts8
-rw-r--r--tests/specs/permission/allow_import_worker/worker.ts4
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();