From 202e7fa6ad366ee56a6d070e94eaecb6dbc745bf Mon Sep 17 00:00:00 2001 From: Kitson Kelly Date: Thu, 9 Jul 2020 19:00:18 +1000 Subject: feat: move unstable Deno.permissions to navigator.permissions (#6244) --- cli/tests/unit/permissions_test.ts | 53 ++++++++++++++++++++++++-------------- cli/tests/unit/test_util.ts | 2 +- cli/tests/unit/unit_test_runner.ts | 2 +- 3 files changed, 35 insertions(+), 22 deletions(-) (limited to 'cli/tests/unit') diff --git a/cli/tests/unit/permissions_test.ts b/cli/tests/unit/permissions_test.ts index 7528768a1..0de6a774b 100644 --- a/cli/tests/unit/permissions_test.ts +++ b/cli/tests/unit/permissions_test.ts @@ -1,27 +1,40 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -import { unitTest, assert } from "./test_util.ts"; + +import { unitTest, assert, assertThrowsAsync } from "./test_util.ts"; unitTest(async function permissionInvalidName(): Promise { - let thrown = false; - try { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - await Deno.permissions.query({ name: "foo" as any }); - } catch (e) { - thrown = true; - assert(e instanceof Error); - } finally { - assert(thrown); - } + await assertThrowsAsync(async () => { + // @ts-expect-error name should not accept "foo" + await navigator.permissions.query({ name: "foo" }); + }, TypeError); }); unitTest(async function permissionNetInvalidUrl(): Promise { - let thrown = false; - try { - await Deno.permissions.query({ name: "net", url: ":" }); - } catch (e) { - thrown = true; - assert(e instanceof URIError); - } finally { - assert(thrown); - } + await assertThrowsAsync(async () => { + await navigator.permissions.query({ name: "net", url: ":" }); + }, URIError); +}); + +unitTest(async function permissionQueryReturnsEventTarget(): Promise { + const status = await navigator.permissions.query({ 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 === (await navigator.permissions.query({ name: "hrtime" }))); +}); + +unitTest(async function permissionQueryForReadReturnsSameStatus() { + const status1 = await navigator.permissions.query({ + name: "read", + path: ".", + }); + const status2 = await navigator.permissions.query({ + name: "read", + path: ".", + }); + assert(status1 === status2); }); diff --git a/cli/tests/unit/test_util.ts b/cli/tests/unit/test_util.ts index 25da7a638..dd6c858d2 100644 --- a/cli/tests/unit/test_util.ts +++ b/cli/tests/unit/test_util.ts @@ -42,7 +42,7 @@ export function fmtPerms(perms: Permissions): string { } const isGranted = async (name: Deno.PermissionName): Promise => - (await Deno.permissions.query({ name })).state === "granted"; + (await navigator.permissions.query({ name })).state === "granted"; export async function getProcessPermissions(): Promise { return { diff --git a/cli/tests/unit/unit_test_runner.ts b/cli/tests/unit/unit_test_runner.ts index b2e872200..c7c494278 100755 --- a/cli/tests/unit/unit_test_runner.ts +++ b/cli/tests/unit/unit_test_runner.ts @@ -49,7 +49,7 @@ async function dropWorkerPermissions( }); for (const perm of permsToDrop) { - await Deno.permissions.revoke({ name: perm }); + await navigator.permissions.revoke({ name: perm }); } } -- cgit v1.2.3