From 9ab03389f047e5520c184b9fce4cd5fb2e4804bd Mon Sep 17 00:00:00 2001 From: Dmitry Sharshakov Date: Fri, 8 Feb 2019 23:59:38 +0300 Subject: Add --allow-read (#1689) Co-authored-by: Greg Altman --- js/files_test.ts | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) (limited to 'js/files_test.ts') diff --git a/js/files_test.ts b/js/files_test.ts index 9014e7b83..a4d8a064a 100644 --- a/js/files_test.ts +++ b/js/files_test.ts @@ -8,7 +8,7 @@ test(function filesStdioFileDescriptors() { assertEqual(deno.stderr.rid, 2); }); -test(async function filesCopyToStdout() { +testPerm({ read: true }, async function filesCopyToStdout() { const filename = "package.json"; const file = await deno.open(filename); assert(file.rid > 2); @@ -18,7 +18,7 @@ test(async function filesCopyToStdout() { console.log("bytes written", bytesWritten); }); -test(async function filesToAsyncIterator() { +testPerm({ read: true }, async function filesToAsyncIterator() { const filename = "tests/hello.txt"; const file = await deno.open(filename); @@ -32,7 +32,7 @@ test(async function filesToAsyncIterator() { testPerm({ write: false }, async function writePermFailure() { const filename = "tests/hello.txt"; - const writeModes: deno.OpenMode[] = ["r+", "w", "w+", "a", "a+", "x", "x+"]; + const writeModes: deno.OpenMode[] = ["w", "a", "x"]; for (const mode of writeModes) { let err; try { @@ -46,7 +46,35 @@ testPerm({ write: false }, async function writePermFailure() { } }); -testPerm({ write: true }, async function createFile() { +testPerm({ read: false }, async function readPermFailure() { + let caughtError = false; + try { + await deno.open("package.json", "r"); + } catch (e) { + caughtError = true; + assertEqual(e.kind, deno.ErrorKind.PermissionDenied); + assertEqual(e.name, "PermissionDenied"); + } + assert(caughtError); +}); + +testPerm({ write: false, read: false }, async function readWritePermFailure() { + const filename = "tests/hello.txt"; + const writeModes: deno.OpenMode[] = ["r+", "w+", "a+", "x+"]; + for (const mode of writeModes) { + let err; + try { + await deno.open(filename, mode); + } catch (e) { + err = e; + } + assert(!!err); + assertEqual(err.kind, deno.ErrorKind.PermissionDenied); + assertEqual(err.name, "PermissionDenied"); + } +}); + +testPerm({ read: true, write: true }, async function createFile() { const tempDir = await deno.makeTempDir(); const filename = tempDir + "/test.txt"; const f = await deno.open(filename, "w"); @@ -64,7 +92,7 @@ testPerm({ write: true }, async function createFile() { await deno.remove(tempDir, { recursive: true }); }); -testPerm({ write: true }, async function openModeWrite() { +testPerm({ read: true, write: true }, async function openModeWrite() { const tempDir = deno.makeTempDirSync(); const encoder = new TextEncoder(); const filename = tempDir + "hello.txt"; @@ -98,7 +126,7 @@ testPerm({ write: true }, async function openModeWrite() { await deno.remove(tempDir, { recursive: true }); }); -testPerm({ write: true }, async function openModeWriteRead() { +testPerm({ read: true, write: true }, async function openModeWriteRead() { const tempDir = deno.makeTempDirSync(); const encoder = new TextEncoder(); const filename = tempDir + "hello.txt"; -- cgit v1.2.3