summaryrefslogtreecommitdiff
path: root/js/files_test.ts
diff options
context:
space:
mode:
authorDmitry Sharshakov <sh7dm@outlook.com>2019-02-08 23:59:38 +0300
committerRyan Dahl <ry@tinyclouds.org>2019-02-08 15:59:38 -0500
commit9ab03389f047e5520c184b9fce4cd5fb2e4804bd (patch)
treec1b3295aa6788595e4b73d28aeba0b8fdc8f3205 /js/files_test.ts
parent3abaf9edb6877c328402b94fa0bcb6a9e0bbe86d (diff)
Add --allow-read (#1689)
Co-authored-by: Greg Altman <g.s.altman@gmail.com>
Diffstat (limited to 'js/files_test.ts')
-rw-r--r--js/files_test.ts40
1 files changed, 34 insertions, 6 deletions
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";