| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- const assert = require('node:assert/strict')
- const { describe, test, mock } = require('node:test')
- const launchEditor = require('./index.js')
- const UNC_ERROR = 'UNC paths are not supported on Windows to avoid security issues.'
- describe('launchEditor UNC path guard', () => {
- if (process.platform === 'win32') {
- test('rejects UNC paths on Windows via the error callback', () => {
- const onError = mock.fn()
- launchEditor('\\\\server\\share\\file.js', 'vim', onError)
- assert.equal(onError.mock.callCount(), 1)
- const [fileName, message] = onError.mock.calls[0].arguments
- assert.equal(fileName, '\\\\server\\share\\file.js')
- assert.ok(message.includes(UNC_ERROR))
- })
- test('strips the position suffix before reporting the rejected UNC path', () => {
- const onError = mock.fn()
- launchEditor('\\\\server\\share\\file.js:10:5', 'vim', onError)
- assert.equal(onError.mock.callCount(), 1)
- const [fileName, message] = onError.mock.calls[0].arguments
- assert.equal(fileName, '\\\\server\\share\\file.js')
- assert.ok(message.includes(UNC_ERROR))
- })
- test('does not treat a normal absolute Windows path as UNC', () => {
- const onError = mock.fn()
- // Non-existent file: without the UNC guard firing, launchEditor returns
- // silently at the `fs.existsSync` check without invoking the callback.
- launchEditor('C:\\Users\\me\\does-not-exist-xyz.js', 'vim', onError)
- assert.equal(onError.mock.callCount(), 0)
- })
- } else {
- test('does not apply the UNC guard on non-Windows platforms', () => {
- const onError = mock.fn()
- launchEditor('\\\\server\\share\\does-not-exist-xyz.js', 'vim', onError)
- assert.equal(onError.mock.callCount(), 0)
- })
- }
- })
|