| // Flags: --permission --allow-fs-read=* --allow-child-process |
| 'use strict'; |
| |
| const common = require('../common'); |
| const { isMainThread } = require('worker_threads'); |
| |
| if (!isMainThread) { |
| common.skip('This test only works on a main thread'); |
| } |
| |
| if (!common.hasCrypto) { |
| common.skip('no crypto'); |
| } |
| |
| const assert = require('assert'); |
| const path = require('path'); |
| const { spawnSync } = require('child_process'); |
| const fixtures = require('../common/fixtures'); |
| |
| const blockedFolder = fixtures.path('permission', 'deny', 'protected-folder'); |
| const blockedFile = fixtures.path('permission', 'deny', 'protected-file.md'); |
| const relativeProtectedFile = './test/fixtures/permission/deny/protected-file.md'; |
| const relativeProtectedFolder = './test/fixtures/permission/deny/protected-folder'; |
| |
| const commonPath = path.join(__filename, '../../common'); |
| const regularFile = fixtures.path('permission', 'deny', 'regular-file.md'); |
| const file = fixtures.path('permission', 'fs-write.js'); |
| |
| { |
| const { status, stderr } = spawnSync( |
| process.execPath, |
| [ |
| '--permission', |
| '--allow-fs-read=*', |
| `--allow-fs-write=${regularFile}`, `--allow-fs-write=${commonPath}`, |
| file, |
| ], |
| { |
| env: { |
| ...process.env, |
| BLOCKEDFILE: blockedFile, |
| BLOCKEDFOLDER: blockedFolder, |
| RELATIVEBLOCKEDFOLDER: relativeProtectedFolder, |
| RELATIVEBLOCKEDFILE: relativeProtectedFile, |
| ALLOWEDFILE: regularFile, |
| ALLOWEDFOLDER: commonPath, |
| }, |
| } |
| ); |
| assert.strictEqual(status, 0, stderr.toString()); |
| } |