diff options
Diffstat (limited to 'cli/tests/unit/permissions_test.ts')
-rw-r--r-- | cli/tests/unit/permissions_test.ts | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/cli/tests/unit/permissions_test.ts b/cli/tests/unit/permissions_test.ts index 193e60689..f001a0e4e 100644 --- a/cli/tests/unit/permissions_test.ts +++ b/cli/tests/unit/permissions_test.ts @@ -13,12 +13,25 @@ Deno.test(async function permissionInvalidName() { }, TypeError); }); +Deno.test(function permissionInvalidNameSync() { + assertThrows(() => { + // deno-lint-ignore no-explicit-any + Deno.permissions.querySync({ name: "foo" as any }); + }, TypeError); +}); + Deno.test(async function permissionNetInvalidHost() { await assertRejects(async () => { await Deno.permissions.query({ name: "net", host: ":" }); }, URIError); }); +Deno.test(function permissionNetInvalidHostSync() { + assertThrows(() => { + Deno.permissions.querySync({ name: "net", host: ":" }); + }, URIError); +}); + Deno.test(async function permissionSysValidKind() { await Deno.permissions.query({ name: "sys", kind: "loadavg" }); await Deno.permissions.query({ name: "sys", kind: "osRelease" }); @@ -30,6 +43,16 @@ Deno.test(async function permissionSysValidKind() { await Deno.permissions.query({ name: "sys", kind: "gid" }); }); +Deno.test(function permissionSysValidKindSync() { + Deno.permissions.querySync({ name: "sys", kind: "loadavg" }); + Deno.permissions.querySync({ name: "sys", kind: "osRelease" }); + Deno.permissions.querySync({ name: "sys", kind: "networkInterfaces" }); + Deno.permissions.querySync({ name: "sys", kind: "systemMemoryInfo" }); + Deno.permissions.querySync({ name: "sys", kind: "hostname" }); + Deno.permissions.querySync({ name: "sys", kind: "uid" }); + Deno.permissions.querySync({ name: "sys", kind: "gid" }); +}); + Deno.test(async function permissionSysInvalidKind() { await assertRejects(async () => { // deno-lint-ignore no-explicit-any @@ -37,6 +60,13 @@ Deno.test(async function permissionSysInvalidKind() { }, TypeError); }); +Deno.test(function permissionSysInvalidKindSync() { + assertThrows(() => { + // deno-lint-ignore no-explicit-any + Deno.permissions.querySync({ name: "sys", kind: "abc" as any }); + }, TypeError); +}); + Deno.test(async function permissionQueryReturnsEventTarget() { const status = await Deno.permissions.query({ name: "hrtime" }); assert(["granted", "denied", "prompt"].includes(status.state)); @@ -49,6 +79,18 @@ Deno.test(async function permissionQueryReturnsEventTarget() { assert(status === (await Deno.permissions.query({ name: "hrtime" }))); }); +Deno.test(function permissionQueryReturnsEventTargetSync() { + const status = Deno.permissions.querySync({ name: "hrtime" }); + assert(["granted", "denied", "prompt"].includes(status.state)); + let called = false; + status.addEventListener("change", () => { + called = true; + }); + status.dispatchEvent(new Event("change")); + assert(called); + assert(status === Deno.permissions.querySync({ name: "hrtime" })); +}); + Deno.test(async function permissionQueryForReadReturnsSameStatus() { const status1 = await Deno.permissions.query({ name: "read", @@ -61,6 +103,18 @@ Deno.test(async function permissionQueryForReadReturnsSameStatus() { assert(status1 === status2); }); +Deno.test(function permissionQueryForReadReturnsSameStatusSync() { + const status1 = Deno.permissions.querySync({ + name: "read", + path: ".", + }); + const status2 = Deno.permissions.querySync({ + name: "read", + path: ".", + }); + assert(status1 === status2); +}); + Deno.test(function permissionsIllegalConstructor() { assertThrows(() => new Deno.Permissions(), TypeError, "Illegal constructor."); assertEquals(Deno.Permissions.length, 0); @@ -85,6 +139,21 @@ Deno.test(async function permissionURL() { await Deno.permissions.query({ name: "run", command: path }); }); +Deno.test(function permissionURLSync() { + Deno.permissions.querySync({ + name: "read", + path: new URL(".", import.meta.url), + }); + Deno.permissions.querySync({ + name: "write", + path: new URL(".", import.meta.url), + }); + Deno.permissions.querySync({ + name: "run", + command: new URL(".", import.meta.url), + }); +}); + Deno.test(async function permissionDescriptorValidation() { for (const value of [undefined, null, {}]) { for (const method of ["query", "request", "revoke"]) { @@ -100,6 +169,21 @@ Deno.test(async function permissionDescriptorValidation() { } }); +Deno.test(function permissionDescriptorValidationSync() { + for (const value of [undefined, null, {}]) { + for (const method of ["querySync", "revokeSync", "requestSync"]) { + assertThrows( + () => { + // deno-lint-ignore no-explicit-any + (Deno.permissions as any)[method](value as any); + }, + TypeError, + '"undefined" is not a valid permission name', + ); + } + } +}); + // Regression test for https://github.com/denoland/deno/issues/15894. Deno.test(async function permissionStatusObjectsNotEqual() { assert( @@ -107,3 +191,10 @@ Deno.test(async function permissionStatusObjectsNotEqual() { await Deno.permissions.query({ name: "env", variable: "B" }), ); }); + +Deno.test(function permissionStatusObjectsNotEqualSync() { + assert( + Deno.permissions.querySync({ name: "env", variable: "A" }) != + Deno.permissions.querySync({ name: "env", variable: "B" }), + ); +}); |